USB
页面内容
Pi 4之前的设备概述
树莓派上 USB 端口的数量和类型取决于型号。 树莓派 Model B配备了两个 USB 2.0端口。 B +,2B,3B和 3B +具有四个 USB 2.0端口。 Pi 4具有两个 USB 2.0端口和两个 USB 3.0端口。在 Pi 4之前的所有型号中,USB端口都连接到组合式集线器/以太网芯片,而后者本身就是连接到 BCM2835 上单个上游 USB 端口的 USB 设备。在 Pi 4上,USB集线器芯片通过 PCIe 总线连接到 SoC 。
在模型 A 和零范围上,单个 USB 2.0端口直接连接到 SoC 。
USB端口可连接外围设备,如键盘,鼠标,网络摄像头,这些外围设备可为 Pi 提供附加功能。
树莓派上的 USB 硬件与台式计算机或笔记本电脑/平板电脑设备上的 USB 硬件之间存在一些差异。
Pi内的 USB 主机端口是随行即用(OTG)主机,它是为 Pi 供电的应用处理器 BCM2835 ,最初打算在移动市场中使用:即作为电话上的单个 USB 端口用于连接到 PC 或单个设备。本质上,OTG硬件比 PC 上的等效硬件更简单。
OTG通常支持与所有类型的 USB 设备进行通信,但是要为可能插入 Pi 的大多数 USB 设备提供适当级别的功能,系统软件必须完成更多工作。
Pi 4概述
对于 Pi 4,功能齐全的主机控制器驱动下游 USB 端口。下游 USB 由 Via Labs VL805芯片提供-支持两个 USB 2.0端口和两个 USB 3.0端口。它使用 PCIe 链接连接到 BCM2711 SoC,速度非常快。因此,Pi 4的速度限制与以前的型号不同,这意味着非常快的数据传输速率,尤其是在使用 USB 3.0端口时。所有连接的 USB 2.0设备通过内部集线器连接,该内部集线器通过单个 USB 2.0总线连接到上游 PCIe 链路,从而为所有 USB 2.0设备提供最大 480Mbit /s的组合带宽。设备上的所有四个 USB 端口都连接到 USB 2.0集线器,而 USB 3.0端口(蓝色)也通过插槽中的 USB 3.0专用引脚连接到 USB 3.0总线。 USB 3.0设备仅受 PCIe 链路上可用总带宽的限制。
您可以使用 lsusb -t来显示 USB 设备和集线器的排列方式及其分配的速度。
先前型号上的 USB 实现的大多数技术限制已不再存在。
以前型号的 Pi 上的 OTG 硬件仍然可用,并且已移至 USB -C端口上的单个连接。 OTG硬件旨在在 Pi 4上的仅设备模式下使用。
支持的设备
通常,Linux支持的所有设备都可以与 Pi 一起使用,但需要注意一些警告。 Linux可能具有适用于任何操作系统的旧式硬件的最全面的驱动程序数据库(由于需要 Linux 的开源驱动程序才能默认识别该设备,因此对于现代设备支持可能会落后于此)。
如果您有设备,并希望将其与 Pi 一起使用,则将其插入。可能会"正常工作"。如果您在图形界面(例如树莓派 OS中的 LXDE 桌面环境)中运行,则可能会弹出一个图标或类似图标来宣布新设备。
如果该设备似乎无法正常工作,请参阅下面的"故障排除"部分。
一般限制(不是 Pi 4)
树莓派上的 OTG 硬件对某些设备的支持级别更简单,这可能会带来更高的软件处理开销。 树莓派还只有一个根 USB 端口:来自所有已连接设备的所有流量都通过该总线传送,该总线的最大速度为 480mbps 。
USB规范定义了三种设备速度-低速,全速和高速。大多数鼠标和键盘为低速,大多数 USB 声音设备为全速,大多数视频设备(网络摄像头或视频捕获)为高速。
通常,将多个高速 USB 设备连接到 Pi 上没有问题。
与低速和全速设备通信时产生的软件开销意味着同时激活的低速和全速设备的数量受到软限制。连接到 Pi 的这类设备数量很少,不会造成任何问题。
端口功率限制 USB 设备已定义了电源要求,以 100mA 至 500mA 的 100mA 为单位。首次连接时,设备会将其自身的电源要求发布给 USB 主机。理论上,设备消耗的实际功率不应超过其规定的要求。
树莓派 1上的 USB 端口每个具有 100mA 的设计负载-足以驱动"低功耗"设备,例如鼠标和键盘。无线局域网适配器,USB硬盘驱动器,USB笔式驱动器之类的设备消耗的电流要大得多,应通过具有自己电源的外部集线器供电。虽然可以将 500mA 设备插入树莓派 1并使其具有足够强大的电源,但是不能保证可靠的操作。此外,将大功率设备热插入树莓派 1的 USB 端口可能会导致电源不足,从而导致 Pi 重置。
从树莓派 2开始,提供给所有 USB 端口的总功率总计为 1200mA 。
有关更多信息,请参见Power。
已知问题的设备(非 Pi 4)
1。 树莓派和 USB 3.0集线器之间的互操作性 USB 3.0集线器与全速或低速设备(大多数鼠标,大多数键盘)和树莓派一起使用时存在问题。大多数 USB 3.0集线器硬件中的错误意味着树莓派无法与连接到 USB 3.0集线器的全速或低速设备通信。
通过 USB 3.0集线器连接时,包括 USB 2.0集线器在内的 USB 2.0高速设备可以正常运行。
避免将低速或全速设备连接到 USB 3.0集线器。解决方法是,将 USB 2.0集线器插入 USB 3.0集线器的下游端口并连接低速设备,或者在 Pi 和 USB 3.0集线器之间使用 USB 2.0集线器,然后将低速设备插入 USB 2.0集线器。
2。 USB 1.1网络摄像头 旧的网络摄像头可能是全速设备。由于这些设备传输大量数据并招致额外的软件开销,因此无法保证可靠的操作。 解决方法是,尝试以较低的分辨率使用相机。
3。神秘的 USB 声卡 昂贵的"发烧友"声卡通常使用比流音频播放所需带宽更多的带宽。不能保证 96kHz /192kHz DAC的可靠运行。 解决方法是,将输出流强制为 CD 质量(44.1kHz/48kHz 16位)会将流带宽减小到可靠的水平。
4。单 TT USB集线器 USB 2.0和 3 .0集线器具有一种机制,可以与连接到其下游端口的全速或低速设备进行通讯,称为事务转换器。该设备缓冲来自主机(即 Pi )的高速请求,并将其以全速或低速传输到下游设备。 USB规范允许集线器有两种配置:单 TT (所有端口一个 TT )和多 TT (每个端口一个 TT )。 由于 OTG 硬件的限制,如果单个 TT 集线器中插入了太多的全速或低速设备,则可能会导致设备运行不可靠。建议使用 Multi -TT集线器连接多个低速设备。 解决方法是,在 Pi 自己的 USB 端口和 Single -TT集线器之间分配低速设备。
故障排除
如果您的设备根本无法工作
第一步是查看是否完全检测到它。为此,可以在终端中输入两个命令:lsusb和 dmesg 。第一个将打印出所有连接到 USB 的设备,无论它们是否实际上被设备驱动程序识别,第二个将打印出内核消息缓冲区(启动后可能很大)-尝试执行 sudo dmesg -C。然后插入您的设备并重新输入dmesg
以查看新消息。
以 USB 笔式驱动器为例:
`` pi @ raspberrypi〜$ lsusb 总线 001 设备 002 :ID 0424:9512 Standard Microsystems Corp. 总线 001 设备 001 :ID 1d6b:0002 Linux Foundation 2.0根集线器 总线 001 设备 003 :ID 0424:ec00 Standard Microsystems Corp. 总线 001 设备 005 :ID 05dc:a781 Lexar Media,Inc. pi @ raspberrypi〜$ dmesg ...之前发生过的事情 [8904.228539] USB 1-1.3:使用 dwc _otg的新高速 USB 设备编号 5 [8904.332308] USB 1-1.3:找到新的 USB 设备,idVendor = 05dc,idProduct = a781 [8904.332347] USB 1-1.3:新的 USB 设备字符串:Mfr = 1,Product = 2,SerialNumber = 3 [8904.332368] USB 1-1.3:产品:JD Firefly [8904.332386] USB 1-1.3:制造商:Lexar [8904.332403] USB 1-1.3:序列号:AACU6B4JZVH31337 [8904.336583] USB存储 1 -1.3:1.0:检测到 USB Mass Storage设备 [8904.337483] scsi1:USB存储空间 1 -1.3:1.0 [8908.114261] scsi 1:0:0:0:直接访问 Lexar JD Firefly 0100 PQ:0 ANSI:0 CCS [8908.185048] SD 1:0:0:0:[sda] 4048896 512字节逻辑块:(2.07 GB/1.93 GiB) [8908.186152] sd 1:0:0:0:[sda]写保护已关闭 [8908.186194] sd 1:0:0:0:[sda]模式感测:43 00 00 00[8908.187274] sd 1:0:0:0:[sda]不存在缓存模式页[8908.187312] sd 1:0:0:0:[sda]假设驱动器缓存:直写 [8908.205534] sd 1:0:0:0:[sda]不存在缓存模式页面 [8908.205577] sd 1:0:0:0:[sda]假设驱动器缓存:直写 [8908.207226] sda:sda1 [8908.213652] sd 1:0:0:0:[sda]不存在缓存模式页面 [8908.213697] sd 1:0:0:0:[sda]假设驱动器缓存:直写 [8908.213724] SD 1:0:0:0:[SDA]附加的 SCSI 可移动磁盘 ```
在这种情况下," dmesg"中没有错误消息,并且 USB 存储驱动程序检测到 pendrive 。如果您的设备没有可用的驱动程序,则通常仅前 6 行会出现在 dmesg 打印输出中。
如果设备枚举没有任何错误,但似乎没有执行任何操作,则可能没有安装驱动程序。根据制造商的名称搜索设备或 lsusb 中显示的 USB ID(例如 05dc :a781)。默认的 Linux 驱动程序可能不支持该设备-您可能需要下载或编译自己的第三方软件。
如果您的设备间歇性行为
劣质电源是导致设备无法工作,断开连接或通常不可靠的最常见原因。
- 如果使用外部有源集线器,请尝试将集线器随附的电源适配器更换为具有相同额定电压和极性的另一个兼容电源。
- 如果从集线器的下游端口中删除其他设备,请检查问题是否自行解决。
- 暂时将设备直接插入树莓派,看看行为是否有所改善。