本章概述了 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:可以在与 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:可以在基于 GRUB 的引导环境中使用以下 USB 功能:
从 USB CD 驱动器或 DVD 驱动器安装
从 USB 存储设备引导
有关基于 GRUB 的引导的更多信息,请参见《系统管理指南:基本管理》中的第 8 章 “关闭和引导系统(概述)”。
Solaris 10 1/06:借助 USB 虚拟键盘和鼠标支持,可以挂接多个键盘和多个鼠标,这种情况下该键盘组或鼠标组的行为如同一个虚拟键盘或鼠标。这意味着每个物理设备的输入都会并入单个输入流中。例如,如果在一个键盘上键入 SHIFT,而在另一个键盘上键入 A,则回显的字符为大写的 A。
另外,本发行版还支持将 USB 键盘或鼠标添加到膝上型计算机中,并将这些设备作为一个整体设备用于膝上型计算机的 PS/2 键盘和触摸板。
有关更多信息,请参阅 virtualkm(7D)。
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 新增功能的完整列表以及 Solaris 发行版的描述,请参见《Solaris 10 新增功能》。
从 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 |
注:
系统仅支持 USB 1.x 音频设备,不支持任何 USB 2.0 音频设备。
与 USB 2.0 集线器连接的 USB 1.x 音频设备只能在 Solaris 10 发行版中使用,该集线器与 USB 2.0 端口连接。有关更多信息,请参见 usb_ac(7D) 和 usb_as(7D)。
USB 驱动程序不支持的设备可能包含 libusb 应用程序,如 gphoto2、gtkam 和 pilotlink。有关更多信息,请参阅 /usr/sfw/share/doc/libusb/libusb.txt 。
Solaris 8 和 Solaris 9 发行版-有关 USB 双框架问题,请访问以下站点:
有关与海量存储设备关联的任务信息,请参见第 8 章,使用 USB 设备(任务)。
有关 ugen 的更多信息,请参见USB 驱动程序增强功能。
通用串行总线 (Universal Serial Bus, USB) 由 PC 行业开发,用于提供将外围设备(如键盘、鼠标设备和打印机)连接到系统的低成本解决方案。
USB 连接器适用于以某种方式连接的唯一一种类型的电缆。USB 的主要设计意图是缓解对不同设备的多种连接器类型的需求。此设计可减少系统后面板上各种连接的混乱。
设备与外部 USB 集线器或计算机本身的根集线器上的 USB 端口连接。由于集线器有多个端口,因此从集线器可以引出多个设备树分支。
有关更多信息,请参见 usb(7D) 或转至以下站点:
下表介绍了 Solaris OS 中使用的 USB 首字母缩略词。有关 USB 组件和对应的首字母缩略词的完整说明,请访问以下站点:
首字母缩略词 |
定义 |
---|---|
UGEN |
USB 通用驱动程序 |
USB |
通用串行总线 |
USBA |
通用串行总线体系结构 (Solaris) |
USBAI |
USBA 客户机驱动程序接口 (Solaris) |
HCD |
USB 主机控制器驱动程序 |
EHCI |
增强型主机控制器接口 |
OHCI |
开放主机控制器接口 |
UHCI |
通用主机控制器接口 |
USB 规范是公用免费规范。该规范定义了总线和连接器的电子和机械接口。
USB 采用由集线器为 USB 设备提供附着点的拓扑结构。主机控制器包含根集线器,该集线器是系统中所有 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
/pci@1f,4000/usb@5/hub@2/storage@3
/pci@1f,4000/usb@5/hub@3/printer@1
具有类似属性和服务的 USB 服务组成设备类。 每个设备类都有对应的驱动程序。类中的设备由同一个设备驱动程序对进行管理。但是,USB 规范也允许使用不属于特定类的供应商专有设备。
人工接口设备 (Human Interface Device, HID) 类包含用户控制的设备,如以下设备:
键盘
鼠标设备
游戏控制器
通信设备类包含以下设备:
调制解调器
以太网适配器
其他设备类包括以下类:
音频
显示器
打印机
存储设备
每个 USB 设备都包含反映其所属类的描述符。设备类可指定其成员在配置和数据传输中的行为方式。可以从以下站点获取其他的类信息:
有关 Solaris 发行版支持的 USB 设备的更多信息,请参见 usb(7D)。
从 Solaris 9 4/04 发行版开始,包括以下 USB 驱动程序增强功能。
通用 USB 驱动程序-现在可通过使用标准的 UNIX® read(2) 和 write(2) 系统调用的应用程序来访问和处理 USB 设备,并且无需编写专用内核驱动程序。其他功能包括:
应用程序可访问原始设备数据和设备状态。
驱动程序支持控制、批处理和中断(出入)传输。
有关更多信息,请参阅 ugen(7D)。
USB 串行驱动程序支持
Digi Edgeport USB 支持-Edgeport USB 驱动程序只能用于 Edgeport 设备,而不能用于其他 USB 串行设备。
新设备可以作为 /dev/term/[0-9]* 和 /dev/cua/[0-9]* 进行访问。
USB 串行端口可以像任何其他串行端口一样使用,但不可用作本地串行控制台。用户可以很容易地理解这样一个事实,即数据是通过 USB 端口运行的。
有关更多信息,请参见 usbser_edge(7D) 或转至以下站点:
有关 Edgeport 兼容性问题的更多信息,请访问以下站点:
Keyspan-Keyspan USB 串行驱动程序只能用于 Keyspan 设备,该驱动程序当前支持 USA-19HS 和 USA-49WLC 模型。
有关更多信息,请参见 usbsksp(7D)。
Prolific-Prolific USB 串行驱动程序只能用于基于 PL2303 芯片组的设备。
有关更多信息,请参见 usbsprl(7D)。
对用户编写的内核和用户级驱动程序的文档和二进制数据支持-有关 USB 驱动程序开发的最新信息,请访问:
EHCI 驱动程序的功能包括:
符合支持 USB 2.0 的增强主机控制器接口的标准。
支持高速控制、批处理和中断传输。
目前尚不支持高速同步事务。
USB 2.0 芯片包含一个 EHCI 控制器以及一个或多个 OHCI 或 UHCI 控制器。
USB 1.1 设备插入后会动态分配给 OHCI 或 UHCI 控制器。USB 2.0 设备插入后会动态分配给 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 设备。
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 功能的服务。
本节介绍您应了解的有关 Solaris OS 中的 USB 的信息。
从 Solaris 9 4/04 发行版开始,包括以下 USB 2.0 功能:
更好的性能-提高了连接到 USB 2.0 控制器的设备的数据吞吐量,速度最快可达 USB 1.1 设备的 40 倍。
访问高速海量存储设备(如 DVD 和硬盘)时,可以利用高速 USB 协议。
向下兼容性-与 1.0 和 1.1 版本的设备和驱动程序兼容,因而可以使用相同的电缆、连接器和软件界面。
有关 USB 设备和术语的说明,请参见USB 设备概述。
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 设备:
海量存储设备,如 CD-RW、硬盘、DVD、数码相机、软盘、磁带机、内存条以及多格式读卡器
键盘和鼠标设备
音频设备,如扬声器和麦克风
有关 Solaris 发行版中已验证的 USB 设备的完整列表,请访问:
http://www.sun.com/io_technologies/USB.html
通过修改 scsa2usb.conf 文件,可以使用其他存储设备。有关更多信息,请参见 scsa2usb(7D)。
Solaris USB 2.0 设备支持包括以下功能:
USB 总线速度从 12 MB/秒提高到 480 MB/秒。这种提高意味着如果将支持 USB 2.0 规范的设备连接到 USB 2.0 端口,其运行速度将大大高于支持 USB 1.1 规范的同类设备。
USB 2.0 端口可能是以下端口之一:
USB 2.0 PCI 卡上的端口
连接到 USB 2.0 端口的 USB 2.0 集线器上的端口
SPARC 或 x86 计算机主板上的端口
要提供 USB 2.0 端口,需要一块 USB 2.0 PCI 卡。有关已针对 Solaris 发行版验证过的 USB 2.0 PCI 卡的列表,请访问:
USB 1.1 设备的工作方式与过去一样,即使同一系统中同时有 USB 1.1 和 USB 2.0 设备也是如此。
尽管 USB 2.0 设备能够在 USB 1.x 端口上运行,但如果将其连接到 USB 2.0 端口,则性能会大大提高。
USB 2.0 主机控制器具有一个高速的增强主机控制器接口 (Enhanced Host Controller Interface, EHCI) 以及一个或多个内嵌了 OpenHCI 主机控制器接口 (OpenHCI Host Controller Interface, OHCI) 或通用主机控制器接口 (Universal Host Controller Interface, UHCI) 的控制器。连接到 USB 2.0 端口的设备会动态分配给 EHCI 或 OHCI 控制器,具体取决于它们是否支持 USB 2.0。
对于连接到 USB 2.0 PCI 卡上某一端口的 USB 2.0 存储设备,以及在同一硬件配置中用于早期 Solaris 发行版的 USB 2.0 存储设备,在升级到本发行版后,可以更改设备名称。进行这种更改是由于上述设备现在被视为 USB 2.0 设备,并且由 EHCI 控制器接管。上述设备的控制器编号(/dev/[r]dsk/cwtxdysz 中的 w)将被更改。
另请注意,USB 设备的速度限制为父端口可支持的速度。例如,如果 USB 2.0 外部集线器的下游设备依次是 USB 1.x 集线器和 USB 2.0 设备,则与 USB 2.0 外部集线器连接的设备将以全速而非高速运行。
有关 USB 2.0 设备支持的更多信息,请参见 ehci(7D) 和 usba(7D)。
总线供电的集线器使用来自与之连接的 USB 总线的电力,为与其连接的设备供电。必须特别小心不要使这些集线器过载,因为这些集线器为其下游设备提供的电力有限。
从 Solaris 10 6/06 发行版开始,已实现了对 USB 设备进行电能预算。此功能具有以下限制:
禁止层叠两个总线供电的集线器。
每个总线供电的集线器允许每个接口上的最大电流仅为 100 mA。
仅允许将自备电源或低总线供电的设备连接至总线供电的集线器。不允许连接高总线供电的设备。某些集线器或设备会报告虚假的电源来源,这种连接可能是不可预测的。
在重新引导期间或在 SPARC 系统中出现 ok 提示符时,请勿移动键盘和鼠标。系统重新引导后,可以随时将键盘和鼠标移动到另一个集线器。插入键盘和鼠标后,它们便会再次完全正常运行。
在某些第三方 USB 键盘上,紧靠小键盘左侧的键可能不起作用。
SPARC-在 SPARC 系统中使用 USB 键盘和鼠标设备时,请牢记以下问题:
USB 键盘上的电源键与 Sun 类型 5 键盘上的电源键作用不同。在 USB 键盘上,可以使用 SUSPEND/SHUTDOWN 键暂停或关闭系统。但是,不能使用该键来打开系统电源。
引导过程完成之前,OpenBoot PROM (OBP) 限制键盘和鼠标设备只能与主板根集线器端口连接。
USB 键盘和鼠标设备不能与 Sun 类型 3、4 或 5 键盘同时用于传统 SPARC 系统(如 Ultra 80)。
有关多键盘和鼠标设备支持的信息,请参见 virtualkm(7D)。
从 Solaris 9 9/04 发行版开始,支持以下滚轮鼠标功能:
支持超过 3 个按键的 USB 或 PS/2 鼠标设备。
支持 USB 或 PS/2 鼠标设备的滚轮鼠标滚动功能。此项支持表明滚动 USB 或 PS/2 鼠标的滚轮会在鼠标焦点所在的应用程序或窗口中产生滚动效果。StarSuiteTM、Firefox 和 GNOME 应用程序均支持滚轮鼠标的滚动功能。但其他应用程序可能不支持。
USB 集线器负责以下操作:
监视在其端口上插入或移除设备
对其端口上的各个设备进行电源管理
控制传输到其端口的电源
USB 主机控制器具有一个嵌入式集线器,称为根集线器。系统的后面板上显示的端口是根集线器的端口。USB 主机控制器负责以下操作:
定向 USB 总线。各个设备都不能任意定向总线。
使用该设备确定的轮询间隔轮询设备。为说明轮询间隔的时间,假定设备具有足够缓冲。
在 USB 主机控制器和与其连接的设备之间发送数据。不支持对等通信。
请勿在基于 SPARC 的系统或基于 x86 的系统上将集线器层叠超过四级。在 SPARC 系统上,OpenBootTM PROM 不能可靠地探测超过四级的设备。
请勿以层叠样式将一个总线供电的集线器插入另一个总线供电的集线器中。总线供电的集线器没有自己的电源。
请勿将需要大功率电源的设备连接至总线供电的集线器。这些设备可能会被拒绝与总线供电的集线器连接,或者可能会消耗其他设备的集线器的电源。这类设备的示例为 USB 软盘设备。
SPARC 系统完全支持暂停和恢复 USB 设备。但是,请勿暂停繁忙的设备,并且请勿在暂停关机的情况下关闭系统电源时移除设备。
USB 框架可通过启用电源管理,尽可能地对基于 SPARC 的系统上的所有设备进行电源管理。对 USB 设备进行电源管理意味着集线器驱动程序将暂停与设备连接的端口。支持远程唤醒的设备可以通知系统唤醒设备路径中的所有内容,以便可以使用该设备。如果应用程序将 I/O 发送到该设备,则主机系统也可以唤醒该设备。
缺省情况下,会对所有的 HID 设备(键盘、鼠标、集线器和存储设备)、集线器设备和存储设备进行电源管理,前提是这些设备支持远程唤醒功能。仅在两个打印作业之间对 USB 打印机进行电源管理。通用 USB 启动程序 (UGEN) 管理的设备仅在关闭时才会进行电源管理。
实施电源管理以减少能耗时,首先会关闭 USB 叶设备的电源。关闭与集线器端口连接的所有设备的电源后,集线器电源会在一定延迟后关闭。为实现最有效的电源管理,请勿层叠多个集线器。
有关在 SPARC 系统中使用 SUSPEND/SHUTDOWN 键的信息,请参见USB 键盘和鼠标设备。
连接 USB 电缆时,请牢记以下原则:
始终使用与 USB 2.0 兼容并且以全速(480 Mbit/sec) 运行的 20/28 AWG 电缆来连接 USB 2.0 设备。
支持的最大电缆长度为 5 米。
请勿使用电缆延伸架。为获得最佳效果,请使用自备电源的集线器来延伸电缆长度。
有关更多信息,请访问: