You can add and remove a USB device from a running system without using the cfgadm command. However, a USB device can also be logically hot-plugged without physically removing the device. This scenario is convenient when you are working remotely and you need to disable or reset a non-functioning USB device. The cfgadm command also provides a way to display the USB device tree including manufacturer and product information.
The cfgadm command displays information about attachment points, which are locations in the system where dynamic reconfiguration operations can occur. An attachment point consists of:
An occupant, which represents a hardware resource, such as a USB device, that might be configured into the system, and
A receptacle, which is the location that accepts the occupant, such as a USB port.
Attachment points are represented by logical and physical attachment point IDs (Ap_Ids). The physical Ap_Id is the physical pathname of the attachment point. The logical Ap_Id is a user-friendly alternative for the physical Ap_Id. For more information on Ap_Ids, see cfgadm_usb(1M).
The cfgadm command provides the following USB device status information.
Receptacle State |
Description |
---|---|
empty/unconfigured |
The device is not physically connected. |
disconnected/unconfigured |
The device is logically disconnected and unavailable, even though the device could still be physically connected. |
connected/unconfigured |
The device is logically connected, but unavailable. The device is visible in prtconf output. |
connected/configured |
The device is connected and available. |
The following sections describe how to hot-plug a USB device through the software with the cfgadm command. All of the sample USB device information in these sections has been truncated to focus on relevant information.
Use the cfgadm command to display USB bus information. For example:
% cfgadm Ap_Id Type Receptacle Occupant Condition usb0/4.5 usb-hub connected configured ok usb0/4.5.1 usb-device connected configured ok usb0/4.5.2 usb-printer connected configured ok usb0/4.5.3 usb-mouse connected configured ok usb0/4.5.4 usb-device connected configured ok usb0/4.5.5 usb-storage connected configured ok usb0/4.5.6 usb-communi connected configured ok usb0/4.5.7 unknown empty unconfigured ok usb0/4.6 usb-storage connected configured ok usb0/4.7 usb-storage connected configured ok |
In the preceding example, usb0/4.5.1 identifies a device connected to port 1 of the second-level external hub, which is connected to port 5 of first-level external hub, which is connected to the first USB controller's root hub, port 4.
Use the following cfgadm command to display specific USB device information. For example:
% cfgadm -l -s "cols=ap_id:info" Ap_Id Information usb0/4.5.1 Mfg: Inside Out Networks Product: Edgeport/421 NConfigs: 1 Config: 0 : ... usb0/4.5.2 Mfg: <undef> Product: <undef> NConfigs: 1 Config: 0 ... usb0/4.5.3 Mfg: Mitsumi Product: Apple USB Mouse NConfigs: 1 Config: 0 ... usb0/4.5.4 Mfg: NMB Product: NMB USB KB/PS2 M NConfigs: 1 Config: 0 usb0/4.5.5 Mfg: Hagiwara Sys-Com Product: SmartMedia R/W NConfigs: 1 Config: 0 : ... usb0/4.5.6 Mfg: 3Com Inc. Product: U.S.Robotics 56000 Voice USB Modem NConfigs: 2 ... usb0/4.5.7 usb0/4.6 Mfg: Iomega Product: USB Zip 250 NConfigs: 1 Config: 0 : Default usb0/4.7 Mfg: Iomega Product: USB Zip 100 NConfigs: 1 Config: 0 : Default |
For examples of using the prtconf command to display USB configuration information, see How to Display USB Device Information (prtconf).
You can unconfigure a USB device that is still physically connected to the system, but a driver will never attach to it. Note that a USB device remains in the prtconf output even after that device is unconfigured.
Become superuser.
Unconfigure the USB device.
# cfgadm -c unconfigure usb0/4.7 Unconfigure the device: /devices/pci@8,700000/usb@5,3/hub@4:4.7 This operation will suspend activity on the USB device Continue (yes/no)? y |
Verify that the device is unconfigured.
# cfgadm Ap_Id Type Receptacle Occupant Condition usb0/4.5 usb-hub connected configured ok usb0/4.5.1 usb-device connected configured ok usb0/4.5.2 usb-printer connected configured ok usb0/4.5.3 usb-mouse connected configured ok usb0/4.5.4 usb-device connected configured ok usb0/4.5.5 usb-storage connected configured ok usb0/4.5.6 usb-communi connected configured ok usb0/4.5.7 unknown empty unconfigured ok usb0/4.6 usb-storage connected configured ok usb0/4.7 usb-storage connected unconfigured ok |
Become superuser.
# cfgadm -c configure usb0/4.7 |
Verify that the USB device is configured.
# cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 usb-storage connected configured ok |
If you want to remove a USB device from the system and the prtconf output, but you are not physically near the system, just logically disconnect the USB device. The device is still physically connected, but it is logically disconnected, unusable, and not visible to the system.
Become superuser.
Disconnect a USB device.
# cfgadm -c disconnect -y usb0/4.7 |
Verify that the device is disconnected.
# cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 unknown disconnected unconfigured ok |
Use this procedure to logically connect a USB device that was previously logically disconnected or unconfigured.
Become superuser.
# cfgadm -c configure usb0/4.7 |
Verify that the device is connected.
# cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 usb-storage connected configured ok |
The device is now available and visible to the system.
Use this procedure to disconnect a USB device subtree, which is the hierarchy (or tree) of devices below a hub.
Become superuser.
# cfgadm -c disconnect -y usb0/4 |
Verify that the USB device subtree is disconnected.
# cfgadm usb0/4 Ap_Id Type Receptacle Occupant Condition usb0/4 unknown disconnected unconfigured ok |
If a USB device behaves erratically, use the cfgadm command to reset the device, which logically removes and recreates the device.
Become superuser.
Reset the device.
# cfgadm -x usb_reset -y usb0/4.7 |
Verify that the device is connected.
# cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 usb-storage connected configured ok |
Keep the following in mind when working with multi-configuration USB devices:
A USB device configuration defines how a device presents itself to the operating system. This is different from system device configurations discussed in other cfgadm sections.
Some USB devices support multiple configurations, but only one configuration can be active at a time.
Multi-configuration devices can be identified by examining the cfgadm -lv output. Nconfigs will be greater than 1.
The default USB configuration is configuration 1. The current configuration is reflected in cfgadm -lv output as Config.
Changes to the default configuration will persist across reboots, hot-removes, and reconfiguration of the device, as long as it is reconnected to the same port.
Make sure the device is not in use.
Change the default USB configuration.
For example:
# cfgadm -x usb_config -o config=2 usb0/4 Setting the device: /devices/pci@1f,0/usb@c,3:4 to USB configuration 2 This operation will suspend activity on the USB device Continue (yes/no)? yes |
Verify the device change.
For example:
# cfgadm -lv usb0/4 Ap_Id Receptacle Occupant Condition Information When Type Busy Phys_Id usb0/4 connected unconfigured ok Mfg: Sun 2000 Product: USB-B0B0 aka Robotech With 6 EPPS High Clk Mode NConfigs: 7 Config: 2 : EVAL Board Setup unavailable usb-device n /devices/pci@1f,0/usb@c,3:4 |
Config now shows 2.