跳过导航链接 | |
退出打印视图 | |
![]() |
手册页第 1M 部分:系统管理命令 Oracle Solaris 11 Information Library (简体中文) |
- USB 硬件特定的 cfgadm 命令
/usr/sbin/cfgadm [-f] [-y | -n] [-v] -c function ap_id...
/usr/sbin/cfgadm -f [-y | -n] [-v] [-o hardware_options] -x hardware_function ap_id...
/usr/sbin/cfgadm -v [-a] [-s listing_option] [-l [ap_id | ap_type...]]
/usr/sbin/cfgadm -v -h [ap_id]...
通用串行总线 (Universal Serial Bus, USB) 硬件特定库 /usr/lib/cfgadm/usb.so.1 提供了通过 cfgadm(1M) 命令管理 USB 设备的功能。cfgadm 在挂接点上运行。有关挂接点的详细信息,请参见 cfgadm(1M)。
对于 USB 管理,支持的挂接点只有连接到 USB 总线的集线器的端口。
挂接点通过挂接点 ID (ap_id) 进行命名。USB 总线是分层的,因此 ap_id 也是分层的。USB 集线器端口的编号从 1 到 n。所有 USB ap_id 均由以下格式的字符串组成:
usbN/A[.B[.C[...]]]
其中
|
例如,USB 控制器 0(唯一的控制器)的根集线器上的第一个端口具有以下逻辑 ap_id:
usb0/1
同样,插入第一个 USB 控制器的根集线器上第一个端口中的第一个外部集线器上的第二个端口具有以下逻辑 ap_id:
usb0/1.2
例如,如果 ap_id 为 usb0/1.4.3.4,则表示插入集线器(插入集线器(插入系统上的第一个 USB 主机控制器的根集线器的端口 1)端口 4)端口 3 的集线器的端口 4。
example# cfgadm -l Ap_Id Type Receptacle Occupant Condition usb0/1 USB-hub connected configured ok usb0/2 unknown empty unconfigured ok usb0/1.1 USB-storage connected configured ok usb0/1.2 unknown empty unconfigured ok usb0/1.3 unknown empty unconfigured ok usb0/1.4 USB-device connected configured ok
USB2.0 芯片具有一个 EHCI 主机 USB2.0 主机控制器和多个伴随 USB 1.x 主机控制器(OHCI 或 UHCI 主机控制器)。
插入 USB2.0 设备后,它将在可能没有一对一映射到系统上外部物理端口号的 EHCI 逻辑端口上显示。插入 USB1.x 设备后,EHCI 主机控制器将该设备重新路由到伴随主机控制器,并且该设备将在伴随控制器的逻辑端口号上显示。
逻辑端口号到物理端口号的映射可以变得很复杂。例如:
% cfgadm Ap_Id Type Receptacle Occupant Condition c0 scsi-bus connected configured unknown usb0/1 usb-mouse connected configured ok usb0/2 usb-kbd connected configured ok usb0/3 unknown empty unconfigured ok usb0/4 usb-hub connected configured ok usb0/4.1 unknown empty unconfigured ok usb0/4.2 unknown empty unconfigured ok usb0/4.3 unknown empty unconfigured ok usb0/4.4 usb-storage connected configured ok usb1/1 unknown empty unconfigured ok usb1/2 unknown empty unconfigured ok usb1/3 unknown empty unconfigured ok usb2/1 unknown empty unconfigured ok usb2/2 usb-device connected configured ok usb3/1 unknown empty unconfigured ok usb3/2 unknown empty unconfigured ok usb3/3 unknown empty unconfigured ok usb3/4 unknown empty unconfigured ok usb3/5 unknown empty unconfigured ok
在本例中,usb0 是板载 USB 1.x 主机控制器。usb1 和 usb2 是伴随 OHCI USB1.x 主机控制器,usb3 是 EHCI USB2.0 主机控制器。
下表中显示了此 USB2.0 芯片有些混乱的路由:
logical port number physical port number ------------------- -------------------- usb1/1 internal port 1 usb1/2 external port 1 usb1/3 external port 3 usb2/1 internal port 2 usb2/2 external port 2 usb3/1 internal port 1 usb3/2 internal port 2 usb3/3 external port 1 usb3/4 external port 2 usb3/5 external port 3
遗憾的是,具体的路由通常只能通过实验确定。
USB 端口上挂接点的插口状态含义如下:
USB 端口已通电且启用。USB 设备插入该端口中。该设备在逻辑上连接到 USB 总线。
USB 端口已通电且启用。USB 设备插入到该端口中。该设备已在逻辑上与 USB 总线断开连接(使用 cfgadm -c disconnect 命令)。
USB 端口已通电,但没有插入任何设备。
USB 端口上的设备在 USB 端口挂接点的插卡状态含义如下:
USB 端口上的 USB 设备已配置且可供 Solaris 使用。
使用 cfgadm -c unconfigure 命令使 USB 端口上的 USB 设备显式脱机,或没有成功配置该设备而无法用于 Solaris(例如,没有驱动程序或设备存在问题)。
挂接点的状态含义如下:
正常状态—可供使用。
未使用。
未使用。
在设备已被应用程序打开的情况下,用户物理移除了该设备(可能有未完成的 I/O)。用户需要重新插入同一物理设备并正确关闭应用程序,然后再次移除该设备。此操作完成之前,端口不能配置其他插入的设备。
如果无法将原始设备重新插入端口,请参见《Oracle Solaris 管理:常见任务》了解清除此挂接点状态的说明。
未使用。
可以随时对 USB 设备进行热插拔,系统会检测该事件并采取相应的操作。
在从 USB 移除插口上的设备之前,不必将插口转换为 disconnected(断开)状态。但是,建议不要热移除当前正在使用的设备(如当前由卷管理器或某些其他应用程序打开的可移除磁盘)。
cfgadm 可定义多种类型的操作。这些操作包括调用配置状态更改 (-c)、调用硬件特定函数 (-x) 以及获取配置管理帮助消息 (-h)。
如果上述任一操作失败,设备和挂接点可能不会处于期望的状态。使用 cfgadm -l 命令可显示设备的当前状态。
有关其他所有选项的含义,可参见 cfgadm(1M) 中的定义。
所支持的选项如下:
以下通用命令是针对 USB 硬件特定库定义的。支持以下配置状态更改操作:
如果已有 USB 设备插入端口,则此命令将尝试配置该设备并完成所有设置,使其可供 Solaris 使用。如果需要,此命令可执行暗示的 connect(与 disconnect 相反)。如果已经配置了该端口上的设备,则此命令不完成任何操作,而是返回错误消息。成功执行此命令后,该设备可供 Solaris 使用。
对 ap_id 执行 unconfigure(如果不处于 unconfigured(未配置)),然后将插口转换为 disconnected(断开)状态,即使设备仍插在端口中。发出 cfgadm -c configure 命令或以物理方式热插入设备可使设备的插口状态恢复为 connected(已连接),并使其插卡状态恢复为 configured(已配置),前提是可以找到驱动程序且枚举和配置设备时未出现问题。
使插入端口中的设备不可供 Solaris 使用(使其脱机)。如果成功,cfgadm 会将该 ap_id 的插卡状态报告为 unconfigured(未配置)。向 ap_id 发出 configure 命令(如果成功)可使其插卡状态恢复为 configured(已配置,即联机),因为这会以物理方式将设备热插入端口。
不支持。
通过对任何 USB 挂接点使用帮助选项可获取 USB 特定的帮助。
按照 cfgadm(1M) 中的描述使用 -l 选项。如果该选项与 -v 选项一起使用,Information 字段将包含以下 USB 特定信息:
Mfg:生产商字符串 (iManufacturer)
Product:产品字符串 (iProduct)
NConfigs:设备支持的配置总数 (bNumConfigurations)。
Config:十进制形式的当前配置设置(配置索引,非配置值)。
当前配置的配置字符串描述符 (iConfiguration)
有关这些字段的描述,请参见通用串行总线规范。
只有硬件特定的命令 -x usb_config 支持硬件选项。有关可用选项的说明,请参见以下关于该命令的描述。
可使用 select 子选项列出 USB 类的挂接点。请参见 cfgadm(1M)。
定义了以下硬件特定的函数:
此命令要求使用 -o 选项指定必需的 config 值。
将 ap_id 上的多配置 USB 设备的 USB 配置设置为配置索引 n。此后该设备都设置为此配置,而且在设备的重新引导、热移除和取消配置/配置中将一直保持此设置。
n 的有效值范围是 0 到 (Nconfigs -1)。可以通过先后执行 disconnect 和 configure 来复位设备。configure 操作会将设备配置为新的配置设置。
如果上述任一步骤失败,则配置文件和设备将恢复为之前的状态,并显示错误消息。
执行设备的软件复位(重新枚举)。这等效于移除设备然后再次插入。如果集线器支持单个端口的关开机循环,则集线器上的端口将进行关开机循环。
如果连接的设备是集线器,则此函数将复位该集线器以及其作为根的树中的任何设备。
如果上述任一步骤失败,设备将恢复为之前的状态,并显示错误消息。
状态表:挂接点状态与命令:
Valid states: empty/unconfigured -> no device connected disconnected/unconfigured -> logically disconnected, unavailable, devinfo node removed, device physically connected connected/unconfigured -> logically connected, unavailable, devinfo node present connected/configured -> connected, available
下表说明操作或命令导致的状态转换:
current state operation new state ------------- --------- --------- empty/ unconfigured: device plugged in: connected/configured or connected/unconfigured (if enumeration failed) device removed: n/a cfgadm -c unconfigure: empty/unconfigured cfgadm -c configure: empty/unconfigured cfgadm -c disconnect: empty/unconfigured (no-op and error) disconnected/ unconfigured: device plugged in: n/a device removed: empty/unconfigured cfgadm -c unconfigure: disconnected/unconfigured cfgadm -c configure: connected/configured, or connected/unconfigured (if reenumeration failed) cfgadm -c disconnect: disconnected/unconfigured connected/unconfigured: device plugged in: n/a device removed: empty/unconfigured cfgadm -c unconfigure: connected/unconfigured cfgadm -c configure: connected/configured, or connected/unconfigured (if reenumeration failed) cfgadm -c disconnect: disconnected/unconfigured connected/configured: device plugged in: n/a device removed: empty/unconfigured or connected/configured, but with ap condition 'unusable' if device was open when removed cfgadm -c unconfigure: connected/unconfigured cfgadm -c configure: connected/configured cfgadm -c disconnect: disconnected/unconfigured
示例 1 列出所有 USB 设备的状态
以下命令列出系统上所有 USB 设备的状态:
# cfgadm Ap_Id Type Receptacle Occupant Condition usb0/1 USB-hub connected configured ok usb0/2 unknown empty unconfigured ok usb0/1.1 USB-storage connected configured ok usb0/1.2 unknown empty unconfigured ok usb0/1.3 unknown empty unconfigured ok usb0/1.4 USB-device connected configured ok
请注意,cfgadm 将 ap_id usb0/1.4 上的 USB-device 设备视为单个单元,因为它当前不能控制单个接口。
示例 2 列出没有插入任何设备的端口的状态
以下命令列出没有插入任何设备的端口的状态:
example# cfgadm -l usb0/1.3 Ap_Id Type Receptacle Occupant Condition usb0/1.3 unknown empty unconfigured ok
示例 3 列出插入设备的同一端口的状态
以下命令列出以物理方式插入成功配置的设备后,同一端口的状态:
example# cfgadm -l usb0/1.3 Ap_Id Type Receptacle Occupant Condition usb0/1.3 USB-hub connected configured ok
示例 4 取消对现有 USB 设备的配置
以下命令取消对连接到 usb0/1.3 的 USB 设备的配置,然后显示 ap_id 的状态:
example# cfgadm -c unconfigure usb0/1.3 Unconfigure the device: /devices/pci@0,0/pci8086,7112@7,2/hub@2:2.3 This operation suspends activity on the USB device Continue (yes/no)? Enter: y example# cfgadm -l usb0/1.3 Ap_Id Type Receptacle Occupant Condition usb0/1.3 unknown connected unconfigured ok
示例 5 取消配置并在逻辑上断开现有 USB 设备
以下命令取消连接到 usb0/1.3 的 USB 设备的配置,并在逻辑上断开其连接:
example# cfgadm -c disconnect usb0/1.3 Disconnect the device: /devices/pci@0,0/pci8086,7112@7,2/hub@2:2.3 This operation suspends activity on the USB device Continue (yes/no)? Enter: y example# cfgadm -l usb0/1.3 Ap_Id Type Receptacle Occupant Condition usb0/1.3 unknown disconnected unconfigured ok
disconnect 暗示 cfgadm 首先执行 unconfigure。现在插口状态显示为 disconnected,即使设备在物理上仍处于连接状态。在这种情况下,以物理方式热插入或对 ap_id 使用 cfgadm -c configure 可以使其恢复联机。
示例 6 配置之前未配置的 USB 设备
以下命令配置之前连接到 usb0/1.3 的 USB 设备:
example # cfgadm -yc configure usb0/1.3 example# cfgadm -l usb0/1.3 Ap_Id Type Receptacle Occupant Condition usb0/1.3 unknown connected configured ok
示例 7 复位 USB 设备
以下命令复位 USB 设备:
example# cfgadm -x usb_reset usb0/1.3 Reset the device: /devices/pci@0,0/pci8086,7112@7,2/hub@2:2.3 This operation suspends activity on the USB device Continue (yes/no)? Enter: y
示例 8 显示有关 USB 设备的详细信息
以下命令显示有关 USB 设备的详细信息。该设备在 Information 字段中显示以下 USB 特定的信息:
生厂商字符串:Iomega
产品字符串:USB Zip 250
支持的配置数:1
当前活动的配置:0
配置 0 的配置字符串描述符:缺省
example# cfgadm -lv usb0/1.5 Ap_Id Receptacle Occupant Condition Information When Type Busy Phys_Id usb0/1.5 connected configured ok Mfg:"Io mega" Product:"USB Zip 250" NConfigs:1 Config:0 : Default
example# cfgadm -l -s "cols=ap_id:info" usb0/1.5 Ap_Id Information usb0/1.5 Mfg:"Iomega" Product:"USB Zip 250" NConfigs:1 Config:0 : Default
示例 9 显示有关所有 USB 设备的详细信息
以下命令显示有关系统上所有 USB 设备的详细信息:
example# cfgadm -l -s "select=class(usb),cols=ap_id:info" Ap_Id Information usb0/1 Mfg:<undefined> Product:<undefined> NConfigs:1 Config:0 <no cfg str descr> usb0/2 usb0/1.1 Mfg:<undefined> Product:<undefined> NConfigs:1 Config:0 <no cfg str descr> usb0/1.2 usb0/1.3 usb0/1.4 Mfg:"Wizard" Product:"Modem/ISDN" NConfigs:3 Config:1 : V.90 Analog Modem usb0/1.5 Mfg:"Iomega" Product:"USB Zip 250" NConfigs:1 Config:0 : Default usb0/1.6 Mfg:"SOLID YEAR" Product:"SOLID YEAR USB"NConfigs:1 Config:0 <no cfg str descr> usb0/1.7
仅包含 ap_id 的行表示空端口。可以过滤出这些端口。以下示例仅列出连接有设备的 USB ap_id 以及有关这些设备的信息。
example# cfgadm -l -s "select=class(usb),cols=ap_id:info" | grep Mfg usb0/1 Mfg:<undefined> Product:<undefined> NConfigs:1 Config:0 <no cfg str descr> usb0/1.1 Mfg:<undefined> Product:<undefined> NConfigs:1 Config:0 <no cfg str descr> usb0/1.4 Mfg:"Wizard" Product:"Modem/ISDN" NConfigs:3 Config:1 : V.90 Analog Modem usb0/1.5 Mfg:"Iomega" Product:"USB Zip 250" NConfigs:1 Config:0 : Default usb0/1.6 Mfg:"SOLID YEAR" Product:"SOLID YEAR USB" Config:0 <no cfg str descr>
示例 10 列出有关多配置 USB 设备的信息
以下示例列出有关多配置 USB 设备的信息。
请注意 NConfigs 字段:该设备可用的配置有 0、1 和 2(0 到 (NConfigs-1))。
example# cfgadm -l -s "cols=ap_id:info" usb0/1.4 Ap_Id Information usb0/1.4 Mfg:"Wizard" Product:"Modem/ISDN" NConfigs:3 Config:1 V.90 Analog Modem"
示例 11 设置多配置 USB 设备的当前配置
以下示例设置多配置 USB 设备的当前配置:
example# cfgadm -o config=2 -x usb_config usb0/1.4 Setting the device: /devices/pci@1f,2000/usb@1/device@3 to USB configuration 2 This operation suspends activity on the USB device Continue (yes/no)? Enter: y USB configuration changed successfully.
相同类型的多个设备位于同一总线时,应该检查设备路径以确保引用的是正确的设备实例。在 Information 字段提供了该信息。
用于管理通用 USB 设备的硬件特定库
有关以下属性的说明,请参见 attributes(5):
|
cfgadm(1M)、config_admin(3CFGADM)、attributes(5)、scsa2usb(7D)、usba(7D)
通用串行总线 1.1 规范 (www.usb.org)
cfgadm(1M) 无法取消配置、断开、复位或更改当前由任何应用程序打开的任何 USB 设备的配置。如果分层结构中有某个设备由应用程序打开,则也无法在集线器上执行这些操作。有关取消对当前正在使用的 USB 海量存储设备的配置的信息,请参见 scsa2usb(7D)。
只有超级用户才能对挂接点执行任何函数。但是,如果只是列出挂接点,那么非超级用户也可完成。