/dev/usb/hid (v5)
This article is a stub. You can help WiiBrew by expanding it. |
/dev/usb/hid is used to interact with USB HIDs in IOS57, 58 and 59.
It is very similar to /dev/usb/ven and other v5 interfaces. Some ioctl handlers are identical to USB_VEN. Both rely on /dev/usb/usb for most actions.
Handles
Handles for USB_HID function exactly the same as for USB_VEN.
Transfers
Compared to VEN, HID has an additional member at the end of the device structure that seems to be used for keeping track of ongoing transfers.
There can be up to 64 ongoing transfers (in total, for all devices) at the same time. IPC_ERROR_MAX (-5) will be returned by the transfer submission ioctlvs (0x12 and 0x13) if the limit is exceeded.
When a device is unplugged, all of the associated transfer requests are replied to with return code USB_ECANCELED (-7022).
Ioctls
Ioctl | Name | Notes |
---|---|---|
0 | GetVersion | Identical to VEN |
1 | GetDeviceChange | Identical to VEN |
2 | Shutdown | Identical to VEN |
3 | GetDeviceInfo | Similar to VEN, but with different offsets |
4 | ? | Identical to VEN |
5 | ? | Identical to VEN |
6 | AttachFinish | Identical to VEN |
7 | SetAlternateSetting | Not available in HID |
8 | ? | Does not exist in HID |
0x10 | SuspendResume | Identical to VEN |
0x11 | CancelEndpoint | Calls /dev/usb/usb ioctl 0x10
Depending on the endpoint ( |
0x12 (ioctlv) | CtrlTransfer (?) | Submit a control transfer.
Appears to use the Starlet timer (HW_TIMER) and possibly rate limit requests [check] |
0x13 (ioctlv) | IntrTransfer (?) | Submit an interrupt transfer.
Appears to use the Starlet timer (HW_TIMER) and possibly rate limit requests [check] |
0x14 (ioctlv) | IsoTransfer | Not available in HID |
0x15 (ioctlv) | BulkTransfer | Not available in HID |