[haiku-development] Issues in the USB Stack

  • From: Akshay Jaggi <akshay1994.leo@xxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Tue, 5 Aug 2014 20:38:14 +0530

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

Other related posts:

  • » [haiku-development] Issues in the USB Stack - Akshay Jaggi