1. General Questions
  2. Driver Development Kit
  3. USB Host Controllers
  4. USB Keyboard, Mouse, Hubs
  5. USB Storage
  6. USB to Serial
  7. USB Security
  8. Ugen / Libusb


General questions:

  1. What types of USB devices are supported in Oracle Solaris?

    Refer to usb(7D) man page which lists all bundled USB drivers

  2. What is the latest version of Oracle Solaris and how to get it?

    Oracle Solaris 11 is the latest release of Oracle Solaris - http://www.oracle.com/technetwork/server-storage/solaris/overview/index.html.

  3. 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:
    • if connected to usb1.x port then connect to usb2.0 or vice versa
    • insert a usb1.x or usb2.0 hub
      • if a usb2.0 device is on a usb2.0 port you can force it to usb1.x speed by inserting a usb1.x hub
      • if a 1.x device is on a usb1.x port you can force it to work usb2.0 ehci driver by inserting a usb2.0 hub
    • use better cables
    • use shorter cables

  4. How do I diagnose USB problems?

    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

  5. 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

    # cfgadm -c disconnect usbx/y

    # cfgadm -c configure usbx/y

    # prtconf -D

  6. Can I do soft hotplugging (without physically disconnecting the device)?

    # cfgadm -vl

    # cfgadm -c disconnect usbx/y

    # prtconf -D

    The device node should no longer be listed. Refer to cfgadm_usb(1M).
    (Note: In some cases, the cfgadm disconnect will not make the devices soft hot plugged.)

  7. 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.

    This is applicable only in Oracle Solaris 10; in Oracle Solaris 11 device power management is not supported.

  8. 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.

    If you have an older SPARC machine with USB 1.x ports, possible workarounds are connecting the device to a USB 1.x port 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
  9. I need a USB to PS2 converter. Any suggestions which ones work well?

    We have seen that the Cables Unlimited and SIIG USB to PS2 converters work well.

  10. 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.

  11. I need to extend to 100m or more. how do I use this?

    You can use active cable extenders.

  12. How do I disable all USB ports?

    To enforce security, refer to usbsecure.pl script

    To completely disable USB, you can remove the USB package with the pkgrm command.

  13. How do I configure my USB printer on Oracle Solaris 10?

    On Oracle Solaris 10, you may use print manager, /usr/sbin/printmgr command.

    Or use JDS Java Launch -> Preferences -> Printer Preferences

  14. On Oracle 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.

  15. 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 Oracle Solaris from USB disk, you have to install Oracle 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.
    • 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.

  16. 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.

    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.

  17. 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'
  18. 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.

  19. 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 (Oracle Solaris 10 Update 2 and later) so the device can work with libusb(3LIB).

  20. 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 Oracle Solaris 10 Update 4. See the usbsacm(7D) man page.

  21. What is USB ECM?

    USB CDC-ECM(Communication Device Class - Ethernet Control Model) is a class of device that can exchange Ethernet frame data with the host. CDC-ECM device has a MAC address and is configurable. With usbecm(7D) driver, it is identified by host software as a NIC interface. Users can use standard Oracle Solaris network administration utilities to manage this interface. The USB CDC-ECM device is only found in servers which have ILOM or SP-like remote console. It's kind of a virtual device and is used to provide a high bandwidth connection between host and Service Processors on Oracle platforms.

  22. On which Oracle servers could users make use of this feature?

    USB CDC-ECM device can be found on the newer Oracle servers. This interface provides a high bandwidth link between the host and SP. Oracle Solaris ILOM management tools,such ilomconfig(1M) relies on this interface to manage ILOM on Oracle servers. You can find ECM interface on Oracle SPARC T3/T4 series and oracle X86 X4170/X4270 etc. Users may also find such an interface on other vendor's servers as well.

  23. How can users use this feature, can you provide an example usage?

    Here is an example usage under S10:

    bash-3.2# ifconfig -a
    lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
     inet 127.0.0.1 netmask ff000000 
    igb0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
     inet 10.133.98.67 netmask fffffe00 broadcast 10.133.99.255
     ether 0:21:28:b3:9:f0 
    usbecm0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
        inet 169.254.182.77 netmask ffffff00 broadcast 169.254.255.255
     ether 2:21:28:57:47:17 
    bash-3.2# dladm show-link
    igb0  type: non-vlan mtu: 1500 device: igb0
    igb1  type: non-vlan mtu: 1500 device: igb1
    igb2 type: non-vlan mtu: 1500 device: igb2
    igb3 type: non-vlan mtu: 1500 device: igb3
    usbecm0 type: non-vlan mtu: 1500 device: usbecm0
    bash-3.2# ilomconfig list interconnect
    Interconnect
    ============
    State: enabled
    Type: USB Ethernet
    SP Interconnect IP Address: 169.254.182.76
    Host Interconnect IP Address: 169.254.182.77
    Interconnect Netmask: 255.255.255.0
    SP Interconnect MAC Address: 02:21:28:57:47:16
    Host Interconnect MAC Address: 02:21:28:57:47:17

  24. Where can users find more info about this?

    On Oracle Solaris 11, refer to the man page on usbecm(7D) for more information.

