Skip to content

USB device listing (libusb) ​

This sample lists attached USB devices using libusb bindings. Adapted from the archived GNOME Wiki page Projects/Vala/USBSample.

vala
using LibUSB;

int main () {
    Context context;
    Device[] devices;

    Context.init (out context);
    devices = context.get_device_list ();

    stdout.printf ("\n USB device list\n---------------\n");

    int i = 0;
    while (devices[i] != null) {
        var dev = devices[i];

        stdout.printf ("\n Bus number   : %04x\n", dev.get_bus_number ());
        stdout.printf (" Address      : %04x\n", dev.get_device_address ());

        DeviceDescriptor desc = DeviceDescriptor (dev);
        stdout.printf (" Vendor ID    : %04x\n", desc.idVendor);
        stdout.printf (" Product ID   : %04x\n", desc.idProduct);
        stdout.printf ("\n");
        i++;
    }

    return 0;
}

Compile and run ​

shell
valac --pkg libusb-1.0 usb-sample.vala
./usb-sample