Bochs: Supported USB Devices and Guests
Mouse |
Win95#10 |
Win98se |
Win2k |
WinXP |
Win7 |
Win8 |
Win10 |
TinyCore#16 |
Slitaz#18 |
Other |
UHCI |
11 |
6 |
4 & #5 |
|
|
|
|
|
|
|
OHCI |
11 |
|
|
|
|
|
|
|
|
EHCI |
high#1 |
3 |
3 |
3 |
14 |
6 & #14 |
6 & #14 |
6 & #14 |
|
|
low/full |
3 |
3 |
3 |
|
|
|
5 |
|
|
xHCI |
3 |
3 |
3 |
4 |
4 |
|
|
17 |
|
Keyboard |
Win95#10 |
Win98se |
Win2k |
WinXP |
Win7 |
Win8 |
Win10 |
TinyCore |
Slitaz |
Other |
UHCI |
11 |
6 |
6 |
|
|
|
|
|
|
|
OHCI |
11 |
|
|
|
|
|
|
|
|
EHCI |
high#1 |
3 |
3 |
3 |
14 |
6 & #14 |
6 & #14 |
6 & #14 |
|
|
low/full |
3 |
3 |
3 |
|
|
|
|
|
|
xHCI |
3 |
3 |
3 |
4 |
4 |
|
|
17 |
|
Keypad |
Win95#10 |
Win98se |
Win2k |
WinXP |
Win7 |
Win8 |
Win10 |
TinyCore |
Slitaz |
Other |
UHCI |
11 |
6 |
6 |
|
|
|
|
|
|
|
OHCI |
11 |
|
|
|
|
|
|
|
|
EHCI |
high#1 |
3 |
3 |
3 |
14 |
6 & #14 |
6 & #14 |
6 & #14 |
|
|
low/full |
3 |
3 |
3 |
|
|
|
|
|
|
xHCI |
3 |
3 |
3 |
4 |
4 |
|
|
17 |
|
Tablet |
Win95#10 |
Win98se |
Win2k |
WinXP |
Win7 |
Win8 |
Win10 |
TinyCore |
Slitaz |
Other |
UHCI |
11 |
6 |
4 & #5 |
|
|
|
|
|
|
|
OHCI |
11 |
|
|
|
|
|
|
|
|
EHCI |
high#1 |
3 |
3 |
3 |
14 |
6 & #14 |
6 & #14 |
6 & #14 |
|
|
low/full |
3 |
3 |
3 |
|
|
|
5 |
|
|
xHCI |
3 |
3 |
3 |
4 |
4 |
|
|
17 |
|
Disk/CD-ROM |
Win95#10 |
Win98se |
Win2k |
WinXP |
Win7 |
Win8 |
Win10 |
TinyCore |
Slitaz |
Other |
UHCI |
|
|
|
|
|
|
|
|
|
|
OHCI |
13 |
|
|
|
|
|
|
|
|
EHCI |
high |
3 |
3 |
3 |
|
|
|
|
|
|
full |
3 |
3 |
3 |
9 |
|
|
|
|
|
xHCI |
3 |
3 |
3 |
4 |
4 |
|
|
17 |
19 |
Floppy |
Win95#10 |
Win98se |
Win2k |
WinXP |
Win7 |
Win8 |
Win10 |
TinyCore |
Slitaz |
Other |
UHCI |
6 |
|
|
|
|
|
|
|
|
|
OHCI |
13 |
|
|
|
|
|
|
|
|
EHCI |
high |
|
full |
3 |
3 |
3 |
9 |
|
|
15 |
|
|
xHCI |
3 |
3 |
3 |
4 |
4 |
|
|
17 |
19 |
Printer#3 |
Win95#10 |
Win98se |
Win2k |
WinXP |
Win7 |
Win8 |
Win10 |
TinyCore |
Slitaz |
Other |
UHCI |
4 |
|
|
|
|
|
|
|
|
|
OHCI |
13 |
|
|
|
|
|
|
|
|
EHCI |
high |
|
full |
3 |
3 |
3 |
9 |
|
|
|
|
|
xHCI |
3 |
3 |
3 |
4 |
4 |
|
|
17 |
|
Hub#6 |
Win95#10 |
Win98se |
Win2k |
WinXP |
Win7 |
Win8 |
Win10 |
TinyCore |
Slitaz |
Other |
UHCI |
12 |
|
8 |
|
|
|
|
|
|
|
OHCI |
13 |
|
|
|
|
|
|
|
|
EHCI |
high |
|
full |
3 |
3 |
3 |
9 |
|
|
|
|
|
xHCI |
3 |
3 |
3 |
4 |
4 |
|
|
17 |
|
Notes:
- Even though it is compliant to have a high-speed HID device, it is quite rare for such a device to be anything but low-speed. Some guests won't even try to use a high-speed HID device...
- This Device is not support on this speed.
- This controller is not supported under this Guest.
- Supported with external/manufacture driver.
- Function is sporadic. Needs a (Bochs?) fix.
- Set HANDLE_TOGGLE_CONTROL to zero in usb_common.h
- Note that all devices plugged into a hub must be used as low- or full-speed only.
- The Guest can see the Hub, but constantly resets the hub, seeing a down-stream device connection and disconnection each time. I do not know why. Something to investigate.
- Requires Service Pack 3 to be installed. i.e.: WinXP (Pro?) SP3. Earlier versions do not handoff the device correctly.
- Win95 must be at least version 4.00.095B and have the XUSBSUPP.ZIP file from here installed.
- Even with the XUSBSUPP in the previous note, HID is not supported on Win95.
- Must set USB_HUB_ALWAYS_REPORT = 1. The Win95 driver thinks that a NAK is an error. Also set USB_HUB_VERSION = 0x0100.
- The Win95 OHCI driver somehow finds an IN after the STATUS OUT in the Control Pipe and won't continue enumerating the device.
I don't know if this is an error in Bochs or in Win95's driver. I tend to think that there is something with my OHCI code in Bochs,
since the driver probably works under a real OHCI hardware and Win95, though I haven't checked for sure.
(* However, Win95 crashes at the same place under QEMU as it does in Bochs, so I am not going to put much more effort into it. *)
- Our EHCI doesn't perform as expected for this device/controller combination. Most likely Windows just doesn't handle high-speed HID devices. Linux does... :-)
- The drive will not show up in Explorer until you type 'B:' in the address bar.
- http://www.tinycorelinux.net/ v14.0
- "failed to load firmware renesas_usb_fw.mem". Noted here, here, and here. Seems to be a firmware version issue.
- https://www.slitaz.org/ v5.0 (uname -a returns v3.16.55. Is this the Linux kernel version?)
- This Guest (Linux kernel version unknown. See note above.) has all kinds of errors with the xHCI, from specifying a speed of 0 or 255, not accepting an 'address device' command correctly, and other issues. I don't know what the reasons are yet, most likely my code since Linux is a well known and used kernel. However, since my code works with the NEC supplied driver on Windows, I really question what is the reason. If the Linux kernel version really is 3.16.55, this might explain why, being an old version. I will investigate.
- Do you have a suggested Guest and can you confirm or deny support?
Misc notes:
- Windows 2000 and before don't like BMP files with a negative height value. A negative height value is allowed, and simply indicates that the data is stored "upside down" to the normal "upside down". Win2k and before will return an error about the file, making it look like the USB is not working.
- I feel it necassary to express again, that even though the specification states that an HID device may be high-speed, I don't believe there are any high-speed HID devices lying around and through my research. None of the Windows Guests shown above support a high-speed HID device. Linux however...
Compliance Tests
I use the following compliance test: USBTest v5.1 for all low-, full-, and high-speed devices. (Under WinXP)
I use the following compliance test: USB3CV v2.1.13.2 for all super-speed devices. (Under Win10)
Compliance |
Low-Speed |
Full-Speed |
High-Speed |
Super-Speed |
Mouse |
|
|
1 |
1 |
Keyboard |
|
|
1 |
1 |
Keypad |
|
|
1 |
1 |
Tablet |
|
|
1 |
1 |
Disk/CD-ROM |
1 |
|
|
|
Floppy |
1 |
|
1 |
1 |
Printer |
1 |
|
1 |
1 |
Hub |
1 |
2 |
1 |
1 |
Notes:
- Device does not work with this speed on Windows, which is the Host of the test.
- Per port only. Global compliance relies on the Host Controller to resume which isn't fully implemented yet.