Difference between revisions of "USB Stack"

From ReactOS Wiki
Jump to: navigation, search
(Update to link to new USB page)
m
Line 28: Line 28:
  
 
=== [[USB]] Mass Storage Support Status ===
 
=== [[USB]] Mass Storage Support Status ===
[[USB]] Mass Storage is implemented in [[USBSTOR]] driver and is fully working. Tested in WinXP + [[USBEHCI]] + [[USBSTOR]]. Mass storage support requires bulk and control transfers, which are implemented in [[USBEHCI]]].
+
[[USB]] Mass Storage is implemented in [[USBSTOR]] driver and is fully working. Tested in WinXP + [[EHCI|USBEHCI]] + [[USBSTOR]]. Mass storage support requires bulk and control transfers, which are implemented in [[EHCI|USBEHCI]]].
  
 
=== [[HID]] Status ===
 
=== [[HID]] Status ===
Line 40: Line 40:
  
 
=== What works and not ===
 
=== What works and not ===
* Mouse support has been tested in WinXP with ReactOS [[USBOHCI]] + [[HIDUSB]] + [[HIDCLASS]] + [[MOUHID]] + [[HIDPARSE]] and is working. The [[USB]] + [[HID]] stack also works in ReactOS.
+
* Mouse support has been tested in WinXP with ReactOS [[OHCI|USBOHCI]] + [[HIDUSB]] + [[HIDCLASS]] + [[MOUHID]] + [[HIDPARSE]] and is working. The [[USB]] + [[HID]] stack also works in ReactOS.
 
* Basic Keyboard support need a 2/3 functions implemented (coming soon).
 
* Basic Keyboard support need a 2/3 functions implemented (coming soon).
 
* [[USB]] Mass storage support - Needs mountmgr / partmgr driver implemented. Will also need mountvol and other missing PnP stuff. Update: http://img687.imageshack.us/img687/3223/rosUSB2.png
 
* [[USB]] Mass storage support - Needs mountmgr / partmgr driver implemented. Will also need mountvol and other missing PnP stuff. Update: http://img687.imageshack.us/img687/3223/rosUSB2.png

Revision as of 03:17, 4 March 2012

The USB stack is the component which provides the communication between USB devices and their respective drivers and applications. It consists of multiple files, each with a distinct function. The USB stack in ReactOS is currently limited. This page documents the development of the new USB stack. Development work on a USB 3 stack is in progress.

NOTE: There is a known issue with booting ReactOS from the internal HDD with a USB storage device connected which causes ROS to lose the boot device. Until this problem is fixed or a workaround is developed, please unplug any USB storage devices during boot!


Overview

The goal is to develop a USB stack which:

  • is USB 1.1 - 2.0 compliant
  • uses WDM (NT 5) API
  • is compatible with all USB devices and drivers (which adhere to the standard)

The entire stack will be fully documented and the implementation progress detailed on this page.

Goals

  • Primary Goal: USBHID (human input devices) and storage functionality working (Alpha).
  • Secondary Goal: Audio and other support added.
  • Beyond: testing and debugging.

Due to the complexity and size, no release dates will be provided as of now.

Status

USB Core Status

  • There are 2 USB specifications for the USB 1.1 standard. Devices which are used in this standard are mice, keyboards, etc.
    • OHCI (Open Host Controller Interface Standard) - All transfers types are implemented (bulk, iso, control, interrupt)
    • UHCI (Universal Host Controller Interface Standard) - Totally missing. Though it should be do-able to use ohci driver as a base and use Haiku driver
  • EHCI (Enhanced Host Controller Interface) - Implemented transfer types: bulk & control. Interrupt & Isochronous transfers are not implemented. Due to the missing transfer types, devices who utilize those transfer types will not be available.
  • USBHUB - driver for managing port and hubs - Implementation state is unknown - michel martin has more information on that

USB Mass Storage Support Status

USB Mass Storage is implemented in USBSTOR driver and is fully working. Tested in WinXP + USBEHCI + USBSTOR. Mass storage support requires bulk and control transfers, which are implemented in USBEHCI].

HID Status

The HID framework is built on 5 drivers

  • HIDUSB - this is the interface driver for the USB bus. Currently supported devices are mice. Basic keyboard support should also work currently.
  • HIDCLASS - this is the class driver for HIDUSB and others. Functionality for mice & keyboard is implemented, though support for sending output reports is not implemented.
  • MOUHID - mouse function driver for USB hid standard - Fully implemented and working.
  • KBDHID - keyboard function driver for the hid standard - 90% implemented, needs KbdHid_InsertScanCodes implemented for keyboard scan code dispatching to kbdclass and led status indicator support (which requires sending output reports).
  • HIDPARSE - driver for parsing report descriptors - functionality implemented for mice, keyboard support needs HidParser_TranslateUsage fully implemented for modifier state (caps lock, num lock, scroll lock).

What works and not

- needs a few more issues to be resolved

See Also

USB Stack Template

Supported USB Devices

USB Todo List

USB Stack Template

References