Back to Top

Driver Development Kit:

  1. I need more general documentation on writing drivers.

    The Device Driver Tutorial: http://docs.oracle.com/cd/E19253-01/817-5789/

    This tutorial provides hands-on information about how to develop device drivers for the Oracle 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.oracle.com/cd/E19253-01/816-4854/

    This book provides information on developing drivers for character-oriented devices, block-oriented devices, USB devices, and SCSI target and HBA devices for the Oracle Solaris Operating System. This book discusses how to develop multithreaded reentrant device drivers for all architectures that conform to the Oracle 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 Oracle 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

Back to Top

USB Host Controllers:

  1. 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 can be used before connecting USB 2.0 devices for older SPARC/x64 machines.

  2. 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.

  3. 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.

  4. 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 Oracle Solaris 10 Update 2 and Oracle Solaris 11.

Back to Top

USB Keyboard, Mouse, Hubs:

  1. Can I use multiple mice on Oracle Solaris?

    Multiple keyboards and mice are supported in Oracle Solaris 10 Update 1 and later releases and Oracle Solaris 11.

  2. Can I use multiple keyboards or a bar code scanner on Oracle Solaris?

    A bar code scanner looks to the system just like another keyboard. This is supported in Oracle Solaris 10 Update 1 onwards and in Oracle Solaris 11.

  3. Can I build an extender by cascading hubs?

    You can but it is not recommended cascading beyond 3. Also, self powered hubs are recommended.

  4. Can I use non Oracle keyboards/mice?

    Yes, many (such as Logitech etc.) are known to work but some others may have issues. We recommend you use latest Oracle Solaris 11 which includes bug fixes.

  5. 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.

  6. 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.

  7. My device is not recognized when it is connected to the USB port of the Oracle Type 7 keyboard? And, I see "Connecting device failure" being reported. Why?

    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.

    Connect the mice directly to the system's USB port or Upgrade the OS to Oracle Solaris 10.

  8. 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.

  9. 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.

  10. How to set keyboard layouts explicitly on Oracle Solaris 11 ?

    Generally, Oracle Solaris and Xorg automatically detect your keyboard layout and load the right keytable automatically. But in some cases, the keyboard layout detected by Oracle 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
    svcadm restart gdm
    
    In Oracle Solaris 11, console users can use of the two following methods to configure keyboard layout.

    1. Run 'kSbd -s' in command line, then run `loadkeys` to load keytable. But the layout will not be restored. After reboot, the setting will be lost.

    2. Use kbd(1) tool and system/keymap service(svc:/system/keymap:default). For example, set keyboard layout to "US-English".
         # svccfg -s keymap:default setprop keymap/layout=US-English 
         # svcadm refresh keymap 
         # svcadm restart keymap 
         # kbd -i 
    
    'kbd -s' can list all supported keyboard layout. And in this way, the layout can be set permanently.

Back to Top

USB Storage:

  1. Where do I find documentation related to USB Storage devices?

    Oracle Solaris System Administration Guide and refer to FAQ #8 in the General Section above.

  2. Can I use ZFS on USB disks?

    USB 2.0 support for ZFS has been enabled in Oracle Solaris 10 Update 2 onwards and Oracle Solaris 11. Do not hot-remove a USB disk with non-replicated ZFS filesystem when I/O operations are going on.

  3. 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. In earlier Oracle Solaris 10 update releases, vold is an SMF service, refer to vold(1M) and volfs(7FS) for details.

  4. 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.

  5. 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.

  6. 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

  7. 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.

  8. How do I mount my iPod?

    Use -o hidden option:
    mount -F pcfs -o hidden /dev/dsk/c5t0d0s0:1 /ipod

  9. 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.

  10. On Oracle Solaris 10, 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. You can also try cdrecord which is available on the companion CD that comes with the installation kit for Oracle Solaris. Also check out http://www.blastwave.org for more details regarding cdrecord. Oracle Solaris 10 Update 2 and later update releases include cdrecord.

  11. How do I find my memory sticks on Oracle Solaris 10 and Oracle Solaris 11 if I do not run vold?

    Please use the command: rmformat.

  12. 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 Oracle Solaris 10, in the file /kernel/drv/scsa2usb.conf, enable the following:
    attribute-override-list = "vid=* reduced-cmd-support=true";
    and reboot the system.

  13. 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
    

  14. 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

  15. 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

  16. 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.

  17. Will cdrecord be part of Oracle Solaris?

    cdrecord is part of Oracle Solaris 10 update 2 and later update releases  installed in /usr/bin.

  18. Can I use dvd+rw tools on Oracle Solaris?

    growisofs() is now part of Oracle Solaris 10 Update 2 and later update releases and installed in /usr/bin.

  19. 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 Oracle Solaris 10 update 2 onwards and in Oracle Solaris 11.

  20. Can U3 devices such as the Memorex TravelDrive be used on Oracle Solaris?

    Yes, a U3 device should be usable as a flash drive on Oracle Solaris, but there might be compatibility issues for some devices. U3 smart software feature is Windows specific and not meaningful to Oracle Solaris. It is expected that a U3 device will present on Oracle Solaris an extra cdrom drive. The cdrom drive contains Windows specific software that are not relevant to Oracle Solaris.

