This directory will contain everything you will need to get USB up and running on QEMU. We took the decision to implement OHCI controllers as these are supported on lots of platforms. The OHCI 1.0 specifications are included here in hcir1_0a.pdf, and the USB 1.1 specification is included in usb11.pdf For now only the OHCI frontend is in place. It can emulate any OHCI USB host controller, by simply passing the DID/VID you want to it. You can also place it anywhere in the PCI topolgy you wish, for example as a subfunction of a PCI controller, if that is what is expected. Thankfully however all OSs seem to just look at the PCI class register in the PCI config space, where the device will identify itself as OHCI compliant USB controller. usb_ohci_init("Apple KeyLargo/Intrepid", 0x106b, 0x003f, pci_bus, -1); The backend for device drivers is not yet started, but the interface will be similar to the PCI interface for consistencies sake. Currently the code gets as far as connecting devices and reading the SET_ADDRESS setup packet. TODO: o Implement USB device API and handle USB standard device requests o Support control and bulk transfers o Support isochronous and interrupt transers o Service lists in the proper ratios and perform frame time check o Optimise code (reduce timer usage) o Implement all interrupts and error modes o Make power management code consistent o Dynamically add new hubs as devices are added