# 28.1.概述

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

在支持 USB 设备模式或 USB OTG 的硬件上运行时，FreeBSD USB 栈可以处于 **设备模式**。设备模式使计算机能够作为不同类型的 USB 设备类进行展示，包括串行端口、网络适配器和大容量存储设备，或者它们的组合。像笔记本电脑或台式计算机这样的 USB 主机能够像访问物理 USB 设备一样访问这些虚拟设备。设备模式有时也被称为“USB 小工具模式”（USB gadget mode）。

硬件可以通过两种基本方式提供设备模式功能：一种是有一个单独的“客户端端口”，仅支持设备模式；另一种是使用 USB OTG 端口，支持设备模式和主机模式。对于 USB OTG 端口，USB 栈会根据连接到端口的设备自动切换主机模式和设备模式。将像 U 盘这样的 USB 设备连接到端口时，FreeBSD 会切换到主机模式；将像计算机这样的 USB 主机连接到端口时，FreeBSD 会切换到设备模式。单用途的“客户端端口”始终工作在设备模式。

FreeBSD 向 USB 主机展示的内容取决于 `hw.usb.template` sysctl。一些模板提供单个设备，比如串行终端；其他模板提供多个设备，它们可以同时使用。例如，模板 10 提供了一个大容量存储设备、一个串行控制台和一个网络接口。有关可用值的列表，请参阅 [usb\_template(4)](https://man.freebsd.org/cgi/man.cgi?query=usb_template\&sektion=4\&format=html)。

需要注意的是，在某些情况下，根据硬件和主机操作系统的不同，要使主机注意到配置的变化，必须物理断开并重新连接，或以系统特定的方式强制重新扫描 USB 总线。当 FreeBSD 在主机上运行时，可以使用 [usbconfig(8)](https://man.freebsd.org/cgi/man.cgi?query=usbconfig\&sektion=8\&format=html) 中的 `reset` 命令。这也必须在加载 **usb\_template.ko** 后执行，特别是在 USB 主机已经连接到 USB OTG 插口时。

阅读本章后，你将了解：

* 如何在 FreeBSD 上设置 USB 设备模式功能。
* 如何配置 FreeBSD 上的虚拟串行端口。
* 如何从各种操作系统连接到虚拟串行端口。
* 如何配置 FreeBSD 提供虚拟 USB 网络接口。
* 如何配置 FreeBSD 提供虚拟 USB 存储设备。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.bsdcn.org/hanbook/di-28-zhang-usb-she-bei-mo-shi-usb-otg/28.1.-gai-shu.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
