There are three issues I would like to discuss. Firstly, I propose making public the usb_raw.h header. We can make ioctls to usb file descriptors from userland but we need this header, and this is not present in the include headers. This is used by USBKit, and also by the Libusb port I have been working on. Secondly, there is no way to get the device address assigned to a USB device, in userland. To add, every bus manager (EHCI, UHCI, ..) supports upto 127 unique devices, each of which is given an address from 1 to 127 during device initialisation[1]. This is to uniquely identify every device connected to a host-controller/bus-manager. Libusb also requires this device address, so maybe we can add an ioctl to usb_raw, for getting this address in userland. Thirdly, we have no way to get the complete configuration descriptor for any usb device. B_USB_RAW_COMMAND_GET_DESCRIPTOR truncates the descriptor to bLength field of the descriptor, while the total length for a configuration descriptor is defined in wTotalLength [2][3]. Thanks. Akshay Jaggi [1] https://github.com/haiku/haiku/blob/master/src/add-ons/kernel/bus_managers/usb/BusManager.cpp#L121 [2] https://github.com/haiku/haiku/blob/master/src/add-ons/kernel/drivers/bus/usb/usb_raw.cpp#L561 [3] http://www.beyondlogic.org/usbnutshell/usb5.shtml