系统管理指南:设备和文件系统

第 7 章 使用 USB 设备(概述)

本章概述了 Solaris OS 中的通用串行总线 (Universal Serial Bus, USB) 设备。

以下是本章中概述信息的列表。

有关 USB 设备的最新信息,请访问以下站点:

http://www.sun.com/io_technologies/USB-Faq.html

有关 USB 设备的常规信息,请访问以下站点:

http://developers.sun.com/solaris/developer/support/driver/usb.html

有关在 Solaris OS 中使用 USB 设备的逐步说明,请参见第 8 章,使用 USB 设备(任务)

有关动态重新配置和热插拔的常规信息,请参见第 6 章,动态配置设备(任务)

有关配置 USB 打印机的信息,请参见《系统管理指南:高级管理》中的“打印方面的新增功能”

Solaris 10 6/06 发行版在 USB 设备方面的新增功能

Solaris 10 6/06:可以在与 EHCI 控制器连接的 USB 海量存储设备上创建并挂载 ZFS 文件系统。请勿在与 OHCI 或 UHCI 控制器连接的 USB 设备上使用 ZFS。

有关使用 USB 海量存储设备的信息,请参见使用 USB 海量存储设备

有关创建和挂载 ZFS 文件系统的信息,请参见 zfs(1M)zpool(1M)

Solaris 10 6/06:在本 Solaris 发行版中,不可移除的 USB 存储设备和 1394 海量存储设备在驱动程序级别上都被标识为可热插拔的设备。此新增功能意味着,USB 存储设备可以在不重新引导系统的情况下连接或断开,并且可以无需用户干预地自动配置或取消配置。这些更改是在内核级别进行的,因此不会影响这些设备的使用。例如,挂载和取消挂载这些设备的工作仍然由 vold 控制。

有关更多信息,请参见USB 和 1394 (FireWire) 支持增强功能

Solaris 10 1/06 发行版在 USB 设备方面的新增功能

以下各节介绍了 Solaris 10 1/06 发行版中 USB 的新增功能。

x86: 在基于 GRUB 的引导中支持 USB CD 和 DVD

Solaris 10 1/06:可以在基于 GRUB 的引导环境中使用以下 USB 功能:

有关基于 GRUB 的引导的更多信息,请参见《系统管理指南:基本管理》中的第 8  章 “关闭和引导系统(概述)”

USB 虚拟键盘和鼠标支持

Solaris 10 1/06:借助 USB 虚拟键盘和鼠标支持,可以挂接多个键盘和多个鼠标,这种情况下该键盘组或鼠标组的行为如同一个虚拟键盘或鼠标。这意味着每个物理设备的输入都会并入单个输入流中。例如,如果在一个键盘上键入 SHIFT,而在另一个键盘上键入 A,则回显的字符为大写的 A。

另外,本发行版还支持将 USB 键盘或鼠标添加到膝上型计算机中,并将这些设备作为一个整体设备用于膝上型计算机的 PS/2 键盘和触摸板。

有关更多信息,请参阅 virtualkm(7D)

vold 用于识别热插拔 USB 设备

Solaris 10 1/06:可移除介质管理器 (vold) 现在可识别热插拔。无需重新启动此守护进程,即可挂载已热插入的 USB 海量存储设备。但是,由于 vold 并不总是成功,因此对于某些设备可能仍然需要手动进行挂载。如果 vold 无法自动挂载 USB 设备,请按如下所示停止 vold


# /etc/init.d/volmgt stop

有关在不运行 vold 的情况下使用 USB 设备的信息,请参见如何在不运行 vold 的情况下准备使用 USB 海量存储设备

有关手动挂载 USB 海量存储设备的信息,请参见如何在不运行 vold 的情况下挂载或取消挂载 USB 海量存储设备

Solaris 10 发行版在 USB 设备方面的新增功能

有关 Solaris 10 发行版中 USB 新增功能的信息,请参见以下参考资料:

