usb(HW)


usb -- Universal Serial Bus

Description

Universal Serial Bus (USB) is a low-cost, hot-pluggable device bus that is supported by most modern motherboards and is also available through add-in cards. Any device that conforms to the protocol defined in the USB Specification should work with this implementation. Devices using proprietary protocols will not. If you have, for example, a USB touch tablet that presents itself as a conforming Human Interface Device, there is an excellent chance that it can be configured and will work like a USB mouse.

The USB interface is implemented via the Uniform Driver Interface (UDI). Three USB Host Controller Interfaces (HCI) exist and are supported by this implementation:

HCI name USB standard Speed
Universal Host Controller Interface (UHCI) USB 1.1 12Mbps
Open Host Controller Interface (OHCI) USB 1.1 12Mbps
Enhanced Host Controller Interface (EHCI) USB 2.0 480Mbps

 HCI name                                     USB standard   Speed
 Universal Host Controller Interface (UHCI)   USB 1.1        12Mbps
 Open Host Controller Interface (OHCI)        USB 1.1        12Mbps
 Enhanced Host Controller Interface (EHCI)    USB 2.0        480Mbps

USB 1.1 devices are typically low-cost, low-bandwidth units. USB 2.0 offers speeds up to 480 megabits per second, which is comparable to mid-range IDE and SCSI bus speeds.

USB hubs and USB devices (such as mice, keyboards, and mass storage devices) may be plugged into the host. A maximum of 128 devices may be nested up to 8 layers deep using combinations of hubs and devices. USB devices may be attached before or after the host computer starts; devices may be unplugged from the bus while the computer is running.

Mouse and keyboard devices send very little data across the USB bus. Other devices, such as mass storage, use bulk transfer mode to move data blocks over the bus, but the data rates achieved are typically less than SCSI or IDE bus devices. USB is an effective mechanism for adding devices to a host that does not already have that functionality, such as adding a mouse or trackball to a laptop or adding supplementary storage such as a Zip® or CD-ROM drive. USB can be used for hard disk storage when top performance is not required.

Note the following when using these supported USB device types:


Hubs

Keyboards

Mice

Printers

CD-ROM/DVD-ROM drives and CD/DVD writers

Tape drives

Hardware

Root hub

The ``root hub'' refers to the USB ports configured on the motherboard. Many systems allow built-in USB ports to be disabled in BIOS setup. If USB is not working, check that it is enabled in the BIOS. Alternatively, if you do not wish to use USB, you may want to disable it in the BIOS setup since many motherboards use two to three interrupts for USB HCIs.

Connectivity options

The root hub ports may be used for either a USB device or a USB hub. Any combination of hubs and devices may be connected, up to the maximum device limit and the hub depth -- 128 devices nested 8 layers deep.

USB device configuration

In general, to connect a USB device, do the following:

  1. As root, enter:

    # usbprobe

    This displays all currently connected USB devices. Each line lists the USB device path, the device number on the bus, the device type, and a device description.

  2. Connect the USB device to a USB port on the system, or to a port on a USB hub connected to the system.

  3. Run usbprobe again to see the USB device.

  4. Enable the device as shown (if necessary):

    Keyboard no configuration necessary
    Mouse mouseadmin(C)
    CD-ROM mount /dev/cdN mount-point
    Hard Disks mkdev hd
    Printer Must use CUPS to configure and use a USB printer; see ``Getting Started with CUPS'' in Administering printers and usblp(HW).
    Tape drives No configuration should be necessary; auto-configuration has been observed to fail in some cases. If device nodes do not appear when the tape device is connected, run sdimkdev -sfui to configure the device.

     Keyboard      no configuration necessary
     Mouse         mouseadmin
                   (../html.C/mouseadmin.C.html)(C)
     CD-ROM        mount /dev/cdN mount-point
     Hard Disks    mkdev hd
     Printer       Must use CUPS to configure and
                   use a USB printer; see ``Getting
                   Started with CUPS'' and usblp
                   (usblp.HW.html)(HW).
     Tape drives   No configuration should be
                   necessary; auto-configuration
                   has been observed to fail in
                   some cases.  If device nodes do
                   not appear when the tape device
                   is connected, run sdimkdev -sfui
                   to configure the device.
    

USB device IDs

When you attach a USB mass storage device, the system assigns the device a USB device ID. (USB device IDs are only assigned to USB storage devices, not to non-storage devices like mice and keyboards.) USB device IDs are determined by the order in which the system detects each device. However, the enumeration of devices depends on several factors and different circumstances may result in different device ID assignments on the same machine. For example, devices that you attach to a running system are enumerated in the order that you plug them in. At boot time, however, the entire USB hub/device tree is traversed and devices may be detected in a different order, resulting in different device ID assignments. In general, these guidelines apply:

Device drivers in the USB protocol stack


HCI drivers
Controls I/O to the various USB host controllers found on motherboards and add-in cards. The HCI drivers include:

usb_ehci
Enhanced Host Controller Interface (hardware driver)

usb_ohci
Open Host Controller Interface (hardware driver)

usb_uhci
Universal Host Controller Interface (hardware driver)

usb_hci
Host Controller UDI meta-language Communications interface between the USB stack and the HCI drivers.

usbd
USB stack manager Communications interface between the USB stack and the HCI drivers. This driver maintains an internal representation of the ``tree'' of USB hubs and devices, and attaches/detaches device descriptors to corresponding USB class drivers as USB peripherals are added/removed.

usbdutil
USB stack utilities library Utility functions used by usbd.

opnusbdi
OpenUSBDI UDI meta-language USB ``tree'' management functions used by usbd.

usb_hub
Hub (USB class driver) Class driver for managing USB hubs.

usb_prnt
Printer (USB class driver) Class driver for managing USB printers.

usb_msto
Mass storage (USB class driver)
The pseudo Host Bust Adapter driver:

usb_hid
Human Interface Device (USB class driver)
Class driver for talking to Human Interface Devices (mice, keyboards, and so forth.)

udihidpr
Human Interface Device parser library
Functions for decoding messages from HID devices.

udi_hid
Human Interface Device UDI meta-language
Functions for controlling HID devices.

udiMkb
SCO OpenServer keyboard mapper
Connects HID keyboard type devices to the SCO OpenServer console driver.

udiMmse
SCO OpenServer mouse mapper
Connects HID ``pointing device'' type devices to the SCO OpenServer event driver.

usbprobe
USB probe tool
Displays connected devices on all USB busses.

Files


/dev/usb*
USB device nodes

/usr/lib/event/*
device files for mice

Notes

USB keyboards do not work with kdb. You must use a serial console or a PS/2 keyboard for kernel debugging.

Compatibility

Users of the USB implementation in earlier releases should note the following:

See also

mkdev(ADM), mouseadmin(C), usblp(HW), usbprobe(ADM), Section HW manual pages

Standards conformance

This USB interface conforms to Release 2.0 of the USB specification. For more information, see the USB web page.
© 2007 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 -- 05 June 2007