28.1.概述

这一章介绍了 FreeBSD 中 USB 设备模式和 USB On The Go (USB OTG) 的使用。这包括虚拟串行控制台、虚拟网络接口和虚拟 USB 驱动器。

当在支持 USB 设备模式或 USB OTG 的硬件上运行时,例如许多嵌入式板卡中内置的硬件,FreeBSD USB 栈可以在 设备模式 下运行。设备模式使得计算机有可能将自己表现为不同种类的 USB 设备类别,包括串行端口、网络适配器和大容量存储,或者它们的组合。像笔记本电脑或台式电脑这样的 USB 主机能够像物理 USB 设备一样访问它们。设备模式有时被称为“USB 小工具模式”。

硬件有两种基本方式可以提供设备模式功能:一种是单独的“客户端端口”,只支持设备模式;另一种是 USB OTG 端口,可以同时提供设备和主机模式。对于 USB OTG 端口,USB 堆栈会自动在主机端和设备端之间切换,这取决于连接到该端口的东西。将一个 USB 设备(如记忆棒)连接到这个端口,会使 FreeBSD 切换到主机模式。连接一个像电脑一样的 USB 主机会使 FreeBSD 切换到设备模式。单一用途的“客户端口”总是在设备模式下工作。

FreeBSD 向 USB 主机展示什么取决于 sysctl 的 hw.usb.template 参数。一些模板提供了一个单一的设备,例如一个串行终端;其他模板提供了多个设备,这些设备可以同时使用。一个例子是模板 10,它提供了一个大容量存储设备、一个串行控制台和一个网络接口。参见 usb_template(4) 获取可用值的列表。

请注意,在某些情况下,根据硬件和主机操作系统的不同,为了让主机注意到配置的变化,它必须在物理上断开并重新连接,或者强制以系统特定的方式重新扫描 USB 总线。当 FreeBSD 在主机上运行时,可以使用 usbconfig(8) 重置。如果 USB 主机已经连接到 USBOTG 插座,这也必须在加载 usb_template.ko 之后进行。

读完本章后,你将知道:

  • 如何在 FreeBSD 上设置 USB 设备模式功能。

  • 如何在 FreeBSD 上配置虚拟串口。

  • 如何从各种操作系统连接到虚拟串口。

  • 如何配置 FreeBSD 以提供一个虚拟的 USB 网络接口。

  • 如何配置 FreeBSD 来提供一个虚拟的 USB 存储设备。