有关 Solaris 新增功能的完整列表以及 Solaris 发行版的描述,请参见《Solaris 10 新增功能》

Solaris 对 USB 设备的支持

从 Solaris 10 发行版开始,USB 2.0 集线器上可支持所有 USB 1.1 设备,包括音频设备。使用下表可确定特定 USB 1.1 和 USB 2.0 设备的 Solaris 支持信息。

 

Solaris 8 HW 5/03 和更高发行版 

Solaris 9 发行版 

Solaris 10 

常规的 USB 1.1 设备支持

SPARC 和 x86 

SPARC 和 x86 

SPARC 和 x86 

常规的 USB 2.0 设备支持

仅限于 SPARC 

SPARC 和 x86 (Solaris 9 4/04) 

SPARC 和 x86 

特定的 USB 1.1 和 USB 2.0 设备支持

     

音频设备(请参见下面的注释。) 

仅限于 USB 1.1

在 USB 2.0 集线器上不受支持 

仅限于 USB 1.1

在 USB 2.0 集线器上不受支持 

仅限于 USB 1.1

在 USB 2.0 集线器上受支持 

通用 USB 驱动程序 (ugen(7D))

仅限于 SPARC 

SPARC 和 x86 

SPARC 和 x86 

hid 设备(键盘和鼠标设备,hid(7D)

SPARC 和 x86 

SPARC 和 x86 

SPARC 和 x86 

集线器 (hubd(7D))

SPARC 和 x86 

SPARC 和 x86 

SPARC 和 x86 

打印机 

SPARC 和 x86 

SPARC 和 x86 

SPARC 和 x86 

串行设备(Edgeport (usbser_edge(7D))、Prolific (usbsprl(7D))、Keyspan (usbsksp(7D)))

SPARC 和 x86 

SPARC 和 x86 

SPARC 和 x86 

存储设备 (scsa2usb(7D))

SPARC 和 x86 

SPARC 和 x86 

SPARC 和 x86 

用户空间 USB 设备管理库 (libusb(3LIB))

不支持  

不支持  

SPARC 和 x86 

注:

有关与海量存储设备关联的任务信息,请参见第 8 章,使用 USB 设备(任务)

有关 ugen 的更多信息,请参见USB 驱动程序增强功能

USB 设备概述

通用串行总线 (Universal Serial Bus, USB) 由 PC 行业开发,用于提供将外围设备(如键盘、鼠标设备和打印机)连接到系统的低成本解决方案。

USB 连接器适用于以某种方式连接的唯一一种类型的电缆。USB 的主要设计意图是缓解对不同设备的多种连接器类型的需求。此设计可减少系统后面板上各种连接的混乱。

设备与外部 USB 集线器或计算机本身的根集线器上的 USB 端口连接。由于集线器有多个端口,因此从集线器可以引出多个设备树分支。

有关更多信息,请参见 usb(7D) 或转至以下站点:

http://www.usb.org

常用的 USB 首字母缩略词

下表介绍了 Solaris OS 中使用的 USB 首字母缩略词。有关 USB 组件和对应的首字母缩略词的完整说明,请访问以下站点:

http://www.usb.org

首字母缩略词 

定义 

UGEN 

USB 通用驱动程序 

USB 

通用串行总线 

USBA 

通用串行总线体系结构 (Solaris) 

USBAI 

USBA 客户机驱动程序接口 (Solaris) 

HCD 

USB 主机控制器驱动程序 

EHCI 

增强型主机控制器接口 

OHCI 

开放主机控制器接口 

UHCI 

通用主机控制器接口 

USB 总线说明

USB 规范是公用免费规范。该规范定义了总线和连接器的电子和机械接口。

USB 采用由集线器为 USB 设备提供附着点的拓扑结构。主机控制器包含根集线器,该集线器是系统中所有 USB 端口的起点。有关集线器的更多信息,请参见USB 主机控制器和集线器

图 7–1 USB 物理设备分层结构

图中显示了带有三个活动 USB 端口的系统,其中包括复合设备(集线器和打印机)和组合设备(键盘和鼠标)。

图 7–1 显示了带有三个活动 USB 端口的系统。第一个 USB 端口连接 USB 内存条。第二个 USB 端口连接外部集线器,该集线器又连接 cdrw 设备和键盘/鼠标复合设备。作为复合设备,此键盘包含 USB 控制器,该控制器可以操作键盘和连接的鼠标。键盘和鼠标共享公用的 USB 总线地址,因为它们由同一个 USB 控制器定向。

图 7–1 还显示了作为组合设备的集线器和打印机的示例。该集线器是与打印机封装在同一个箱子中的外部集线器。打印机与集线器永久连接。集线器和打印机具有各自独立的 USB 总线地址。

以下列出了图 7–1 中显示的一些设备的设备树路径名。

内存条

/pci@1f,4000/usb@5/storage@1

键盘

/pci@1f,4000/usb@5/hub@2/device@1/keyboard@0

鼠标

/pci@1f,4000/usb@5/hub@2/device@1/mouse@1

cdrw 设备

/pci@1f,4000/usb@5/hub@2/storage@3

打印机

/pci@1f,4000/usb@5/hub@3/printer@1

USB 设备和驱动程序

具有类似属性和服务的 USB 服务组成设备类。 每个设备类都有对应的驱动程序。类中的设备由同一个设备驱动程序对进行管理。但是,USB 规范也允许使用不属于特定类的供应商专有设备。

人工接口设备 (Human Interface Device, HID) 类包含用户控制的设备,如以下设备:

通信设备类包含以下设备:

其他设备类包括以下类:

每个 USB 设备都包含反映其所属类的描述符。设备类可指定其成员在配置和数据传输中的行为方式。可以从以下站点获取其他的类信息:

http://www.usb.org

有关 Solaris 发行版支持的 USB 设备的更多信息,请参见 usb(7D)

USB 驱动程序增强功能

从 Solaris 9 4/04 发行版开始,包括以下 USB 驱动程序增强功能。

EHCI、OHCI 和 UHCI 驱动程序

EHCI 驱动程序的功能包括:

使用 prtconf 命令输出可确定系统是支持 USB 1.1 设备还是 USB 2.0 设备。例如:


# prtconf  -D | egrep "ehci|ohci|uhci"

如果 prtconf 输出标识了 EHCI 控制器,则系统支持 USB 2.0 设备。

如果 prtconf 输出标识了 OHCI 或 UHCI 控制器,则系统支持 USB 1.1 设备。

Solaris USB 体系结构 (Solaris USB Architecture, USBA)

USB 设备可以表示为两级设备树节点。设备节点表示整个 USB 设备。一个或多个子 接口 节点表示设备上的各个 USB 接口。

驱动程序绑定是通过使用兼容的名称属性实现的。有关更多信息,请参阅 IEEE 1275 USB 绑定的 3.2.2.1 节以及《编写设备驱动程序》。驱动程序可以绑定至整个设备并控制所有接口,也可以只绑定至一个接口。如果供应商或类驱动程序不要求绑定至整个设备,则可以将通用 USB 多接口驱动程序绑定至设备级节点。此驱动程序会通过使用 IEEE 1275 绑定规范的 3.3.2.1 节中定义的兼容名称属性,尝试将各驱动程序绑定至每个接口。

Solaris USB 体系结构 (USB Architecture, USBA) 遵循 USB 1.1 和 USB 2.0 规范,并且是 Solaris 设备驱动程序接口 (Device Driver Interface, DDI) 的一部分。USBA 模型与 Sun 公用 SCSI 体系结构 (Sun Common SCSI Architecture, SCSA) 类似。如下图所示,USBA 是一个薄层,用于为客户机驱动程序提供通用抽象 USB 传输层,进而为这些驱动程序提供实现核心通用 USB 功能的服务。

图 7–2 Solaris USB 体系结构 (Solaris USB Architecture, USBA)

图中显示了客户机驱动程序、USBA 框架、主机控制器驱动程序以及设备总线之间的关系。

关于 Solaris OS 中的 USB

本节介绍您应了解的有关 Solaris OS 中的 USB 的信息。

USB 2.0 功能

从 Solaris 9 4/04 发行版开始,包括以下 USB 2.0 功能:

有关 USB 设备和术语的说明,请参见USB 设备概述

USB 2.0 设备功能和兼容性问题

USB 2.0 设备的定义是遵循 USB 2.0 规范的高速设备。您可以参阅 http://www.usb.org 中的 USB 2.0 规范。

要确定 USB 设备在 Solaris 10 以及更高发行版中的速度,请检查 /var/adm/messages 文件中类似以下内容的消息:


Dec 13 17:05:57 mysystem usba: [ID 912658 kern.info] USB 2.0 device

(usb50d,249) operating at hi speed (USB 2.x) on USB 2.0 external hub:

storage@4, scsa2usb0 at bus address 4

以下是本 Solaris 发行版中支持的一些 USB 设备:

有关 Solaris 发行版中已验证的 USB 设备的完整列表,请访问:

http://www.sun.com/io_technologies/USB.html

通过修改 scsa2usb.conf 文件,可以使用其他存储设备。有关更多信息,请参见 scsa2usb(7D)

Solaris USB 2.0 设备支持包括以下功能:

有关 USB 2.0 设备支持的更多信息,请参见 ehci(7D)usba(7D)

总线供电设备

总线供电的集线器使用来自与之连接的 USB 总线的电力,为与其连接的设备供电。必须特别小心不要使这些集线器过载,因为这些集线器为其下游设备提供的电力有限。

从 Solaris 10 6/06 发行版开始,已实现了对 USB 设备进行电能预算。此功能具有以下限制:

USB 键盘和鼠标设备

使用 USB 键盘和鼠标设备时,请牢记以下问题:

USB 滚轮鼠标支持

从 Solaris 9 9/04 发行版开始,支持以下滚轮鼠标功能:

USB 主机控制器和集线器

USB 集线器负责以下操作:

USB 主机控制器具有一个嵌入式集线器,称为根集线器。系统的后面板上显示的端口是根集线器的端口。USB 主机控制器负责以下操作:

USB 集线器设备

SPARC: USB 电源管理

SPARC 系统完全支持暂停和恢复 USB 设备。但是,请勿暂停繁忙的设备,并且请勿在暂停关机的情况下关闭系统电源时移除设备。

USB 框架可通过启用电源管理,尽可能地对基于 SPARC 的系统上的所有设备进行电源管理。对 USB 设备进行电源管理意味着集线器驱动程序将暂停与设备连接的端口。支持远程唤醒的设备可以通知系统唤醒设备路径中的所有内容,以便可以使用该设备。如果应用程序将 I/O 发送到该设备,则主机系统也可以唤醒该设备。

缺省情况下,会对所有的 HID 设备(键盘、鼠标、集线器和存储设备)、集线器设备和存储设备进行电源管理,前提是这些设备支持远程唤醒功能。仅在两个打印作业之间对 USB 打印机进行电源管理。通用 USB 启动程序 (UGEN) 管理的设备仅在关闭时才会进行电源管理。

实施电源管理以减少能耗时,首先会关闭 USB 叶设备的电源。关闭与集线器端口连接的所有设备的电源后,集线器电源会在一定延迟后关闭。为实现最有效的电源管理,请勿层叠多个集线器。

有关在 SPARC 系统中使用 SUSPEND/SHUTDOWN 键的信息,请参见USB 键盘和鼠标设备

USB 电缆连接原则

连接 USB 电缆时,请牢记以下原则:

有关更多信息,请访问:

http://www.usb.org/about/faq/ans5