可以在正在运行的系统中添加或移除 USB 设备,而不必使用 cfgadm 命令。但是,cfgadm 命令可用于对 USB 设备执行逻辑热插拔操作。在逻辑热插拔操作过程中,不必以物理方式操作设备。因此,可以远程禁用或复位不工作的 USB 设备,而不必移除设备本身。cfgadm 命令还可用于显示 USB 设备树(包括制造商和产品信息)。
cfgadm 命令在 USB 设备上的工作方式与其他可热插拔设备相同。有关该命令的工作方式的更多概念信息和概述信息,请参见Chapter 2, 动态配置设备中的相关各节。
以下 cfgadm 命令适用于包括 USB 设备在内的所有设备。请参见Chapter 2, 动态配置设备中的详细信息:
显示有关设备的信息。
配置或取消配置设备。
连接设备或断开设备连接。
对 USB 设备执行逻辑操作。此命令特定于 USB 设备。
以下示例显示了如何使用 cfgadm 命令对 USB 设备执行热插拔操作。输出样例仅显示与 USB 设备相关的信息。实际的命令输出取决于系统上的设备。
示例 13-3 显示 USB 总线信息$ 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.5.1 为例,您可以从输出获取以下信息:
usb0 指的是第一个 USB 控制器。
设备名称后以句点分隔的 3 个数字指示系统中包括一个根集线器和 2 个外部集线器。
第一个数字指的是控制器根集线器的端口 4。
第二个数字指的是第一级外部集线器的端口 5。
第三个数字指的是第二级外部集线器的端口 1。
请注意,在执行实际热插拔步骤前后显示有关系统设备的信息是一种有益的做法。这些信息可提供以下帮助:
可以正确识别要动态重新配置的总线或设备。
可以根据总线或设备的状态验证重新配置是否成功完成。
还可以定制要针对某个 USB 设备显示的特定信息。以下示例提供有关设备的完整信息。
$ 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示例 13-4 取消配置 USB 设备
可以取消配置 USB 设备并使其仍保持与系统的物理连接。该设备将继续包含在 prtconf 命令输出中。但是,没有任何驱动程序会附加到该设备。
# 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 # cfgadm -l 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 okDevice is unconfigured.示例 13-5 配置 USB 设备
# cfgadm -c configure usb0/4.7 # cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 usb-storage connected configured ok示例 13-6 以逻辑方式断开 USB 设备连接
在本示例中,USB 设备仍保持与系统的物理连接。但是,该设备在以逻辑方式断开连接后变为不可用。prtconf 命令会将此设备包含在输出中。
# cfgadm -c disconnect -y usb0/4.7 # cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 unknown disconnected unconfigured okThe device is disconnected and becomes unavailable.示例 13-7 以逻辑方式连接 USB 设备
无需实际接触 USB 设备即可远程连接该设备。但是,要使逻辑连接成功,设备必须以物理方式连接到系统。
# cfgadm -c configure usb0/4.7 # cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 usb-storage connected configured okThe device is connected and becomes available.示例 13-8 以逻辑方式断开 USB 设备子树连接
# cfgadm -c disconnect -y usb0/4 # cfgadm usb0/4 Ap_Id Type Receptacle Occupant Condition usb0/4 unknown disconnected unconfigured okAll devices under port 4 of the hub are disconnected.示例 13-9 复位 USB 设备
复位设备会先移除再重新创建该设备。可以复位行为异常的设备。本示例假定设备不在使用中。如果任何应用程序正在使用该设备,复位将失败。
# cfgadm -x usb_reset -y usb0/4.7 # cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 usb-storage connected configured ok