Back to Top

USB to Serial:

  1. Which USB to Serial device can I use with Oracle Solaris?

    Oracle Solaris supports Digi InsideOut Networks' devices and recently, KeySpan and Prolific chipset based devices' support were also integrated to Oracle Solaris. Keyspan and Prolific USB serial drivers are available in Oracle Solaris 11 and in Oracle Solaris 10 Update 2 and later. PL2303 chip based adapters and Keyspan USA-19HS adapter are available as part of Oracle Solaris 10 Update 2. Keyspan USA-49WLC adapter is supported in Oracle Solaris 11 and in Oracle Solaris 10 update 3 and later releases.

    Some new USB to Serial Edgeport device from Digi InsideOut Networks do not work with installed Oracle Solaris 10 releases. There are a variety of Edgeport devices being used by Oracle Solaris users. Most of the older devices and many of the new devices are now supported by Oracle Solaris.

    Devices that are verified on the latest USB to serial drivers for Oracle 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.

    Please install the latest Oracle Solaris 10 update release or Oracle Solaris 11 and then try using the device.

    The following devices are known to work under Oracle Solaris 11 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 Solaris 11 and Solaris10 Update5.

  2. My Edgeport device is based on the latest TI chipset. Are these devices supported under Oracle 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
    
    You may want to reboot the machine. Some of the (Eg. latest Edgeport 8 and Edgeport 416) devices based on the latest TI chipset have been reported to not work correctly with the existing Oracle Solaris 10 driver.

  3. What Oracle Solaris version supports most Edgeport devices?

    We highly recommend you use Oracle Solaris 11 or the latest Oracle 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 Oracle Solaris releases)

  4. 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).

  5. 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
  6. 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 Oracle Solaris 10 Update 4. See the usbsacm(7D) man page.

    It is also possible to use USB serial adapter and a serial modem.

  7. Can I use Keyspan and Prolific USB serial adapters?

    Keyspan and Prolific USB serial drivers are available in Oracle Solaris 11 and in Oracle Solaris 10 Update 2 and later. PL2303 chip based adapters and Keyspan USA-19HS adapter are supported. Keyspan USA-49WLC adapter is supported in Oracle Solaris 10 Update 3 and Oracle Solaris 11. Prolific PL2303HX (Chip Rev D) is supported in Oracle Solaris 10 Update 4 and Oracle Solaris 11.

  8. How do I determine if a usb-to-serial device could be supported by Oracle Solaris usbsprl(7D) driver (for Prolific chipset based devices)?

    The usbsprl(7D) driver is available in Oracle Solaris 10 Update 2 and Oracle Solaris 11.

    There are many usb-to-serial devices in the market that are based on Prolific chipsets. The Oracle 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):
    example$ prtconf -v 
    
    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 Oracle 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"' usbsprl
    
    Then re-plug the device.

  9. Are USB to Serial devices with RS-422 interfaces known to work with Oracle Solaris?

    Yes. The following RS-422 USB to Serial devices work well with Oracle Solaris:
    (1)Digi InsideOut Networks Edgeport/1i 
    (2)Digi InsideOut Networks Edgeport/2i 
    (3)Digi InsideOut Networks Edgeport/4i
    
  10. 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.

  11. Can I use a USB serial device for console access?

    Yes, Prolific based devices are supported by connecting to a uhci host controller on Oracle Solaris 11 . Prolific based devices are supported by connecting to an ehci and ohci host controller on Oracle Solaris 11. FTDI based devices are supported by connecting to an ehci, ohci and uhci host controller on Oracle Solaris 11. See usbsprl(7D) and usbftdi(7D) for more information.

Back to Top

USB Security:

  1. 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               
    
    and then reboot your system.

  2. 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.

Back to Top

Ugen / Libusb:

  1. How do I use ugen?

    Refer to ugen(7D) man page or use libusb(3LIB)

  2. Is libusb supported on Oracle Solaris?

    Yes. Libusb API support is available for both Oracle Solaris and Sun Ray. In Oracle Solaris 10, refer to the man pages ugen(7d) and libusb (/usr/sfw/share/doc/libusb/libusb.txt) for details.

  3. I wish to write libusb applications. Where/how do I begin?

    Please refer to libusb.txt (Refer to libusb(3LIB) man page).

  4. 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 . 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 Oracle Solaris 10, manual setup of ugen is required. In Oracle Solaris 11 and Oracle 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.

  5. Where are the libusb sources?

    The source packages are available in Oracle Solaris 11. Refer to libusb(3LIB), which has a pointer to libusb.txt with source package information.

  6. What permissions do I need to access ugen device nodes?

    In Oracle Solaris release earlier than Oracle 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' ugen
    
    It 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' ugen
    
    Then the ugen nodes are only writable by root. If you want to write to the nodes, you need to be root.

    In latest Oracle Solaris 11 or Oracle 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).
Back to Top
Left Curve
System Administrator
Right Curve
Left Curve
Developer and ISVs
Right Curve
Left Curve
Related Products
Right Curve