我正在使用 Raspberry Pi 4 Model B 进行一些开发工作,这需要使用多个 USB 端口。 我了解了与Raspberry Pi的USB端口相关的性能。
树莓派4
Raspberry Pi 4B 有 2 个 USB 3.0 端口和 2 个 USB 2.0 端口,全部连接到 VL805 USB 控制器。 所有四个端口上的 USB 2.0 电缆都连接到 VL805 中的单个 USB 2.0 集线器,因此这四个 USB 2.0 端口的总带宽实际上只是一个 USB 2.0 端口的带宽。 如果四个USB端口连接符合USB 1.1或USB 2.0协议规范的USB设备,其总带宽仅为480Mbps。
树莓派4B使用的VL805 USB控制器,我在网上查了这个USB控制器的介绍,如下图:
威盛 VL805 是一款单芯片 USB 3.0 主控制器,可支持 USB (5Gbps SuperSpeed)、高速 (480Mbps)、全速 (12Mbps) 和低速 (1.5Mbps) 设备的 PCI Express 接口。 根集线器包括 4 个下游端口,允许多个外设同时运行。
威盛VL805符合通用串行总线3.0规范和英特尔可扩展xHCI主机控制器接口,并完全向后兼容USB 2.0和1.1规范,确保与传统USB设备的无缝连接。 威盛 VL805 具有 PCI Express 2.0 x1 接口,并向后兼容 PCI Express 1.0,非常适合 PC 主机和附加卡应用。
需要注意的是,VL805采用的是PCI Express 2.0 x1,该接口的可用带宽为500MB/s,即4Gbps。 那么USB控制器的总带宽是4Gbps,而USB 3.0的速率是5Gbps,这意味着它无法达到USB3.0的最大速率,只能达到80%。 如果同时使用两个 USB 3.0 端口,可用带宽将会较低。
在 Raspberry Pi 4 上,之前型号上使用的 USB 控制器位于 USB Type C 端口上,默认情况下处于禁用状态。
树莓派 0、1、2 和 3
之前的 Raspberry Pi Zero、1、2 和 3 型号仅支持一个根 USB 端口。 所有 USB 设备的数据都将集中在这条总线上。 该总线的最大运行速度为480Mbps。 也就是说,所有设备必须共享480Mbps USB 带宽。
Raspberry Pi Zero、1、2、3支持USB高速设备没有问题,但对低速和全速设备没有很好的支持。 与低速和全速设备通信时产生的软件开销会影响同时活动的设备数量,尽管连接少量低速和全速设备不会造成任何问题。
已知的 USB 问题
在 Raspberry Pi 官方网站的已知 USB 问题部分,您可以看到一些 Raspberry Pi USB 问题的列表。
1. 与 USB 3.0 集线器的互操作性
与 USB 3.0 集线器的互操作性
USB 3.0 集线器在使用全速或低速设备(包括大多数鼠标和键盘)时存在问题。 大多数 USB 3.0 集线器硬件中的错误意味着 Pi 4 之前的型号无法与连接到 USB 3.0 集线器的全速或低速设备通信。
USB 2.0 高速设备(包括 USB 2.0 集线器)在通过 USB 3.0 集线器连接时可以正常运行。
避免将低速或全速设备连接到 USB 3.0 集线器。 解决方法是将 USB 2.0 集线器插入 USB 3.0 集线器的下游端口并连接低速设备,或者在 Pi 和 USB 3.0 集线器之间使用 USB 2.0 集线器,然后将低速设备插入 USB 2.0 集线器。
从上面可以看出,Raspberry Pi的USB与USB 3.0集线器的兼容性是有问题的。 由于Raspberry Pi 4具有USB 3.0接口,因此不存在兼容性问题。 Raspberry Pi 4 之前的其他型号都会存在无法与连接到 USB 3.0 集线器的全速或低速设备通信的问题。
示意图如下:
官方的解决方案是在USB 3.0集线器和全速或低速设备之间连接一个USB 2.0集线器,或者在Raspberry Pi和USB 3.0集线器之间使用USB 2.0集线器,然后连接全速或低速设备。低速设备连接到 USB 2.0 集线器。 最重要的是避免将低速或全速设备连接到 USB 3.0 集线器。
示意图如下:
2. USB 1.1 网络摄像头
USB 1.1 网络摄像头
旧的网络摄像头可能是全速设备。 由于这些设备传输大量数据并产生额外的软件开销,因此无法保证可靠的操作。 作为解决方法,请尝试以较低的分辨率使用相机。
由于Raspberry Pi 4之前的设备对低速(low speed)和全速(full speed)设备的支持较差,因此在与低速和全速设备通信时会产生较大的软件开销。 旧的网络摄像头可能是全速设备。 网络摄像头的数据量很大。 传输大量数据会造成额外的软件开销,树莓派无法保证可靠运行。
官方给出的解决方案是尝试降低分辨率。 使用较低的分辨率将减少传输的数据量。
3.深奥的USB声卡
深奥的 USB 声卡
昂贵的发烧级声卡通常使用大量 USB 带宽:无法保证 96kHz/192kHz DAC 的可靠运行。 作为解决方法,强制输出流为 CD 质量(44.1kHz/48kHz 16 位)会将流带宽降低到可靠的水平。
发烧级USB声卡通常可以支持96kHz/192kHz录音室音质。 相比之下,由于使用了大量的USB带宽,因此Raspberry Pi无法保证96kHz/192kHz的可靠运行。
官方的解决方案是将声卡的输出修改为CD品质(44.1kHz/48kHz 16位),从而将数据流带宽降低到Raspberry Pi可以可靠运行的水平。
4. 单TT USB集线器
单 TT USB 集线器
USB 2.0 和 3.0 集线器具有一种与连接到其下游端口的全速或低速设备进行通信的机制,称为事务转换器 (TT)。 该设备缓冲来自主机的高速请求,并以全速或低速将它们传输到下游设备。 USB 规范允许两种集线器配置:单 TT(所有端口一个 TT)和多 TT(每个端口一个 TT)。 由于硬件限制,如果将太多全速或低速设备插入单个 TT 集线器,这些设备可能会表现不可靠。 建议使用 Multi TT 集线器与多个全速和低速设备连接。 作为解决方法,请在 Pi 自己的 USB 端口和单个 TT 集线器之间分布全速和低速设备。
如果您使用单个事务转换器 USB 集线器(Single TT USB hubs)并将多个全速或低速设备连接到 USB 集线器,则由于 Raspberry Pi 上的硬件问题,会出现不可靠的操作。 因此,官方建议使用具有多个事务转换器的USB集线器(Multi TT USB hubs)。 如果您只有一个带有单个事务转换器的 USB 集线器,官方的解决方案是在 Raspberry Pi 自己的 USB 端口和 USB 集线器之间分配全速和低速设备。
总结
总体而言,Raspberry Pi 的 USB 性能有点慢。 树莓派4的所有USB2.0接口共享相同的带宽,USB3.0接口的带宽无法充分利用。 Raspberry Pi 4 之前的 Raspberry Pi 版本存在许多兼容性问题。 ,也是所有接口的公共带宽。 结合树莓派USB口供电能力较弱的问题,可以看出树莓派的USB性能很一般,无法用来做一些要求较高的事情,但还是可以做一些基础的事物。
参考
本文链接: