Information about the USB specifications and products can be found at the USB Implementers Forum website.
USB FAQs Rev 12162010
USB FAQ Index
General questions:
What types of USB devices are supported in Oracle Solaris?
Refer to usb(7D) man page which lists all bundled USB drivers
Which USB devices can I use with Oracle Solaris?
Please check http://www.oracle.com/technetwork/server-storage/solaris/overview/usb-faq-140616.html for list of verified devices.
This list is by no means exhaustive but attempts to cover as many USB devices as possible that are known to work under Oracle Solaris. Also, in addition to many new devices being introduced into the market each day, many may have undergone revisions or updates to their firmware or hardware even though they may be listed with the same model number or are no longer available.
What are the recommended USB patches for Oracle Solaris versions 8 and 9 ? Is it necessary to upgrade?
It is highly recommended that users upgrade their OS with the latest USB patches for optimal results. Note: Patches listed here may get superceded by later patches which are generally inclusive of the fix in the obsoleted patch
For Oracle Solaris 8: Patch # 109896-36 or later for Oracle Solaris on SPARC
For Oracle Solaris 8: Patch # 109897-20 or later for Oracle Solaris on x86
For Oracle Solaris 9: Patch # 115553-28 or later for Oracle Solaris on SPARC
For Oracle Solaris 9: Patch # 115554-24 or later for Oracle Solaris on x86
To obtain patches, please refer to the details in the following blog:
http://blogs.sun.com/miriamsblog/entry/sunsolve_september_2010_update
We strongly recommend users to upgrade to Solaris 10 or use the latest Oracle Solaris 11 Express Release.
What are Solaris 10, OpenSolaris and Solaris Express ?
Solaris 10 is the latest release of Solaris - http://www.oracle.com/technetwork/server-storage/solaris/overview/index.html
The OpenSolaris project is an open source project that is initially based on a subset of the source code for the Solaris Operating System. It is a nexus for a community development effort where developers can collaborate on developing and improving operating system technology. OpenSolaris is a single CD combined live/install image: a core operating system, kernel, system libraries, a desktop environment and a package management system.
Oracle Solaris 11 Express is a production ready operating system that builds on existing Oracle Solaris 10 features.
Details are available at:
http://www.oracle.com/us/products/servers-storage/solaris/solaris-11-express-185123.html
Are there any Oracle Solaris 10 patches for USB devices?
If you install the latest Oracle Solaris 11 Express release, you get the latest USB fixes. If you want to install patches over your Oracle Solaris 10 installation, the following patches are available:
Kernel patch: 120012-14(x86), 120011-14(sparc) and above. (This kernel patch includes latest usb fixes such as power budgeting, 'libusb should just work', ehci fix to enable ZFS on USB etc.)
latest usb fixes such as power budgeting, 'libusb should just work', ehci fix to enable ZFS on USB etc.
Virtual keyboard and mouse (multiple keyboard and mouse) support: 118822-18 (sparc), 118844-19 (x86)
Vold hotplug awareness: 119374-05 (sparc), 119375-05 (x86).
Rmformat for >1TB hard disks: 120009-01 (sparc), 120010-01 (x86).
Libusb: 120732-01 (sparc), 120733-01 (x86)
We strongly recommend that users install or upgrade to the latest Solaris 10 update release or use Oracle Solaris 11 Express rather than selectively apply patches. (Note: Patches listed here may get superceded by later patches which are generally inclusive of the fix in the obsoleted patch).
What is the USBA Framework?
USBA is the Oracle Solaris USB Architecture framework for USB client drivers. The first version (0.0) was designed primarily for keyboards and mice support. USBA1.0 Framework, first available as a patch in Solaris 8, is the USB software framework that allows users to connect USB 2.0 devices at their highest speeds. Some new devices will work with this framework only. Solaris 10 adds the latest USBA 2.0 framework where all USB driver interfaces were promoted to public. Refer to usb(7d) man pages for details or this blog: http://blogs.sun.com/frits/date/200506.
What is the USB dual framework?
The Dual Framework which is supported in Solaris 8 and 9 releases consists of two USB frameworks: the USBA 1.0 framework which supports USB 2.0 devices, and the original framework USBA 0.0 of the OS release (which was mainly designed for keyboard and mouse only). USB drivers written under this framework are prefixed by usba10_. There is no dual framework in Oracle Solaris 10 or later. USB drivers do not have prefix usba10_ in Oracle Solaris 10.
Details regarding this framework are found in the Dual Framework whitepaper at : www.sun.com/desktop/whitepapers.html.
How do I use USB devices, where is this documented ?
Refer to System Administration Guide: Basic Administration (for Oracle Solaris 9), Devices and File Systems (for Oracle Solaris 10)
Solaris 9 System Administrator Collection http://docs.sun.com/app/docs/coll/47.13Why are some of my USB 2.0 devices not recognised or not fully functional on Oracle Solaris 8 or Oracle Solaris 9, even after installing all the latest USB patches?
For the Oracle Solaris 8 and Oracle Solaris 9 OS releases, the latest updates will install the USBA1.0 kernel interfaces as part of a Dual Framework. The Dual Framework consists of two USB frameworks: the newer USBA 1.0 framework which supports USB 2.0 devices, and the original framework of the OS release. The original framework is included for compatibility purposes only and was mainly designed to be used for keyboards and mice. In the Dual Framework configuration, by default, the original framework supports devices connected to USB 1.x ports and the newer USBA 1.0 framework supports devices connected to USB 2.0 ports.
To change the USB Dual Framework configuration, for example to run all USB ports with the newer USBA 1.0 framework, you will need to run the usbconfig script from: http://www.sun.com/bigadmin/scripts/sunScripts/usbconfig.txt
If you are using a USB 2.0 device, please run usbconfig script and select the option '1' that sets all USB ports to USBA1.0 Framework and then connect the device.
My device does not enumerate and I get the message "connecting device on port failed". What is the cause?
Often the root cause is that the device is not USB spec compliant but there are a few things to check :
Also, refer to question "Why are some my USB 2.0 devices not recognized" above.
How do I diagnose USB problems ? (See the Reporting Problems section below)
mdb(1) has a dcmd ::usba_debug_buf for dumping the USB log buffer which may give some hints on what went wrong. You should also check /var/adm/messages
How do I know that I am really running USB 2.0 drivers in Oracle Solaris 8 and Oracle Solaris 9?
Check with prtconf -D that all usb drivers have prefix of usba10_
How do I determine whether my device runs at USB 2.0 speed?
On Oracle Solaris 8 and Oracle Solaris 9, check with prtconf -D whether the host controller is usba10_ehci, for example on Oracle Solaris 9:
usb, instance #0 (driver name: usba10_ehci)
storage, instance #0 (driver name: usba10_scsa2usb)
disk, instance #0 (driver name: sd)
On Oracle Solaris 10 and later, check /var/adm/messages for messages similar to:
Dec 13 17:05:57 mysystem usba: [ID 912658 kern.info] USB 2.0 device
(usb50d,249) operating at hi speed (USB 2.x) on USB 2.0 external hub:
storage@4, scsa2usb0 at bus address 4
My device is not responding. How do I check if my USB device was recognized by the OS? What command can I use?
You can use 'cfgadm' to find the port that your device is connected to. See the man page cfgadm_usb(1M) for details.
# cfgadm -vl (Solaris 9 and later)
# cfgadm -c disconnect usbx/y
# cfgadm -c configure usbx/y
# prtconf -D
Can I do soft hotplugging (without physically disconnecting the device)?
# cfgadm -vl (Solaris 9 and later)
# cfgadm -c disconnect usbx/y
# prtconf -D
The device node should no longer be listed. Refer to cfgadm_usb(1M).
On my SPARC platform, when I don't use my device for an hour or so, and try to use it, it is not working.
On SPARC platforms power management may have powered it down. Edit the file /etc/power.conf, disable autopm, and run pmconfig or reboot.
I get "Connection failure" warnings when I connect my device and it does not work.
Run prtconf -D on the command prompt and check if the device enumerated.
Possible workarounds are connecting the device to a USB 1.x port (system ports on most SPARC machines) or connect a USB 1.x hub and then the device to this hub. This forces the device to be managed by ohci or uhci. If users do not need USB 2.0 support, another workaround is to run the below command which disables the ehci(7D) driver:
# rem_drv ehci
My Belkin Omniview KVM switch works fine on Oracle Solaris x64 but not on SPARC.
We've seen that it worked fine on SPARC on Oracle Solaris 9 but not on Oracle Solaris 10. The device presents two mice to the system. On SPARC, the first one gets plumbed and needs to be disconnected before the real one can get plumbed. On x86 the first one does not have to be disconnected before the 2nd one gets plumbed. The behavior is somewhat different in each OS release. For Oracle Solaris 10, install the Virtual keyboard and mouse patch (see above).
I need a USB to PS2 converter. Any suggestions which ones work well ?
We have seen the brand 'Cables Unlimited' and SIIG USB to PS2 converters work well. We found that Belkin converter did not work on Oracle Solaris 8, Oracle Solaris 9. On Oracle Solaris 10, the latest version of the Belkin USB to PS2 converter was reported to work.
I have a 5m cable. Should it work?
It may with most devices but may be flaky with bus-powered devices such as the Oracle mouse.
I need to extend to 100m or more. how do I use this?
You can use active cable extenders.
How do I disable all USB ports?
To enforce security, refer to usbsecure.pl script available at: http://developers.sun.com/prodtech/solaris/driverdev/reference/codesamples/usb_security/index.html
To completely disable USB, you can remove the USB package with the pkgrm command.
How do I configure my USB printer?
Use print manager, /usr/sbin/printmgr
Or use JDS Java Launch -> Preferences -> Printer Preferences
On Solaris 10, this message confuses me. "USB 2.0 device (usbd49,7010) operating at full speed (USB 1.x) on USB 1.10 root hub: storage@2, scsa2usb1 at bus address 2". Please clarify.
This means that a USB 2.0 device is connected to a USB1.x hub which is operating at full speed (and not at high speed), because the USB1.x port only support full speed and low speed.
Can I boot from a USB disk or USB CD/DVD drive?
Generally speaking, booting from USB disk, CD/DVD drive is supported on x86 platforms with S10 update 1 and later if the BIOS has USB 2.0 support. Sparc systems with USB 2.0 support can boot from USB disks if the OBP(Open Boot Prom) is upgraded to version 4.27 or later. Before you can boot Solaris from USB disk, you have to install Solaris on the disk first. Installing on USB memory sticks is not recommended as the number of writes to these sticks is limited.
Problems observed on some hardware platforms:
-Installation from USB CD/DVD drive starts, but then fails with "not finding media" error. This is because the CD/DVD drive is not mounted under the /cdrom directory as the installation process expects. Possible workaround is to re-plug in the CD/DVD drive, and make sure the device is in the device tree and the /dev/dsk/ link is correctly created, and mount it under /cdrom manually, then continue installation by /sbin/install-solaris.
- Installation to USB hard disk seems slow and then hangs somewhere. Check dmesg output if there are repeatedly "timeout" and "tran_err". Such error messages would mean you don't have enough physical memory. The workaround is to install more than 512M physical RAMs or to use S10U2 or later. These releases contain the ehci fix for USB 2.0 disk support. There is also patch available, refer to the General section. Furthermore, latest OpenSolaris releases contain similar fixes for USB 1.x disk.
- Booting from USB hard disk panics on "cannot mount root path". Check if the disk is connected behind a USB hub. Don't use a hub between when booting from USB disk. And check if the bootpath in /boot/solaris/bootenv.rc matches the USB disk drive path. If not, modify bootenv.rc, boot into failsafe and make sure boot_archive on the USB disk drive is updated.
How do I boot off a USB disk for an x86/x64-based server?
Assuming you are using a Oracle X-line server utilizing an American Megatrends, Inc. (AMI) BIOS, press F2 at server bootup to enter the BIOS. Navigate to the Boot menu option using the arrow keys [1]. Hit return on Boot Device Priority [2] and hit return again with the 1st Boot Device selected [3]. You should see your USB device listed. Highlight it and press enter, then F10 to Save and Exit [4]. This will reboot your server using your USB disk as the primary boot device.
If your USB device is not showing up in the Boot Device Priority menu, try seeing if it is listed in the Hard Disk Drives section under Boot. You should be able to hit return on 1st Drive and see it listed [5]. If it still is not visible, you may want to check if your USB disk is USB 2.0 compatible, or alternatively, try upgrading the BIOS to a newer version.
This method is not exclusive to Oracle servers. Any BIOS that supports booting from a USB 2.0 device should theoretically work with this method, although the exact menu layout may differ. Additionally, it's good to check if your USB device is verified to work with Solaris by visiting the Solaris Ready USB section.
It is also worth noting that USB boot works equally well with both external and internal USB ports [6]. On many 1U-based Oracle servers with internal slots, the bottom port is inactive. Use the top port for your USB device.
How do I boot off a USB disk for a SPARC-based server?
1) Ensure the OBP version is at least 4.27.
ok .version
Release
4.30.4 created 2009/08/19 07:18
OBP
4.30.4 2009/08/19 07:18 Sun Ultra 45
POST
4.30.4 2009/08/19 07:35
OBDIAG
4.30.4 2009/08/19 07:29
2) Find the USB disk and copy its device path
ok show-disks
a) /pci@1e,600000/pci@0/pci@a/pci@0/pci@8/scsi@1/disk
b) /pci@1e,600000/pci@0/pci@1/pci@0/ide@1f/cdrom
c) /pci@1e,600000/pci@0/pci@1/pci@0/ide@1f/disk
q) NO SELECTION
Enter Selection, q to quit: q
3) Create a USB alias using the device path ok nvalias usb /pci@1e,600000/pci@0/pci@1/pci@0/ide@1f/disk4) Boot the USB disk
ok boot usb
How can I get the product id and vendor id of a USB device?
Connect the device to the host and check the file /var/adm/messages for messages like:
Aug 12 17:18:19 mysystem usba: [ID 912658 kern.info] USB 2.0 device
(usb781,5151) operating at hi speed (USB 2.x) on USB 2.0 root hub: storage@6,
scsa2usb0 bus address 2 usb781,5151 gives you the vendor id (0x781) and product id (0x5151).
Or check prtconf -v output for something like:
name='usb-product-id' type=int items=1 value=00005151
name='usb-vendor-id' type=int items=1 value=00000781
name='compatible' type=string items=9 value='usb781,5151.20' + 'usb781,5151' + 'usbif781,class8.6.50' +
'usbif781,class8.6' + 'usbif781,class8' + 'usbif,class8.6.50' + 'usbif,class8.6' + 'usbif,class8' + 'usb,device'
When I connect my device to the USB ports on the front panel of my SPARC machine sometimes, it does not work. But the same device works when connected to the USB ports on the back panel.
This is most likely caused by some hardware incompatibility issue. To work around the problem, either connect the device to the front port via a USB hub or connect the device to the back port of the SPARC machine.
Is PDA syncing over USB supported in Solaris?
This is supported in Oracle Solaris 10 update 2 and later. Pilot-link (pilot-xfer(1)) uses libusb(3LIB) and is an open source application.
Is there USB Smart Card support in Solaris?
This is supported in Solaris 10 Update 1 and later releases. See the usb_ccid_ifd(S3SMARTCARD) man page. This ifd handler uses libusb(3LIB). Most USB CCID compliant devices should work.
Where do I find some freeware NIC USB drivers?
There are some freeware NIC USB drivers on Masa Murayama's site and sourceforge.net.
What is usb_mid?
Refer to usb_mid(7d) man page. usb_mid is the default driver and is a multi interface driver. It checks if each of the "interfaces" on the device can be bound to a driver. It also exports a ugen(7D) interface (Solaris 10 Update 2 and later) so the device can work with libusb(3LIB).
Can I use a USB modem?
Support for USB modems and ISDN terminal adapters that conform to the Universal Serial Bus Communication Device Class Abstract Control Model (USB CDC ACM) specification is available in Solaris 10 Update 4. See the usbsacm(7D) man page.
Is there java support for USB?
There is a community project in progress which will implement JSR80 API. For details contact usbjava-ext@sun.com or go to http://opensolaris.org/os/community/device_drivers/projects/usb/javausb/.
Pressing the eject button on my CD/DVD drive does not eject the media.
The Solaris HAL implementation does not currently have support for EjectPressed. This issue is fixed in OSOL build 124 and available to developers via opensolaris.org and genunix.org. For some devices, GNOME may display a popup message stating "Unable to unmount volume." A workaround for this is:
svccfg -s rmvolmgr setprop rmvolmgr/eject_button=boolean: false
svcadm restart rmvolmgr
This does, however, limit you to pressing eject while a GNOME session is running.
Driver Development Kit:
Is there a DDK for writing USB device drivers?
The current DDK is DDK 2.0. This DDK contains sample code and sample applications that run on Oracle Solaris 10 only. To get the latest USB development in Solaris, please install Oracle Solaris 11 Express builds. (Refer to question 4 under General section above). The Writing Device Drivers guide for developers is available at: http://docs.sun.com/app/docs/doc/816-4854?q=USB+driver and contains detailed information on how to write a USB device driver for the USBA 2.0 framework. A USB skeleton driver for the Oracle Solaris 10 OS is available at: http://www.sun.com/bigadmin/software/usbskel/.
Is usbskel really a driver?
Yes, it is a driver and it binds to nearly any USB device. Use add_drv -i option to specify the alias.
I need more general documentation on writing drivers.
The Device Driver Tutorial http://docs.sun.com/app/docs/doc/817-5789
This tutorial provides hands-on information about how to develop device drivers for the Solaris Operating System. This book includes step-by-step descriptions of writing, building, installing, loading, and testing real device drivers. These instructions help you understand how drivers control devices. This book also gives an overview of the driver development environment, tools available to you to develop drivers, and techniques for avoiding some driver development problems.
Writing Device Drivers http://docs.sun.com/app/docs/doc/816-4854This book provides information on developing drivers for character-oriented devices, block-oriented devices, USB devices, and SCSI target and HBA devices for the Solaris Operating System (Solaris OS). This book discusses how to develop multithreaded reentrant device drivers for all architectures that conform to the Solaris DDI/DKI. A common driver programming approach is described that allows drivers to be written without concern for platform-specific issues such as endianness and data ordering.
Additional topics include porting Solaris drivers to a 64-bit environment, cluster-aware drivers, driver autoconfiguration, programmed I/O, Direct Memory Access (DMA), power management, device context management, compilation, installation, and testing of drivers, and debugging drivers.
There are also resources at: http://www.oracle.com/technetwork/systems/index.html
USB Host Controllers:
Is any third party USB 2.0 PCI card needed for USB 2.0 support on older Oracle SPARC / x86 machines?
Yes, PCI Host Controller USB 2.0 cards from third party vendors such as Addonics, D-Link or Belkin can be used before connecting USB 2.0 devices for older SPARC/x64 machines. Please check the list of verified USB devices at http://www.sun.com/io_technologies/stdpci/STDPCI3.html for other vendor details. On the latest Ultra 20 and other x64/x86-based Oracle platforms, USB 2.0 is natively supported.
My companion controller is uhci and I don't see a uhci driver for uhci on Solaris 8 or Solaris 9 for SPARC.
Please use the latest Oracle Solaris 10 or Oracle Solaris 11 Express for uhci support.
I see a warning that the ehci driver is incompatible with my USB 2.0 controller but it worked in Oracle Solaris 9 ? What do I do?
Some VIA controller revisions were found not to work reliably with the ehci driver.The ehci(7D) man page describes a method to enable ehci (you may do so at your own risk.)
When I do a prtconf -D on my system, why do I see 3 controllers (ehci, 2 x ohci) associated with my USB 2.0 PCI card?
pci, instance #0 (driver name: pci_pci)
pci, instance #1 (driver name: pci_pci)
usb, instance #1 (driver name: ohci)
usb, instance #2 (driver name: ohci)
usb, instance #0 (driver name: ehci)
That means there is an ehci host controller on the card and it has two companion ohci controllers. The ehci is the usb2.0 controller; ohci is the usb1.x controller. If a USB 1.x device is found, it will be rerouted to a companion ohci controller.
I see multiple USB controllers in prtconf output for my USB2.0 PCI card. How does this really work?
A USB 2.0 controller in fact has 3 (or more) controllers. An ehci controller for USB 2.0 support and 2 ohci or uhci controllers for usb1.x support. If ehci is enabled, it first enumerates the device and if it finds a usb1.x device, it will cause a disconnect and reconnect for one of its companion controllers (ohci or uhci). This is all done in hardware.
My USB host controller continuously reports over current conditions even if no device is connected.
The fix for this condition is available with the introduction of USB power budgeting, which is available in OpenSolaris or Solaris 10 Update 2 and later releases.
This feature is also available in Solaris 9 with the following patches:
Patch # 115553-22 or later for Solaris on SPARC
Patch # 115554-21 or later for Solaris on x86
USB Keyboard, Mouse, Hubs:
Can I use multiple mice on Solaris?
Multiple keyboards and mice are supported in Solaris 10 Update 1 and later. See patches listed in USB General section of this FAQ.
Can I use multiple keyboards or a bar code scanner on Solaris?
A bar code scanner looks to the system just like another keyboard. This is supported in Solaris 10 Update 1 and later. See patches in USB General section of this FAQ.
Can I build an extender by cascading hubs?
You can but it is not recommended cascading beyond 3. Also, self powered hubs are recommended.
On a SPARC workstation, my non-Oracle keyboard or mouse becomes unusable about 30 mins of idleness. How to overcome this?
This is due to power management. Disable power management in /etc/power.conf to overcome this.
Can I use non Oracle keyboards/mice?
Yes, many (such as Logitech etc.) are known to work but some others have issues. Check http://www.oracle.com/technetwork/server-storage/solaris/overview/index-136292.html for list of known working third party keyboards/mice. Some of the latest Logitech keyboard and mice have been tested under the latest release of Solaris. We recommend you use latest Oracle Solaris 11 Express releases if you want to use these Logitech devices.
I am using a third party mouse with scroll wheel and 7 buttons. Also my keyboard has advanced features like smart card support. Why doesn't Solaris recognize it as console device?
The current Solaris HID driver only supports simple keyboard and mice (with the vertical wheel and up to 3 buttons---left button, middle button and right button). The HID driver does not fully implement the HID 1.1 spec but only a subset. There is work in progress on this. Please email usb-help@sun.com for the latest status. Check latest Solaris Express release notes for announcements regarding this feature.
The prtconf output shows my device is connected to the ehci controller and I am using a hub. But the device is still slow and getting speeds of 800KB/sec. I am using a hub.
Check the hub details and ensure that the hub is not a USB 1.x hub.
What is the difference between the old Type 6 keyboard/mouse and the Type 7 keyboard and mouse?
The Type 7 keyboard is the new USB 2.0 keyboard from Oracle that is ROHS compliant. It has a USB 2.0 hub also integrated. The layout of the keyboard is very similar to the Type 6 keyboard except for the placement of a couple of keys such as Alt and Compose. The mouse is now a 3 button Optical mouse with scroll wheel.
I am using Oracle Solaris 8 on a SPARC system with a Type 6 keyboard. Recently, I plugged in a Oracle Type 7 keyboard and I see error messages during bootup and my keyboard does not work. Is there a workaround?
If you are using a SPARC machine and Type 7 keyboard, please update the OBP(Open Boot Prom) to the latest version for your system by downloading the same from the Oracle website. For most SPARC hardware platforms, the OBP version 4.16 or higher would work well. However, the OBP version for newer T2000 platform would be the l4.16 or latest recommended version for your platform.
We strongly recommend upgrading to Oracle Solaris 10 from Oracle Solaris 8. If, for some reason, an upgrade to Oracle Solaris 10 is not possible for you, in the interim, please update your Oracle Solaris 8 OS installation with the latest required patches and then try connecting the Type 7 keyboard. Refer to question on patches under General Section above for details.
The internal hub of the Type 7 keyboard is a bus-powered hub. It cannot support high-power USB devices like USB hard disks and floppy drives. Please connect only low-power USB devices to it or you may get unexpected results. If you install the latest Oracle Solaris 11 Express build or patches for Solaris 10, high-power devices connected to the Type 7 keyboard will be denied connection due to a new power budget control feature. Refer to the Patch question under General Section above for patch details.
The Type 7 mouse will not function when connected to the USB ports on the Type 7 keyboard with systems that run Oracle Solaris 8. Connect the mice directly to the system's USB port or Upgrade the OS to Oracle Solaris 10.
What is power budget control?
Power budget control is specified in USB spec to limit device connections to a hub to avoid overcurrent condition. A self-powered hub can supply a maximum of 500mA to each port, while a bus-powered hub should only supply a maximum of 100mA to each port. With power budget control, devices consuming power more than 100mA will be denied connection to a bus-powered hub. And two bus-powered hubs are not allowed to be concatenated.
This support is available in Oracle Solaris 10 Update 2 and later builds and in Oracle Solaris 11 Express. It is also available in Oracle Solaris 9 with patch 115553-22 for Sparc systems or patch 115554-21 for x86 systems.
Why doesn't my keyboard function after system halt on my SPARC machine?
Check if your keyboard is connected to a USB 2.0 hub. If it is, then directly connect your keyboard to the USB 1.0 port on the host machine instead of the USB 2.0 port on the hub and check the keyboard functionality.
How to set keyboard layouts explicitly on Oracle Solaris 11 Express ?
Generally, Solaris and Xorg automatically detect your keyboard layout and load the right keytable automatically. But in some cases, the keyboard layout detected by Solaris is not what user desires and this may require some manual settings. For example, when a keyboard is connected to a system via a KVM, it probably reports the keyboard layout different from the layout of the actual keyboard.
To configure the keyboard layout manually, please follow the below instructions to workaround this problem. The following instructions take US layout as an example. For other layout types, please see /usr/X11/share/X11/xkb/xkbtable.map.
For Xorg (v1.5 or later) users, create a fdi file as below:
cat > /etc/hal/fdi/policy/30user/99-x11-keyboard-settings.fdi <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
<!--
Override default keyboard layout (with us layout). For available
XKB models
and layout, see /usr/X11/share/X11/xkb/xkbtable.map
-->
<device>
<match key="info.capabilities" contains="input.keyboard">
<merge key="input.x11_options.XkbModel" type="string">sun_type6_usb</merge>
<merge key="input.x11_options.XkbLayout" type="string">us</merge>
</match>
</device>
</deviceinfo>
EOF
After the fdi file is configured, restart HAL daemon so the layout settings take effect (for Xorg) :
svcadm restart hal
For more information on how to write .fdi files, please see this link: Heads-Up: Xorg 1.5 integration to nv_107 http://opensolaris.org/jive/thread.jspa?threadID=89998&tstart=135
For console users, run the command line (kbd -s) to configure the keyboard layout. Then run (loadkeys) to load the keytable and set the layout name to eeprom to restore the configuration. eeprom keyboard-layout=US-English
USB Audio:
Which USB audio devices are supported ?
USB Audio drivers implement a subset of the 1.0 USB audio spec. Generally, simple USB audio devices compliant to USB audio spec 1.0 on www.usb.org work well with Solaris 10 or later. However, USB audio devices usually have a very short shelf life and many devices that the Solaris USB audio driver supports are no longer available. One exception is the Griffin iMic Audio adapter. Check out http://www.griffintechnology.com/. Some Logitech audio devices have also been reported to work.
If I am using Gnome, I cannot hot remove USB audio devices. The port does not get freed up and has become unusable.
gnome-settings and mixer-applet keep /dev/audio open and prevent the complete removal of the internal data structures related to USB audio devices. A workaround is to exit gnome or reboot (remove the device when the system is down and do a reconfiguration boot. You may also want to do a devfsadm -C to clean up).
USB Video:
Are USB webcams supported?
With Oracle Solaris 11 Express the USB video class driver usbvc(7D) was integrated into Solaris. That is, if a user plugs a USB webcam that is compliant to the USB video class spec from usb.org, then the webcam will plug and play on Solaris. See the usbvc(7D) man page for more information. In Oracle Solaris 11 Express, the Ekiga video plugin is also integrated. It is a video conferencing application, supporting H323 and SIP protocol.
A list of USB webcams known to work with Solaris can be found at: http://blogs.sun.com/colin/entry/usb_webcams_and_video_conferencing and http://www.oracle.com/technetwork/server-storage/solaris/overview/usb-faq-140616.html
IEEE 1394 digital cameras can also be used in other releases.
Where can I find more information on using Ekiga?
See the official FAQ at http://www.ekiga.org/faq/
USB Storage:
Where do I find documentation related to USB Storage devices ?
Solaris System Administration Guide and refer to FAQ #8 in the General Section above.
Can I use ZFS on USB disks?
Refer to the ZFS blog at : http://blogs.sun.com/artem/entry/zfs_on_the_go.
Also, there is a ZFS demo at: http://www.opensolaris.org/os/community/zfs/demos/basics/
USB 2.0 support for ZFS has been enabled in Solaris 10 Update 2 and OpenSolaris. USB 1.1 support for ZFS is only available in OpenSolaris now. Do not hot-remove a USB disk with non-replicated ZFS filesystem when I/O operations are going on.
What is vold?
Vold is a system daemon to manage removable media devices and can automatically mount filesystems on these devices. All USB Mass storage devices are treated as removable media devices. Please install the latest vold patch (see the General section above for patch numbers) to make vold hotplug aware. In earlier Solaris Express and Solaris 10 update releases, vold is an SMF service, refer to vold(1M) and volfs(7FS) for details. The latest OpenSolaris releases has new volume manager support and vold has been eliminated.
vold has been replaced by a new framework based on opensource HAL, a.k.a. the tamarack project, in OpenSolaris. What has changed?
Refer to the project webpage at http://opensolaris.org/os/project/tamarack/
I could not format my USB 2.0 hard disk using Solaris 9. What could be the problem?
Check if vold is enabled. Kill/Stop vold and then run the format command
/etc/init.d/volmgt stop
format -e (for Solaris 8 or Solaris 9 )
rmformat (on Solaris 10)
(For labeling and partitioning, use rmformat -b and -s, respectively)
What documentation is available ?
15851 VOLD: JAZ and ZIP Drives
72293 How to Mount or Unmount a USB Mass Storage Device without VOLD
76690 How to Format a USB Hard Drive for FAT32
76911 How to create a Solaris UFS file system on a USB hard drive.
78712 How to Configure an External USB 80GB Hard Drive with Solaris 10
79386 Can I use a SanDisk Cruzer Mini USB 2.0 Flash Drive with Solaris?
79953 Sun Ray Server thin client: Troubleshooting USB Mass Storage
80336 Sun Ray ultra-thin clients and Sun Ray Server Software 3.0: Connecting USB devices
80370 Does Solaris support 1Tb (terabyte) external usb hard drives?
81117 How to configure a usb Iomega 750mb Zip drive for Solaris
85537 USB devices does not work on Sun Fire T2000
86383 How to hotplug usb mass storage devices without rebooting system
88588 How to disable Sun Ray USB storage
I have a disk that has a pcfs format. I cannot mount this disk. I was able to mount non-pcfs disks on the same machine. What is the problem with the pcfs disk?
On x86 machine, run the following commands to access pcfs disk type.
/etc/init.d/volmgt stop
format -e or rmformat
mount -F pcfs /dev/dsk/c2t0d0p0:c /mnt
On SPARC machine, run the following commands to access pcfs disk type.
/etc/init.d/volmgt stop
format -e or rmformat
mount -F pcfs /dev/dsk/c1t0d0s2:c /mnt
If the disk is not partitioned, leave the ":c" out.
I only get about 10 MB/sec for usb2.0 hard disks. Is there a way to improve performance?
This is not unusual. Some drives get closer to 15MB/sec which is the best ehci(7D) and scsa2usb(7D) can do.
Vold does not mount my memory stick with pcfs filesystem on it. What is the problem ?
Try to mount it manually
# mount -F pcfs /dev/dsk/c2t0d0s2:c /mnt
# mount -F pcfs /dev/dsk/c2t0d0p0:c /mnt
When I mount a pcfs disk, I have to specify "p0:c" on an x86 machine. What does the "p0:c" stand for?
p0 is the entire disk, including the boot sectors and all the partitions. The p1-p4 are the four possible fdisk partitions. Internally these are the 16th-20th positions in the slice table for the disk.This allows you to do a newfs on p0 and use the entire disk as a file system. The p0:M method is handled within the pcfs code, where 'M' is 'c' for a primary FAT partition and 'd'-'z' for logical FAT partitions within an extended partition.
How do I mount my iPod?
Use -o hidden option:
mount -F pcfs -o hidden /dev/dsk/c5t0d0s0:1 /ipod
My Lacie disk sometimes gives "connection failure" but then works fine.
We have noticed this on some Lacie disks. The device will always fail the first enumeration while it is spinning up. Check http://www.oracle.com/technetwork/server-storage/solaris/overview/usb-faq-140616.html for list of verified Lacie disks.
Does Solaris support NTFS?
No, not at this time. There is a project to port FUSE to Solaris, which will add support for NTFS. See http://opensolaris.org/os/project/fuse/
I am using the cdrw utility. However, I am unable to write DVDs on my USB DVD writer although it enumerates.
The cdrw utility has been reported to have some problems on some USB DVD drives. Particularly some older Plextor drives do not work with cdrw. Internal drives from vendors such as Lite-On, Pioneer, Toshiba, TEAC and ASUS are known to work well. Model numbers for products from some of these vendors are listed on http://www.oracle.com/technetwork/server-storage/solaris/overview/usb-faq-140616.html. You can also try cdrecord which is available on the companion CD that comes with the installation kit for Solaris. Also check out http://www.blastwave.org for more details regarding cdrecord. Solaris 10 Update 2 and OpenSolaris releases include cdrecord.
I tried rmformat to check my CD RW drive connection but it does not show all devices if vold is running. Why is this happening?
Check if there is media in your device (for DVD RW or CD RW drives). vold will not show devices if there is no media so rmformat does not show them either (this was fixed in a kernel patch (118833-17 (SPARC) and 118855-19 (x86)).
rmformat does not show my complete 1 TB Lacie disk capacity in Oracle Solaris 9. Why?
Install the latest patch updates or try connecting to a system with latest Solaris 10 update. (Refer to General questions section for patch details). This should resolve the issue. On Solaris 9, this is a known bug. Check with usb-help@sun.com
I have tried to access my storage devices through vold but the device is not recognised. How can I access my device?
There have been problems reported when a storage device is accessed using vold. Vold is not hotplug aware in Oracle Solaris 8 and 9. In the short term (until the vold problems are resolved), it is better to disable or kill vold and access your storage device through commands like format etc. which will show the hard disks or storage devices that have been recognised by Solaris. Refer to the man page scsa2usb(7D) for details and work-around.
How do I find my memory sticks on Solaris 8, Solaris 9, Solaris 10 if I do not run vold?
On Oracle Solaris 8, Solaris 9, use the command cfgadm, and check /dev/dsk entries. On Solaris 10 use the command rmformat.
I tried an USB memory stick from a colleague and it worked "as-is" without trouble. Then I tried a different memory stick that I bought and this new one is even not recognized by the kernel.
We have noticed this before. If you do a prtconf -v of the working with the non working devices, compare the following lines:
storage, instance #3..
Hardware properties:...
name='usb-product-name' type=string items=1
value='USB 2.0 Storage Device'..
name='usb-revision-id' type=int items=1
value=00000103
name='usb-product-id' type=int items=1
value=00005621
name='usb-vendor-id' type=int items=1
value=00000402
In Solaris 10, in the file /kernel/drv/scsa2usb.conf, enable the following:
attribute-override-list = "vid=* reduced-cmd-support=true";
and reboot the system.
When vold tries to mount my 200GB pcfs file system it hangs for a long time. The same when I manually mount it.
Check the device with the latest OpenSolaris release and if the problem persists, please report to usb-help@sun.com.
On my Solaris 10 system (S10_74L2A), the IOMEGA REV drive shows up as READ only. How do I access the drive?
This bug is a known bug that has been fixed in OpenSolaris and Solaris 10 Update 2 or later.
How do I create a pcfs FAT32 filesystem on my USB memory stick?
# /etc/init.d/volmgt stop
# rmformat (to find the device, assume it is /dev/rdsk/c4t0d0p0)
Zero out fdisk table:
# dd if=/dev/zero of=/dev/rdsk/c4t0d0p0 count=16
# mkfs -F pcfs -o fat=32 /dev/rdsk/c6t0d0p0:c
# mount -F pcfs /dev/dsk/c4t0d0p1 /mnt
How do I get vold to mount read-only?
# /etc/init.d/volmgt stop
/etc/rmmount.conf currently has:
mount * hsfs udfs ufs -o nosuid
Change this to:
mount * hsfs udfs ufs -o nosuid,ro
Change in /etc/vold.conf:
use cdrom drive /dev/rdsk/c*s2 dev_cdrom.so cdrom%d mode=0400
use flopyy drive /dev/rdiskette[0-9] dev_floppy.so floppy%d mode=0x400
use rmdisk drive /dev/rdsk/c*s2 dev_rmdisk%d mode=0400
# /etc/init.d/volmgt start
How do I newfs a very large disk? I am getting errors.
# /etc/init.d/volmgt stop
# rmformat (to find the disk, assume c4t0d0s0 (sparc))
# newfs -T /dev/rdsk/c4t0d0s0
Can I use a single filesystem on a drive that is larger than 1TB?
PSARC 2008/336 added the plus1TB project to support booting on disks > 1 TB. This makes it possible to use UFS or pcfs on drives up to 2TB in size on systems running a 64 bit kernel. This Feature is available in the OpenSolaris 2008.11 release and will be in a future update of Solaris 10. For systems running older releases of Solaris 10 or Solaris 11 Express, you can use the entire drive as a ZFS volume instead.
Can I put ufs on other partitions than p0?
No, only p0 is supported for ufs.
I have a USB hard disk and it is treated like a removable media. I want it to be treated like a normal hard disk.
In scsa2usb.conf, set removable=false for the vid and pid of this disk and reboot. With tamarack, this is no longer required. Please refer to details under vold replacement questions above.
cdrecord is part of Solaris 10 update 2 and later update releases installed in /usr/bin.
growisofs() is now part of Solaris 10 Update 2 and later update releases and installed in /usr/bin.
There are many "tran_err" and "timeout" errors in /var/adm/messages when I am using a USB disk. What could be the problem?
It always happens when the system has insufficient RAM installed. The fix for USB 2.0 is in Solaris 10 update 2 and Solaris 11 Express. The fix for USB 1.1 devices is in OpenSolaris releases.
Can U3 devices such as the Memorex TravelDrive be used on Solaris?
Yes, a U3 device should be usable as a flash drive on Solaris, but there might be compatibility issues for some devices. U3 smart software feature is Windows specific and not meaningful to Solaris. It is expected that a U3 device will present on Solaris an extra cdrom drive. The cdrom drive contains Windows specific software that are not relevant to Solaris.
USB Printers:
I can't get my USB printer to work.
Refer to http://opensolaris.org/os/community/printing/faq
Automatic Printer Discovery was introduced in OpenSolaris and can be used to manage USB printers. For more information on this see the System Administration Guide at: http://docs.sun.com/app/docs/doc/819-7761/printdesktop-1.
USB Digital Cameras:
How do I use my digital camera with Solaris?
Digital cameras usually fall into two classes, the USB mass-storage class (class8) or the still-image class (class6). Check the "compatible" name in prtconf -v output for the class of your digital camera.
If a digital camera falls in the mass-storage class, it can be supported by the native scsa2usb driver and used as a disk drive. Just plug it in and vold will mount it. If you are running Solaris 10, you may need to stop and start vold. This has been fixed in Solaris 10 Update 1 and later releases.
If a digital camera falls in the still-image class, it can be supported by ugen driver and userland applications. If you are using Solaris 10 update 2 (or later releases), ugen nodes will be created by default for digital camera devices and libusb should just work. There is no need to manually bind ugen driver. You can use gphoto or gtkam to view the pictures immediately after you plug in the device. But if you are using earlier Solaris 10 release, you need to check if the device is bound to ugen driver first. If not, bind it manually and then use gphoto or gtkam to view the pictures. Refer to libusb(3LIB) and ugen(7D) man pages.
Isn't there a quick setup for gphoto?
There is a way to bind ugen driver to devices with no class drivers by default. But, this is no longer necessary in latest Solaris 11 Express or Solaris 10 Update 2 (and later) releases.
# add_drv -m '* 0666 root sys' ugen
devfsadm: driver failed to attach: ugen
Warning: Driver (ugen) successfully added to system but failed to attach
# echo "ugen-default-binding=\"device\";" >> /kernel/drv/uhci.conf
# echo "ugen-default-binding=\"device\";" >> /kernel/drv/ehci.conf
# echo "ugen-default-binding=\"device\";" >> /kernel/drv/ohci.conf
reboot (sorry)
plug in your camera:
% prtconf -D | grep ugen
device, instance #0 (driver name: ugen)
% /usr/demo/jds/bin/gphoto2 --auto-detect
Model Port
----------------------------------------------------------
Canon PowerShot S110 usb:
% cd /tmp
% /usr/demo/jds/bin/gphoto2 --get-all-thumbnails
Detected a 'Canon:PowerShot S110'.
Downloading 'IMG_2207.JPG' from folder '/DCIM/122CANON'...
Downloading 'IMG_2207.JPG' from folder '/DCIM/
122CANON'...
Saving file as thumb_IMG_2207.jpg
Downloading 'IMG_2208.JPG' from folder '/DCIM/122CANON'.
..
Downloading 'IMG_2208.JPG' from folder '/DCIM/122CANON'...
Saving file as thumb_IMG_2208.jpg
alternatively, use gtkam, select your camera and view the pictures (This is a gui).
% /usr/demo/jds/bin/gtkam
A few notes:
The ugen default binding may bind other USB devices to ugen as well such as composite devices (eg. USB serial, USB audio). However, if you are only using USB memory stick/readers and digital camera, this should be fine. Also some KVMs present a composite device model and will stop working if you use the ugen default binding hack. (in prtconf, you will see "device" node with multiple children, sometimes named "interface").
In Solaris Express, gphoto and gtkam are in /usr/sfw/bin or /usr/bin and there is no need to stop vold unless you are deleting pictures while vold has the camera mounted. In latest Oracle Solaris11 Express or Solaris 10 Update 2, ugen nodes will be created by default for digital camera devices and libusb should just work. There is no need to manually bind ugen driver.
There is an interesting blog, 'gtkam on solaris 10' at http://blogs.sun.com/dp/entry/gtkam_usb_on_solaris_10
Other interesting blogs are: http://technopark02.blogspot.com/2005/06/solaris-10-usb-digital-camera-howto.html and
http://www.cuddletech.com/blog/pivot/entry.php?id=231
My Sony digital camera is a USB mass-storage class device. Why does it fail to attach scsa2usb driver?
Edit /kernel/drv/scsa2usb.conf, and enable the following:
attribute-override-list = "vid=0x54c pid=0x10 rev=* subclass=ufi protocol=cb";
USB Scanner:
Can I use a USB scanner on Solaris ?
Yes, you can on OpenSolaris. See sane(7), xsane(1), scanimage(1), xscanimage(1) on OpenSolaris. For other Solaris versions, refer to libusb(3LIB) and libusb.txt.
USB Floppy:
Can I use a USB floppy on Solaris ?
Yes, but it will show up as a (very small) scsi disk. check /dev/dsk/c... nodes. There are no /dev/diskette nodes for usb floppy.
If the floppy has no filesystem, do the following.
# /etc/init.d/volmgt stop
Plug in the device and run rmformat(1M). It will show you the device node for the USB floppy. Assume it is /dev/rdsk/c4t0d0p0 (x86).
# mkfs -F pcfs -o nofdisk,size=2800 /dev/rdsk/c4t0d0p0
# mount -F pcfs /dev/dsk/c4t0d0p0:c /mnt
Why doesn't rmformat -F work to format my USB floppy diskette?
Low-level format failure on some USB devices has been reported. Please use pre-formatted floppies. You may want to create new filesystems using newfs / mkfs instead of formatting.
USB to Serial:
Which USB to Serial device can I use with Solaris ?
Solaris supports Digi InsideOut Networks' devices and recently, KeySpan and Prolific chipset based devices' support were also integrated to Solaris. Keyspan and Prolific USB serial drivers are available in Oracle Solaris 11 Express and in Solaris 10 Update 2 and later. PL2303 chip based adapters and Keyspan USA-19HS adapter are available as part of Solaris 10 Update 2.
Keyspan USA-49WLC adapter is supported in Solaris 11 Express and will be available in Solaris 10 update 3. For Digi InsideOut Networks devices, please check the FAQs for Solaris posted at: http://www.digi.com/pdf/faq_ep_sun.pdf
Some new USB to Serial Edgeport device from Digi InsideOut Networks do not work with installed Solaris 8, 9 and 10 releases. There are a variety of Edgeport devices being used by Solaris users. Most of the older devices and many of the new devices are now supported by Solaris.
Devices that are verified on the latest USB to serial drivers for Solaris 8 (on SPARC only) , Solaris 9, and Solaris 10 are: Edgeport/1, Edgeport/2, Edgeport/4, Edgeport/421, Edgeport/416.
The devices currently reported to have issues are: Edgeport/2c, Edgeport/22c.
For other Edgeport devices, contact Digi/IO Networks if interested.Please install the latest relevant patches (Refer to General section for patch details) and then try using the device.
The following devices are known to work under Opensolaris with the usbftdi(7D) driver.
Vendor: Future Technology Devices Model Name: 8U232AM Serial Vendor Id: "403,6001" Vendor: Future Technology Devices Model Name: SEMC DSS-20 SyncStation Vendor Id: "403,fc82" Vendor: Future Technology Devices Model Name: Crystalfontz CFA-632 USB LCD Vendor Id: "403,fc08" Vendor: Future Technology Devices Model Name: Crystalfontz CFA-634 USB LCD Vendor Id: "403,fc09" Vendor: Future Technology Devices Model Name: Crystalfontz CFA-633 USB LCD Vendor Id: "403,fc0b" Vendor: Future Technology Devices Model Name: Crystalfontz CFA-631 USB LCD Vendor Id: "403,fc0c" Vendor: Future Technology Devices Model Name: Crystalfontz CFA-635 USB LCD Vendor Id: "403,fc0d" Vendor: Future Technology Devices Model Name: Matrix Orbital USB Serial Vendor Id: "403,fa00" Vendor: Future Technology Devices Model Name: Matrix Orbital MX2 or MX3 Vendor Id: "403,fa01" Vendor: Future Technology Devices Model Name: Matrix Orbital MX4 or MX5 Vendor Id: "403,fa02" Vendor: Future Technology Devices Model Name: Matrix Orbital VK/LK202 Family Vendor Id: "403,fa03" Vendor: Future Technology Devices Model Name: Matrix Orbital VK/LK204 Family Vendor Id: "403,fa04" Vendor: Future Technology Devices Model Name: OpenPort 1.3 Mitsubishi Vendor Id: "403,cc48" Vendor: Future Technology Devices Model Name: OpenPort 1.3 Subaru Vendor Id: "403,cc49" Vendor: Future Technology Devices Model Name: OpenPort 1.3 Universal Vendor Id: "403,cc4a" Vendor: Future Technology Devices Model Name: Expert ISDN Control USB Vendor Id: "403,e888" Vendor: Future Technology Devices Model Name: USB-RS232 OptoBridge Vendor Id: "403,e889" Vendor: Future Technology Devices Model Name: Expert mouseCLOCK USB II Vendor Id: "403,e88a" Vendor: Future Technology Devices Model Name: Precision Clock MSF USB Vendor Id: "403,e88b" Vendor: Future Technology Devices Model Name: Expert mouseCLOCK USB II HBG Vendor Id: "403,e88c" Vendor: SIIG Model Name: Serial Vendor Id: "7cc,0421" Vendor: Intrepid Control Systems Model Name: ValueCAN CAN bus interface Vendor Id: "93c,0601" Vendor: Intrepid Control Systems Model Name: NeoVI Blue vehicle bus interface Vendor Id: "93c,0701" Vendor: B&B Electronics Model Name: RS-422/485 Vendor Id: "856,ac01" Vendor: Melco, Inc Model Name: PC-OP-RS1 RemoteStation Vendor Id: "411,00b3"
Keyspan USA-49WG adapter is supported on OpenSolaris and Solaris10 Update5.
My Edgeport device is based on the latest TI chipset. Are these devices supported under Solaris 10 ?
First, run prtconf -D and check the device id. The device id may look like: usbif1608,1.config1.0 Check the file /etc/driver_aliases if this id exists in it. If it does not, then run the following command as root:
update_drv -a -i "usbif1608,1.config1.0" usbser_edge
I have a USB serial device from Digi InsideOut Networks. It does not work although I have the latest patches and I am using an usb2.0 port (or have usbconf set to USBA1.0 everywhere).
We have noticed that there are some Digi InsideOut Networks devices with firmware that is not compatible with the latest Solaris drivers on Solaris 8 or 9. Devices that had problems on Solaris 9 were found working well with the latest Solaris builds.
I have installed the latest patches on my Solaris 9 installation. My device still does not work.
You may be having the default USBA 0.0 configuration on your USB ports. Run the usbconfig script and select the option to set USBA 1.0 on all ports. Then try to connect. (Refer to question 9 under 'USB General' for details)
We highly recommend you use OpenSolaris or the latest Solaris 10 Update as the support for most of Edgeport devices is much better in current releases. (Refer question 4 under 'USB General' for details regarding Solaris releases)
I have connected my Edgeport device and want to use tip to connect to target machine serially. How can I do this ?
Before running tip, change directory to /dev/cua or /dev/term and check if there are new device entries like 0 1 2 3 etc. (this depends on the number of ports your device has) In the file /etc/remote file you can include all the device and port numbers you wish to access. The significant portion of the /etc/remote file is shown below.
uab:dv=/dev/cua/b:br#2400
dialup1|Dial-up system:\
:pn=2015551212:tc=UNIX-2400:
u0:\
:dv=/dev/cua/0:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D:
u1:\
:dv=/dev/cua/1:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D:
u2:\
:dv=/dev/cua/2:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D:
u3:\
:dv=/dev/cua/3:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D:
u0...u3 are the names with which you will access the Edgeport ports and hence the target machines connected through them. You can rename u0..u3 to names you find convenient. Edit your /etc/remote file to have similar entries. You can connect to the first machine connected to port 0 (or /dev/cua/0) by running
# tip u0
Also, refer to manpage usbser_edge(7D).
I have connected my Edgeport device to my machine but I see messages like "driver not found" and the device does not work. I'm using Solaris 9.
I have two Edgeport 416 connected to a single system, but only 12 serial devices are available to use at a time even though all 32 ports are attaching.
This is a known issue in which there are not enough ehci/ohci resources to support two Edgeport 416 devices. Opening some of the serial devices may return errno 6. A workaround has been discovered by adding the following lines to /etc/system and rebooting the system:
set ohci:ohci_ed_pool_size=200
set ohci:ohci_td_pool_size=400
set ehci:ehci_qh_pool_size=200
set ehci:ehci_qtd_pool_size=400
Can I use a USB modem?
Support for USB modems and ISDN terminal adapters that conform to the Universal Serial Bus Communication Device Class Abstract Control Model (USB CDC ACM) specification was introduced in OpenSolaris. It is also available in Solaris 10 Update 4. See the usbsacm(7D) man page.
It is also possible to use USB serial adapter and a serial modem.
My Digi Edgeport device does not work on Solaris 8 and Solaris 9.
Run usbconfig script and enable USBA1.0 on all hardware
Are there any issues with ehci/uhci drivers I need to be aware of for USB to Serial Edgeport devices?
On Solaris 8 and 9, sometimes ohci/uhci/ehci drivers are loaded too late. For USB serial devices that may cause a panic. The workaround is to edit the file /etc/system and enter the following lines:
forceload: drv/ohci
forceload: drv/uhci
forceload: drv/ehci
forceload: drv/usba10_ohci
forceload: drv/usba10_uhci
forceload: drv/usba10_ehci
(if you have all three controllers)Can I use Keyspan and Prolific USB serial adapters?
Keyspan and Prolific USB serial drivers are available in OpenSolaris and in Solaris 10 Update 2 and later. PL2303 chip based adapters and Keyspan USA-19HS adapter are supported. Keyspan USA-49WLC adapter is supported in OpenSolaris and Solaris 10 Update 3. Prolific PL2303HX (Chip Rev D) is supported in Solaris 10 Update 4.
How do I determine if a usb-to-serial device could be supported by Solaris usbsprl(7D) driver (for Prolific chipset based devices)?
The usbsprl(7D) driver is available in Solaris 10 Update 2 and OpenSolaris.
There are many usb-to-serial devices in the market that are based on Prolific chipsets.
The Solaris usbsprl(7D) driver supports three kinds of Prolific chip sets: PL2303H, PL2303HX and PL2303X. These devices might have different vendor ids or product ids, for example, the ids of ATEN's UC-232A USB-to-serial (557,2008) are different with the ones from Prolific (67b,2303). For unknown devices, if they don't work by just plugging to the box, there is a way to determine if they could work with usbsprl driver. Plug the device and find out the vendor/product ids by looking for "usb" and the device related strings in the output of prtconf(1M):
Use update_drv(1M) to bind usbsprl driver to the device
example$ su root
example# update_drv -a -i '"usbxxx,xxx"' usbsprl
Re-plug the device
But this test might trigger unexpected problems, such as incorrect device behavior or system panic in extreme cases, so it is NOT recommended for inexperienced users.
The following devices are known to work.under Solaris 10 with the usbprl driver. (Revision Id could be found from the above output of prtconf(1M) as well.)Vendor: Prolific Model Name: PL2303 Vendor Id: "67b,2003" Vendor: Sitecom Model Name: CN-104 Vendor Id: "6189,2068" Vendor: IOGear Model Name: GUC232A Vendor Id: "557,2008" Vendor: ATEN Model Name: UC-232A Vendor Id: "557,2008" Vendor: ELECOM Model Name: UC-SGT Vendor Id: "56e,5004" Vendor: IO DATA Model Name: USB-RSAQ3 Vendor Id: "67b,aaa2" Vendor: RadioShack Model Name: 6-Ft. (26-183) Vendor Id: "5ad,fba"
Notice:
1. For ATEN UC-232A, the adapter with (Vendor Id,Product Id.Revision Id) equals to "557,2008.1" doesn't work with usbsprl driver.
2. For ELECOM UC-SGT, the adapter with (Vendor Id,Product Id.Revison Id) equals to "56e,5003.1" doesn't work with usbsprl driver.
The following example shows how to use update_drv(1M) to make usbsprl driver support the Sitecom CN-104 device:
example$ su root example# update_drv -a -i '"usb6189,2068"' usbsprlThen re-plug the device.
Are USB to Serial devices with RS-422 interfaces known to work with Solaris ?
Yes. The following RS-422 USB to Serial devices work well with Solaris:
(1)Digi InsideOut Networks Edgeport/1i
(2)Digi InsideOut Networks Edgeport/2i
(3)Digi InsideOut Networks Edgeport/4i
My serial application hangs or I get a tcflush error. What is the fix?
To address this, add the following line to /etc/iu.ap file.
<usb serial driver name> -1 0 ldterm ttcompat
(<usb serial driver name> could be usbsprl, usbsksp or usbser_edge )
Run the following command and ignore error messages :
# autopush -f /etc/iu.ap
Connect USB serial device to the system.
Run the following command to verify ldterm and ttcompat modules have been pushed on top of the usb serial driver:
# strconf < /dev/term/0
The output should look like:
ttcompat
ldterm
<usb serial driver name>
Now, try your application again.
Can I use a USB serial device for console access?
Yes, Prolific based devices are supported by connecting to a uhci host controller on Solaris Express Community Edition Build 43 and later as well as OpenSolaris 2008.05, 2008.11 and 2009.06. Prolific based devices are supported by connecting to an ehci and ohci host controller on Solaris Express Community Edition Build 112 and later. FTDI based devices are supported by connecting to an ehci, ohci and uhci host controller on Solaris Express Community Edition Build 113 and later. See usbsprl(7D) and usbftdi(7D) for more information.
USB Security:
How can security issues be addressed when data is being transferred to or from a USB mass storage device ?
At this time, there are no secure USB commands to transfer data to or from a USB mass storage device. If you are concerned about USB security, please add the following lines to the file /etc/system
exclude: drv/scsa2usb
exclude: drv/usba10_scsa2usb #(For Solaris 8 and Solaris 9)
and then reboot your system.
How do I allow only my current devices but no new USB devices for security purposes?
A usb security script usbsecure.pl is available that can be used for this purpose. There is a README and demo that can be refered to. Download the same from the following url: http://developers.sun.com/prodtech/solaris/driverdev/reference/codesamples/usb_security/index.html
Ugen / Libusb:
How do I use ugen?
Refer to ugen(7D) man page or use libusb(3LIB)
Where can I download the ugen driver for Solaris 8 and Solaris 9.
Install the latest Solaris 8 and 9 patches, and run usbconfig script from http://www.sun.com/bigadmin/scripts/sunScripts/usbconfig.txt. (Refer to question 3 under 'USB General' for more details).
Is libusb supported on Solaris?
Yes. Libusb API support is available for both Solaris and Sun Ray. In Solaris 10, refer to the man pages ugen(7d) and libusb (/usr/sfw/share/doc/libusb/libusb.txt) for details. There is an interesting blog at: http://blogs.sun.com/roller/page/dp/20041223#gtkam_usb_on_solaris_10
I wish to write libusb applications. Where/how do I begin?
Please refer to libusb.txt (Refer to libusb(3LIB) man page).
Ugen and libusb do not support isochronous requests. Is this correct?
Not fully correct, ugen can support isochronous transfer on OpenSolaris, see ugen(7D). However, libusb doesn't support isochronous requests. But you can use OpenUSB if you'd like this feature. OpenUSB is the next generation library to manage USB devices on OpenSolaris. It has much richer interfaces, see libopenusb(3LIB) for more detail.
I want to use ugen but I can't get it to bind.
Using prtconf -v, check the compatible names for the node that you want to bind to. Then check /etc/driver_aliases and make sure that the correct compatible name is in /etc/driver_aliases. Note that quotes (" ") are needed. Also check /etc/name_to_major whether an add_drv ugen is needed (For Solaris 8, Solaris 9, use usba10_ugen) After binding ugen, issue the update_drv command and the unplug the device and re-insert the device (ie., hotplug the device - hotplug can usually resolve binding issues).
In Solaris 10, manual setup of ugen is required. In OpenSolaris and Solaris 10 Update 2 (and later releases), any USB device without a class driver which is bound to usb_mid(7D) driver will export a ugen interface by default and will therefore work with libusb(3LIB). Other drivers that also export ugen interfaces include scsa2usb(7D) and usbprn(7D). So devices bound to these drivers should all work with libusb without manual binding of ugen driver. Refer to the General section for "libusb should just work" patch.
Where are the libusb sources?
The source packages are available in OpenSolaris. Refer to libusb(3LIB), which has a pointer to libusb.txt with source package information.
What permissions do I need to access ugen device nodes?
In Solaris release earlier than Solaris 10 Update 2, when you need to manually bind ugen driver, the device permissions are decided by the -m option used with add_drv command. For example, if you bind ugen driver by
# add_drv -m '* 0666 root sys' ugenIt means the ugen device nodes are owned by root, but are readable and writable by other users. You can access ugen nodes later in any user account. If you bind ugen driver by
# add_drv -m '* 0644 root sys' ugenThen the ugen nodes are only writable by root. If you want to write to the nodes, you need to be root.
In latest OpenSolaris or Solaris 10 Update 2 and later releases, when you no longer bind ugen driver manually, the ugen permissions are given to console login user. So you have to log on console to be able to access the ugen nodes. Refer to logindevperm(4).
Sun Ray USB:
If a USB device is supported on Solaris will it work with Sun Ray as well?
The Sun Ray implementation of USB drivers is different from Solaris implementation. Please download the SRSS 4 for the latest Sun Ray support for USB devices. For device support details check: http://www.sun.com/io_technologies/sunray/sunray-index.html.
Are USB 2.0 devices from Quatech supported ?
Currently only USB 1.1 devices from Quatech are supported. The current Sun Ray driver does not support USB 2.0 on the new Quatech devices SSU2-100, DSU2-100 and QSU2-100.Reporting Problems:
If your problem is not resolved even after reading through this FAQ, please email usb-help@sun.com with the following information:
a) Your usb device and computer details including model number and vendor name.
b) Output logs of the following commands that were run on your machine.
# uname -a
# dmesg
# prtconf -vD
# cat /etc/driver_aliases
# cat /etc/name_to_major
c) Run the following command immediately after you hit upon your usb problem and include the generated log in # echo "::usba_debug_buf" | mdb -k > /tmp/usblog
# echo "::prtusb -vt" |mdb -k >> /tmp/usblog(The ::prtusb dcmd is only available in OpenSolaris and not in earlier releases.)
If the problem is related to libusb, enable libusb debug info by setting the environment variable SUN_LIBUSB_DEBUG to 3 or higher.
Eg: # export SUN_LIBUSB_DEBUG=3and run the application on command line in the same terminal.
For USB mass-storage device problems, please stop vold (refer question 3 and 4 under 'USB Storage' for details) when you are testing and generating debug information. There is a blog containing a dtrace script that may help debugging scsa2usb problems. Dtracing SCSI ( http://blogs.sun.com/chrisg/entry/scsi_d_script)
