/dev/usb/usb

From WiiBrew
< /dev‎ | usb
Jump to navigation Jump to search

This device is internally used by several USB resource managers. Not much information is known at this time.

It is implemented by a module (USB) in IOS58 that runs under UID 17 (PID_USB). This resource manager can only be opened from that UID. It appears to be able to generically address devices via /dev/usb/oh0 and /dev/usb/ehc. It is accessed via several ioctls.

Because all of the USB related modules run under the same UID, they all share the same file descriptor table. This allows ioctl 1 (GetDeviceList) to return FDs to /dev/usb/ehc and /dev/usb/oh0. These are directly used by VEN, HID, etc. when submitting transfers, without going through /dev/usb/usb.

New IOS USB modules.svg

Ioctls

Ioctl Parameters (inbuf_len / iobuf_len) Function Notes
0 0 / 4 GetVersion puts "0x10001" into the io_buf
1 0 / > =0x300 GetDeviceChange
2 8 / >= 8 GetDeviceInfo
4 8 / 0 SuspendResume calls ? ioctl 4 and/or 6?. inbuf: u32 at offset 0, u8 at offset 4