= USB support = Basic support for USB 1.1 was added to HelenOS in [changeset:mainline,1006 mainline:1006] by merging code of student software project at MFF UK. The original homepage of the project is at http://helenos-usb.sourceforge.net/. == Supported devices == === Host controllers === * UHCI * QEMU 0.14 (previous versions have rather serious bugs in the chip implementation) * real hardware: all tested machines (IA-32, AMD-64) worked (TODO: exact product ids) * OHCI * !VirtualBox (no known problem) * real hardware: ??? * EHCI * only stub implementing hand off routine * works well in !VirtualBox with USB 2.0 support enabled === Functions (endpoint devices) === * hubs * HID * base keyboard (101 PC) - full support * mouse - cursor movement, clicking, wheel transformed into arrows (keys) presses * multimedia buttons (!Play/Pause, E-mail, Save etc.) - printed into log * mass storage * only stub querying device for vendor and product name == Various links == Links below may be duplicates of links located on [wiki:DeveloperDocs developers' documentation page]. === Core USB and host controller specifications === * [http://esd.cs.ucr.edu/webres/usb11.pdf USB 1.1 Specification] * [ftp://ftp.compaq.com/pub/supportinformation/papers/hcir1_0a.pdf OHCI Specification] (Open Host Controller Interface, Release 1.0a) * [http://download.intel.com/technology/usb/UHCI11D.pdf UHCI Design Guide] (Universal Host Controller Interface, Revision 1.1) * [http://www.intel.com/technology/usb/download/ehci-r10.pdf EHCI Specification] (Enhanced Host Controller Interface, Revision 1.0) === Miscellaneous (USB related) === * [http://www.linux-usb.org/usb-ids.html The USB ID Repository] (Linux) * Axelson, Jan: USB Complete (Everything You Need to Develop Custom USB Peripherals) * [http://www.lvr.com/usbc.htm Homepage of the book] * [http://books.google.cz/books?id=OSnynlQrvVcC&lpg=PP1&ots=XaSaVJFJ9g&dq=%22usb%20complete%22%20axelson&pg=PP1#v=onepage&q&f=false On-line at Google books], PDF can be downloaded from [http://gemini.udistrital.edu.co/comunidad/grupos/teletecno/Documentacion/axelson%20-%20usb%20complete%203ed.pdf here] or [http://www.mediafire.com/?dzn3jrjz4yz here] (all links points to 3rd edition which describes USB 2.0 as well) * [http://www.beyondlogic.org/usbnutshell/ USB in a NutShell] * [http://www.usbmadesimple.co.uk/index.html USB Made Simple] * [http://www.usblyzer.com/ USBlyzer (USB Protocol Analyzer)] - not tried, for Windows, free trial for 33 days === HID === * [http://www.usb.org/developers/hidpage/ HID page at USB.org] * [http://www.usb.org/developers/devclass_docs/HID1_11.pdf HID 1.11] * [http://www.usb.org/developers/devclass_docs/Hut1_12.pdf HID Usage tables 1.12] * [http://lists.freebsd.org/pipermail/freebsd-usb/2008-May/005002.html HID parser in Python] ([http://people.freebsd.org/~chuckr/code/python/uhidParser-0.2.tbz direct link to archive]) * [http://libhid.alioth.debian.org/ libhid - a user-space USB HID access library written in C] * [http://www.slashdev.ca/2010/05/08/get-usb-report-descriptor-with-linux/ Getting past the **UNAVAILABLE** for HID report descriptors in Linux] === HelenOS === * Trochtová, Lenka: Device driver framework (master thesis) * [http://www.helenos.org/doc/theses/lt-thesis.pdf Download PDF] * [http://docs.google.com/viewer?url=http%3A%2F%2Fwww.helenos.org%2Fdoc%2Ftheses%2Flt-thesis.pdf On-line through Google viewer] * [http://vhotspur.blogspot.com/2011/02/adding-helenos-to-existing-grub.html Adding HelenOS to GRUB on your real machine] * [https://sites.google.com/site/vhotspur/helenos_add_to_grub_v2.sh?attredirects=0&d=1 The script (direct link)] === Localization, Unicode, UTF & co. === * [http://msdn.microsoft.com/en-us/library/bb165625%28v=vs.80%29.aspx LangId values as defined by Microsoft] * [http://en.wikipedia.org/wiki/Unicode Unicode overview (Wikipedia)] * [http://en.wikipedia.org/wiki/UTF-16 UTF-16 and UCS-2 (Wikipedia)] (these are used by string descriptors)