Microsoft KB Archive/320925

= Considerations when you select OHCI USB driver on Windows CE 4.0 =

Article ID: 320925

Article Last Modified on 1/6/2005

-

APPLIES TO


 * Microsoft Windows CE Platform Builder 4.0
 * Microsoft Windows CE .NET 4.2

-



This article was previously published under Q320925



SUMMARY
Windows CE 4.0 includes two separate Open Host Controller Interface (OHCI) versions for Universal Serial Bus (USB) host controllers:  The Open Host Controller Driver (OHCD) component, which is included in Platform Builder versions 2.11, 2.12, and 3.0. The OHCD component is located in the following directory:

Public\Common\Oak\Drivers\Usb\Hcd\OHCD

 The new OHCI driver, which is included in Platform Builder 4.0. The OHCI driver is located in the following directory:

Public\Common\Oak\Drivers\Usb\Hcd\OHCD2



This article describes why Windows CE 4.0 includes a choice between OHCI versions and how to decide which version to use for a particular application.



Disadvantages of the Old Driver
The old driver has experienced some long-standing functional issues, including:
 * Cannot issue bulk or control transfers that are larger than 4 kilobytes (KB).
 * Does not work well on architectures with 1 KB Memory Management Unit (MMU) pages.

Additionally, the old driver has some major structural issues, including:
 * Non-obvious control flow.
 * Resource leaks in some suspend/resume cases and hot-plug scenarios.

The old driver also has some other minor code problems. Bugs in the old driver will not be fixed except by upgrading to the new driver.

Advantages of the Old Driver
Because the old driver was used for more than three product releases, the old driver was subjected to more extensive testing than the new OHCD2 driver.

Disadvantages of New Driver
There are some known problems with the new driver. For example, the new driver does not enumerate certain USB Bluetooth dongles.

Advantages of the New Driver
Problems that occur with the new driver will be fixed in the new driver. Additionally, the new driver shares a lot of code with the Universal Host Controller Interface (UHCI) driver, which makes them easier to maintain.

Microsoft recommends that all OEMs use the new driver whenever possible unless there is a very compelling reason not to do so.

