The following sections describe USB device enhancements in this Solaris release.
The USBA framework, found in the Solaris 9 12/03 release, was originally developed for USB 1.1 devices. A new framework, called USBA 1.0, was created to meet more demanding requirements of USB 2.0 devices. The framework operates USB 1.1 devices as well. This Solaris release provides both frameworks, hence the name dual framework. The purpose of the dual framework is to facilitate a smoother transition from the original framework to the newer framework. The original USBA framework operates devices connected to a system's USB 1.1 ports, while the new USBA 1.0 framework operates devices connected to a system's USB 2.0 ports. All Sun motherboard ports are USB 1.1 ports, while most PCI card ports support USB 2.0.
For specific details on the how the USB dual framework works, go to http://www.sun.com/desktop/whitepapers.html.
A driver written for one USB framework will not work on the other USB framework. Most Sun-supplied USB drivers provide versions for both frameworks.
Compatibility problems might occur if you attempt to plug a USB device into a port, directed by a framework that does not recognize a proper driver for that device because the driver is incompatible. When a framework tries to attach a framework-incompatible driver for a device, you will see console messages similar to the following:
The driver for device binding name is not for USBA1.0 |
This message will appear, for example, when a device operated by a non-Sun driver, which is compatible with USBA 1.0 framework, is plugged into a port supported by the original USBA framework. The USBA 1.0 framework recognizes the device and tries to map the correct driver, but the driver is rejected because it is incompatible with the framework operating the port.
For information on identifying your USB framework configuration, see How to Display USB Device Information (prtconf).
The following table describes Solaris support for USB 1.1 and USB 2.0 devices:
|
Solaris 8 HW* Releases |
Solaris 9 Releases |
---|---|---|
USB 1.1 |
SPARC and x86 |
SPARC and x86 |
USB 1.1 audio devices |
Not supported on a USB 2.0 hub |
Not supported on a USB 2.0 hub |
USB 2.0 |
SPARC |
SPARC and x86 (Solaris 9 4/04) |
USB 2.0 audio devices |
Not supported |
Not supported |
USB 2.0 storage devices |
Supported on a USB 2.0 hub |
Supported on a USB 2.0 hub (Solaris 9 4/04) |
*This is not the Solaris 8 releases, but the Solaris 8 HW releases, starting with the Solaris 8 HW 5/03 release. The patch number for the USB dual framework found in the Solaris 8 HW 5/03 release is 109896.
In the Solaris 9 9/04 release only, USB 1.1 devices will operate on USB 2.0 hubs that are connected to 2.0 ports.
The following table provides a summary of USB support on Sun SPARC hardware:
System Type |
Solaris Releases |
USB Device and Speed Support |
---|---|---|
Sun Blade 100, 150, 1000, and 2000 |
Solaris 9 releases, before the Solaris 9 4/04 release, and Solaris 8 releases before the Solaris HW 5/03 release |
All USB devices at 12 Mb/sec |
Sun Blade 100, 150, 1000, and 2000 |
Solaris 9 4/04 and Solaris 8 HW 5/03 |
USB 1.1 devices at 12 Mb/sec (connected to any USB ports) USB 2.0 devices at 12 Mb/sec (connected to motherboard ports) USB 2.0 devices at 480 Mb/sec (connected to ports on add-on PCI USB 2.0 card) |
Sun Blade 1500 and 2500 |
Solaris 9 4/04 and Solaris 8 HW 5/03 |
USB 1.1 devices at 12 Mb/sec (connected to any USB ports) USB 2.0 devices at 12 Mb/sec (connected to motherboard ports) USB 2.0 devices at 480 Mb/sec (connected to ports on PCI combo card) |
Other Sun SPARC PCI platforms |
Solaris 9 4/04 and Solaris 8 HW 5/03 |
USB 1.1 devices at 12 Mb/sec USB 2.0 devices at 480 Mb/sec (connected to ports on add-on PCI USB 2.0 card) |
For information about PCI cards verified on the Solaris release, go to: http://www.sun.com/io_technologies/usb.html
Sun Microsystems platforms that provide support for USB devices include the following:
SPARC based systems with OHCI host controllers that support USB 1.1 provide low- and full-speed devices:
Sun BladeTM systems that run the Solaris 8 or 9 releases.
NetraTM X 1/T1 and some Sun FireTM systems that run the Solaris 9 release.
SPARC based systems with OHCI and EHCI host controllers, such as the Sun Blade 1500 or 2500 systems, provide high-speed support for USB 2.0 devices and low- and full-speed support for USB 1.1 devices. Systems include any PCI-based sun4u system that run the Solaris 8 HW 5/03 release or Solaris 9 4/04 release, including the systems listed above when they are equipped with a USB 2.0 PCI card.
x86 based systems that run the Solaris 8 or 9 x86 Platform Edition with UHCI host controllers provide USB 1.1 support.
For additional USB support information, see Overview of USB Devices.
This Solaris release includes the following USB 2.0 features:
Better performance – Increased data throughput for devices connected to USB 2.0 controllers, up to 40 times faster than USB 1.1 devices.
You will be able to take advantage of the high-speed USB protocol when accessing high-speed mass storage devices, such as DVDs and hard drives.
Compatibility – Backward compatibility with 1.0 and 1.1 devices and drivers so that you can use the same cables, connectors, and software interfaces.
For a description of USB devices and terminology, see Overview of USB Devices.
USB 2.0 devices are defined as high-speed devices that follow the USB 2.0 specification. You can refer to the USB 2.0 specification at http://www.usb.org.
Some of the USB devices that are supported on SPARC based and x86 based systems in this Solaris release are as follows:
Mass storage devices – CD-RWs, hard disks, DVD, digital cameras, Zip, diskettes, and tape drives
Keyboard, mouse devices, speakers and microphones
Audio devices
For a full listing of USB devices that have been verified on the Solaris release, go to:
http://www.sun.com/io_technologies/usb.html
Additional storage devices might work by modifying the scsa2usb.conf file. For more information, see the scsa2usb(7D) man page.
Solaris USB 2.0 device support includes the following features:
Increased USB bus speed from 12 Mbps to 480 Mbps. This increase means devices that support the USB 2.0 specification can run significantly faster than their USB 1.1 counterparts, when they are connected to a USB 2.0 port.
A USB 2.0 port is defined on SPARC systems as follows:
A port on a USB 2.0 PCI card
A port on a USB 2.0 hub that is connected to USB 2.0 port
USB 2.0 is Solaris Ready on all PCI-based SPARC platforms. A USB 2.0 PCI card is needed to provide USB 2.0 ports. For a list of USB 2.0 PCI cards that have been verified for the Solaris release, go to http://www.sun.com/io_technologies/usb.html.
USB 1.1 devices work as they have in the past, even if you have both USB 1.1 and USB 2.0 devices on the same system.
While USB 2.0 devices operate on a USB 1.x port, their performance is significantly better when connected to a USB 2.0 port.
A USB 2.0 host controller has one high-speed Enhanced Host Controller (EHCI) and one or more low- or full-speed OpenHCI Host Controller (OHCI) embedded controllers. Devices connected to a USB 2.0 port are dynamically assigned to either an EHCI or OHCI controller, depending on whether or not they support USB 2.0.
USB 2.0 storage devices connected to a port on a USB 2.0 PCI card, and that were used with a prior Solaris release in the same hardware configuration, can change device names after upgrading to this release. This change occurs because these devices are now seen as USB 2.0 devices and are taken over by the EHCI controller. The controller number, w in /dev/[r]dsk/cwtxdysz, is changed for these devices.
For more information on USB 2.0 device support, see the ehci(7D) and usba(7D) man pages.
Maximum cable length supported is 5 meters.
Do not use cable extenders. For best results, use a self-powered hub to extend cable length.
For more information, go to http://www.usb.org/channel/training/warning/
Bus-powered hubs use power from the USB bus to which they are connected, to power devices connected to them. Special care must be taken to not overload these hubs, since the power these hubs offer to their downstream devices is limited.
Do not cascade bus-powered hubs. For example, do not connect one bus-powered hub to another bus-powered hub.
Avoid connecting bus-powered devices to bus-powered hubs, except for low-speed, low-power devices, such as keyboards or mice. Connecting high-powered devices such as disks, speakers, or microphones to a bus-powered hub could cause power-shortages for all devices connected to that hub. This scenario could cause these devices to behave unpredictably.
All USB storage devices in this Solaris release are now accessed as removable media devices. This change has the following advantages:
USB storage devices with standard MS-DOS or Windows (FAT) file systems are now supported.
You can use the user-friendly rmformat command instead of the format command to format and partition all USB storage devices. If the functionality of the format command is needed, use the format -e command.
You can use the fdisk command if you need to do fdisk-style partitioning.
Non-root users can now access USB storage devices, since the root-privileged mount command is no longer needed. The device is automatically mounted by vold and is available under the /rmdisk directory. If a new device is connected while the system is down, do a reconfiguration boot with the boot -r command so that vold recognizes the device. Note that vold does not automatically recognize a hot-plugged device. If a new device is connected while the system is up, restart vold. For more information, refer to the vold(1M) and scsa2usb(7D) man pages.
Disks with FAT file systems can be mounted and accessed. For example:
mount -F pcfs /dev/dsk/c2t0d0s0:c /mnt |
All USB storage devices are now power managed, except for those that support LOG SENSE pages. Devices with LOG SENSE pages are usually SCSI drives connected through a USB-to-SCSI bridge device. In previous Solaris releases, some USB storage devices were not power managed because they were not seen as removable media.
Applications might work differently with USB mass storage devices. Keep the following issues in mind when using applications with USB storage devices:
Applications might make incorrect assumptions about the size of the media since only smaller devices like diskettes and Zip drives were removable previously.
Requests by applications to eject media on devices where this would be inapplicable, such as a hard drive, will succeed and do nothing.
If you prefer the behavior in previous Solaris releases where not all USB mass storage were treated as removable media devices, then you can force the old behavior by updating the /kernel/drv/scsa2usb.conf file.
For more information on using USB mass storage devices, see the scsa2usb(7D) man page.
Keep the following tips in mind if you have problems adding or removing a USB mass storage device.
If USB devices are added or removed when the system is down, you must perform a reconfiguration boot.
ok boot -r |
If you have problems accessing a device that was connected while the system is running, try the following command:
# devfsadm |
Do not move devices around if the system has been powered down by a suspend operation. For more information, see SPARC: USB Power Management.
If a device has been hot removed while in use by applications and is no longer available, then stop the applications. Use the prtconf command to see whether the device node has been removed.
This section describes USB driver enhancements in this Solaris release.
New generic USB driver – USB devices can now be accessed and manipulated by applications using standard UNIX® read(2) and write(2) system calls, and without writing a special kernel driver. Additional features include:
Applications have access to raw device data and device status.
Supports control, bulk, and interrupt (in and out) transfers.
For more information, refer to the ugen(7D) man page and the USB DDK at: http://developers.sun.com/solaris/developer/support/driver/usb.html
Digi Edgeport USB support – Provides support for several Digi Edgeport USB to serial port converter devices.
New devices are accessed as /dev/term/[0-9]* and /dev/cua/[0-9]*.
USB serial ports are usable as any other serial port would be, except that they cannot serve as a local serial console. The fact that their data is run through a USB port is transparent to the user.
For more information, see usbser_edge(7D), or go to http://www.digi.com and http://www.sun.com/io.
Documentation and binary support for user-written kernel and userland drivers – A Solaris USB Driver Development Kit (DDK) is available. For up-to-date information on USB driver development, including information on the DDK, go to: http://developers.sun.com/solaris/developer/support/driver/usb.html
Features of the EHCI driver include:
Complies with enhanced host controller interface that supports USB 2.0.
Supports high-speed control, bulk, and interrupt transfers.
Currently, there is no support for high-speed isochronous transactions. For example, USB 2.0 audio devices are not supported.
If there are USB 2.0 and USB 1.x devices on the system, the EHCI and OHCI drivers hand-off device control depending upon the type of device that is connected to the system.
The USB 2.0 PCI card has one EHCI controller and one or more OHCI controllers.
A USB 1.1 device is dynamically assigned to the OHCI controller when it is plugged in. A USB 2.0 device is dynamically assigned to the EHCI controller when it is plugged in.