Refer to usb(7D) man page which lists all bundled USB drivers
Oracle Solaris 11 is the latest release of Oracle Solaris.
Often the root cause is that the device is not USB spec compliant but there are a few things to check:
use better cables
use shorter cables
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
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
# 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.)
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.
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
We have seen that the Cables Unlimited and SIIG USB to PS2 converters work well.
It may with most devices but may be flaky with bus-powered devices such as the Oracle mouse.
You can use active cable extenders.
To enforce security, refer to usbsecure.pl script
To completely disable USB, you can remove the USB package with the pkgrm command.
On Oracle Solaris 10, you may use print manager, /usr/sbin/printmgr command.
Or use JDS Java Launch -> Preferences -> Printer Preferences
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.
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:
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 . Hit return on Boot Device Priority  and hit return again with the 1st Boot Device selected . You should see your USB device listed. Highlight it and press enter, then F10 to Save and Exit . 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 . 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 . On many 1U-based Oracle servers with internal slots, the bottom port is inactive. Use the top port for your USB device.
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.
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).
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.
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.
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.
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
On Oracle Solaris 11, refer to the man page on usbecm(7D) for more information.
The Device Driver Tutorial: https://docs.oracle.com/cd/E37838_01/html/E61062/fgomr.html
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: https://docs.oracle.com/cd/37838_01html/E61061/index.html
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.
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.
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.
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 Oracle Solaris 10 Update 2 and Oracle Solaris 11.
Multiple keyboards and mice are supported in Oracle Solaris 10 Update 1 and later releases and Oracle Solaris 11.
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.
You can but it is not recommended cascading beyond 3. Also, self powered hubs are recommended.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Oracle Solaris System Administration Guide and refer to FAQ #8 in the General Section above.
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.
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.
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.
This is not unusual. Some drives get closer to 15MB/sec which is the best ehci(7D) and scsa2usb(7D) can do.
Try to mount it manually
# mount -F pcfs /dev/dsk/c2t0d0s2:c /mnt # mount -F pcfs /dev/dsk/c2t0d0p0:c /mnt
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.
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.
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.
Please 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 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.
# /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
# /etc/init.d/volmgt stop # rmformat (to find the disk, assume c4t0d0s0 (sparc)) # newfs -T /dev/rdsk/c4t0d0s0
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 Oracle Solaris 10 update 2 and later update releases installed in /usr/bin.
growisofs() is now part of Oracle Solaris 10 Update 2 and later update releases and installed in /usr/bin.
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.
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.
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.
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
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)
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 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
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.
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.
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"
For ATEN UC-232A, the adapter with (Vendor Id,Product Id.Revision Id) equals to "557,2008.1" doesn't work with usbsprl driver.
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.
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
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.
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.
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
and then reboot your system.
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.
Refer to ugen(7D) man page or use libusb(3LIB)
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.
Please refer to libusb.txt (Refer to libusb(3LIB) man page).
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.
The source packages are available in Oracle Solaris 11. Refer to libusb(3LIB), which has a pointer to libusb.txt with source package information.
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).