树莓派 CM5 提供内置 Wi-Fi 的机型。不过,人们常说其板载天线的无线性能相对较弱。为了验证外接 USB Wi-Fi 适配器是否能提供更好的替代方案,我们决定进行测试。
Raspberry Pi 5 和 CM5 系列面临的另一个挑战是,许多 USB Wi-Fi 适配器无法开箱即用。在 Raspberry Pi 4 上,这种情况很少发生,因此当现有适配器无法被识别时,许多用户可能会感到惊讶。
在本文中,我们测试了 USB 2.0 和 USB 3.0 两种 Wi-Fi 适配器。尽管这两款产品采用的瑞昱(Realtek)芯片组不同,但我们将对比它们的性能,并说明如何安装所需的 Linux 驱动程序。
测试环境
测试环境如下所示。
产品:PL-R5 工业级树莓派
型号:树莓派计算模块 5 Rev 1.0
CPU 架构:ARM64 (aarch64)
操作系统:Debian GNU/Linux 12 (Bookworm)
内核:6.12.62+rpt-rpi-v8
本次评测中使用的Wi-Fi适配器是TP-Link AC1300和AC600。这两款产品均支持2.4 GHz和5 GHz的Wi-Fi网络。
AC600 是一款 USB 2.0 设备,而 AC1300 则支持 USB 3.0 连接。
除了规格之外,这两款适配器的尺寸和外观几乎完全相同。

AC600 据宣传兼容 Windows 和 macOS,而 AC1300 则仅官方支持 Windows。这两款产品均附带驱动程序光盘,但均未声称兼容 Linux。
技术规格
- AC600:1个数据流(1×1),最高433 Mbps(理论值)
- AC1300:2个数据流(2×2),最高866 Mbps(理论值)
驱动程序兼容性
所测试的两款适配器均未正式支持 Linux,且制造商未提供任何官方的 Linux 驱动程序。
在使用 Linux(包括 Raspberry Pi OS)时,如果标准内核不支持该适配器,您可能需要查找并安装兼容的第三方驱动程序。
驱动程序的兼容性取决于多个因素,包括内核版本、无线芯片组、CPU 架构和操作系统。
其中,无线芯片组最为重要。
第一步是确认USB设备已被检测到,并识别其使用的芯片组。安装正确的驱动程序至关重要,因为如果没有驱动程序,适配器将无法工作。
识别芯片组(AC600 和 AC1300)
在执行以下命令之前,请将 Wi-Fi 适配器插入 USB 端口。我们首先对 AC600 进行了测试。
由于这是一个USB设备,识别它的最简单方法是使用lsusb 命令。
lsusb
Bus 004 Device 004: ID 2357:0120 TP-Link Archer T2U PLUS [RTL8821AU]
该适配器已被成功识别为 USB 设备,芯片组也被明确识别为Realtek RTL8821AU。USB 供应商 ID 和产品 ID(2357:0120 )也证实了这是一台 TP-Link 设备。
接下来,我们使用ip link 命令检查了可用的网络接口。
由于测试系统未配备板载 Wi-Fi,成功识别的适配器应自动创建一个wlan0 接口。然而,并未出现任何无线接口。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 2c:cf:67:ba:f9:8e brd ff:ff:ff:ff:ff:ff
3: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether c8:ac:35:05:00:02 brd ff:ff:ff:ff:ff:ff
尽管 USB 设备本身已被正确检测到,但标准的树莓派内核并未创建无线网络接口,这表明该适配器不受默认驱动程序支持。
AC1300
我们对 AC1300 重复了相同的操作,并确定其芯片组为RTL8822BU。
lsusb 命令报告的USB ID为2357:0138 ,但未显示芯片组名称。因此,我们使用sudo dmesg | grep -i rtw 检查了内核日志(也可以通过lsusb -t 识别芯片组)。
Bus 003 Device 004: ID 2357:0138 TP-Link 802.11ac NIC
查找兼容的驱动程序
幸运的是,许多 USB Wi-Fi 适配器都有由社区开发的 Linux 驱动程序。由于其他用户也遇到过同样的问题,通常只需稍加搜索,就能找到合适的驱动程序。
不过,在另寻他法之前,不妨先检查一下Linux软件包仓库中是否已有兼容的驱动程序。
我们首先通过apt search 搜索了 Raspberry Pi OS 软件包仓库。
遗憾的是,没有适用于 RTL8821AU 芯片组的驱动程序包。搜索结果中出现了诸如rtw88_8821cu 、rtw88_8821ce 和rtw88_8821c 等包,但均不适用于 RTL8821AU。
由于在apt 上找不到合适的软件包,我们转而求助于 GitHub。
检索条件如下:
- RTL8821AU (AC600)
- RTL8822BU (AC1300)
- Linux 内核 6.12
- 树莓派操作系统《书虫》
- ARM64
理想情况下,该驱动程序还应支持DKMS(动态内核模块支持)。
- 使用 DKMS:每当内核更新时,驱动程序都会自动重新构建。
- 如果没有 DKMS:每次内核更新后,都必须手动重新编译驱动程序。
如果没有 DKMS 的支持,安装新内核的常规操作系统更新可能会导致 Wi-Fi 适配器无法工作。
如果设备已连接键盘和显示器,这可能不是什么大问题,但对于难以进行物理访问的远程系统而言,这可能会成为一个严重的问题。
我们选择的 GitHub 仓库
在搜索 GitHub 时,我们发现了一个推荐某款驱动程序的仓库。我们亲自试用后,发现它运行得非常顺利。
使用的代码库: https://github.com/lwfinger/rtw88
这是一个下游仓库,专门用于开发、测试和维护 Realtek rtw88 Wi-Fi 5 芯片组系列的驱动程序。
换句话说,它将针对 Linux 6.13 开发的最新wireless-next(主线)代码回溯移植到较旧的内核中,使其与运行内核 6.12 的 Raspberry Pi OS Bookworm 兼容。
支持的设备列表中还包含了我们之前已确认的两款芯片组——RTL8821AU和RTL8822BU——因此我们确信这是正确的驱动程序。
PCIe: RTL8723DE, RTL8812AE, RTL8814AE, RTL8821AE, RTL8821CE, RTL8822BE, RTL8822CE
SDIO: RTL8723CS, RTL8723DS, RTL8821CS, RTL8822BS, RTL8822CS
USB : RTL8723DU, RTL8811AU, RTL8811CU, RTL8812AU, RTL8812BU, RTL8812CU
USB : RTL8814AU, RTL8821AU, RTL8821CU, RTL8822BU, RTL8822CU
更棒的是,该代码库完全支持 DKMS,因此是长期维护的绝佳选择。
安装驱动程序
接下来,我们将安装驱动程序。
以下安装步骤遵循lwfinger/rtw88 中的 README 文件中的说明,适用于 Raspberry Pi OS。
安装所需软件包
在 Raspberry Pi OS 上,请先安装所需的构建工具。
尽管 Bookworm 已经包含了大部分必需的环境,但建议运行以下命令以确保所有内容均已安装。
sudo apt install -y raspberrypi-kernel-headers build-essential git
该代码库使用 DKMS,而 Raspberry Pi OS 默认并未安装该软件,因此请一并安装。
sudo apt install dkms
安装 rtw88 驱动程序
克隆仓库,安装 DKMS 驱动程序,安装所需的固件,最后将配置文件复制到相应位置。
git clone https://github.com/lwfinger/rtw88.git
cd rtw88
sudo dkms install $PWD
sudo make install_fw
sudo cp rtw88.conf /etc/modprobe.d/
重启系统后,请运行ip link 命令,以确认无线接口是否已创建。
现在您应该看到wlan0 或wlan1 中的一个。
连接 Wi-Fi
驱动程序安装成功后,只需配置已检测到的无线接口(wlan0 ),即可连接到您的 Wi-Fi 网络。
sudo nmcli dev wifi connect "5GHz SSID" password "Wi-Fi Password"
如果该命令显示连接已成功激活,则该适配器已准备就绪,可以使用了。
您可以使用以下命令断开连接,稍后再重新连接。
# Disconnect
sudo nmcli dev wifi disconnect wlan0
# Reconnect
sudo nmcli con up "SSID"
如果您使用的是树莓派桌面环境,还可以通过顶部菜单栏中的网络图标连接或断开 Wi-Fi 连接。
检查信号强度(AC600)
在确认适配器已成功连接后,我们对其无线性能进行了评估。
为了检查信号质量,我们使用了以下命令。
iw dev wlan0 link
Connected to XX:XX:XX:XX:XX:XX (on wlan0) # sample
SSID: secret # sample
freq: 5220
RX: 1846814 bytes (8763 packets)
TX: 370914443 bytes (48765 packets)
signal: -40 dBm
rx bitrate: 390.0 MBit/s VHT-MCS 9 80MHz VHT-NSS 1
tx bitrate: 433.3 MBit/s VHT-MCS 9 80MHz short GI VHT-NSS 1
以下这三行最为重要。
signal: -40 dBm
rx bitrate: 390.0 MBit/s VHT-MCS 9 80MHz VHT-NSS 1
tx bitrate: 433.3 MBit/s VHT-MCS 9 80MHz short GI VHT-NSS 1
就信号强度而言,数值越接近0 dBm,信号就越强。
- -30 至 -45 dBm:极佳
- -50 至 -67 dBm:良好
- 低于 -70 dBm:信号微弱
我们的测试结果为-40 dBm,表明无线信号非常良好。
符号VHT-MCS 9 80MHz VHT-NSS 1 也提供了有用的信息。
- VHT表示 Wi-Fi 5(802.11ac)传输模式。
- MCS 9是所支持的最高调制与编码方案。
- 80 MHz是信道带宽。
- VHT-NSS 1表示单个空间流(一个天线)。AC1300 应报告VHT-NSS 2,表示两个空间流。
(VHT 代表“超高速吞吐量”。)
无线标准通常表示如下:
- 802.11n→HT(Wi-Fi 4)
- 802.11ac→VHT(Wi-Fi 5)
- 802.11ax→HE(Wi-Fi 6)
随着Wi-Fi技术的不断迭代,信道带宽也随之增加。
- 20 MHz
- 40 MHz
- 80 MHz ← 本文测试的适配器所使用的频率
- 160 MHz
将 AC600 连接到 USB 3.0 端口
接下来,我们将仅官方支持 USB 2.0 的 AC600 连接到 USB 3.0 接口进行了测试。
重启系统后,我们将适配器插到了USB 3.0接口上,并再次执行了相同的命令。
iw dev wlan0 link 的输出结果如下。
signal: -42 dBm
rx bitrate: 351.0 MBit/s VHT-MCS 8 80MHz VHT-NSS 1
tx bitrate: 433.3 MBit/s VHT-MCS 9 80MHz short GI VHT-NSS 1
与 USB 2.0 测试相比,接收信号强度略有下降,而接收链路速率则从390.0 Mbit/s降至351.0 Mbit/s。
但在实际使用中,无论是在 USB 2.0 端口还是 USB 3.0 端口上使用该适配器,几乎都感觉不到任何明显差异。
检查信号强度(AC1300)
接下来,我们将支持 USB 3.0 的 AC1300 连接到 USB 3.0 接口进行测试。
由于驱动程序已经安装完毕,因此无需任何额外配置,适配器便被自动检测到了。
我们再次检查了无线链路信息。
signal: -40 dBm
rx bitrate: 780.0 MBit/s VHT-MCS 9 80MHz VHT-NSS 2
tx bitrate: 866.7 MBit/s VHT-MCS 9 80MHz short GI VHT-NSS 2
信号强度为-40 dBm,表明连接状况极佳,与AC600相当。
不出所料,协商得出的链路速率(780.0 / 866.7 Mbit/s)明显高于 AC600 的速率。
信道带宽仍为80 MHz,而适配器正确报告了VHT-NSS 2,表明存在两个空间流。
将 AC1300 连接到 USB 2.0 端口
与 AC600 一样,我们重启了系统,并将 AC1300 连接到 USB 2.0 端口。
signal: -42 dBm
rx bitrate: 702.0 MBit/s VHT-MCS 8 80MHz VHT-NSS 2
tx bitrate: 866.7 MBit/s VHT-MCS 9 80MHz short GI VHT-NSS 2
信号强度略微下降至-42 dBm,而协商的接收链路速率则从780.0 Mbit/s降至702.0 Mbit/s。
端口选择几乎没有实际影响
尽管 AC600 是为 USB 2.0 设计的,而 AC1300 支持 USB 3.0,但无论连接到哪个 USB 端口,这两款适配器都能正常工作。
在日常使用中,无论是从性能还是易用性来看,USB 2.0 接口与 USB 3.0 接口之间的差异几乎难以察觉。

信号强度也会根据开机后进行测量的时间不同而略有波动。
实际上,USB 端口的物理位置以及周围的电气噪声可能比 USB 接口本身的影响更大。
虽然每款适配器连接到其专用的USB端口时性能略有提升,但除非首选的端口已被占用,否则几乎没有理由使用其他端口。
吞吐量测试
接下来,我们使用iperf3 测量了实际的网络吞吐量。
我们在 PL-R5 和另一台 Mac 上都安装了iperf3 ,并将那台 Mac 启动到了服务器模式。
brew install iperf3
iperf3 -s
在树莓派上安装了iperf3 后,我们使用Mac的IP地址运行了客户端。
iperf3 -c <Mac IP address>
iperf3 测试结果
Mac(接收端)一侧的最后一行显示了测得的吞吐量。
# AC1300
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 359 MBytes 301 Mbits/sec 0 sender
[ 5] 0.00-10.02 sec 358 MBytes 300 Mbits/sec receiver
# AC600
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 163 MBytes 137 Mbits/sec 0 sender
[ 5] 0.00-10.03 sec 160 MBytes 134 Mbits/sec receiver
AC1300的传输速率约为300 Mbit/s,而AC600的传输速率约为134 Mbit/s。
尽管这些数值低于其理论最大链路速率(分别为866.7 Mbit/s和433.3 Mbit/s),但它们代表了实际的应用层吞吐量。
为了获得更准确的测量结果,您可以使用-P 4 选项,以四个并行流的方式运行iperf3 。
iperf3 -c <IP address> -P 4
# AC600
[ ID] Interval Transfer Bitrate Retr
[SUM] 0.00-10.00 sec 161 MBytes 135 Mbits/sec 0 sender
[SUM] 0.00-10.03 sec 154 MBytes 129 Mbits/sec receiver
# AC1300
[ ID] Interval Transfer Bitrate Retr
[SUM] 0.00-10.00 sec 363 MBytes 305 Mbits/sec 0 sender
[SUM] 0.00-10.05 sec 351 MBytes 293 Mbits/sec receiver
测试结果始终保持一致,表明无线性能稳定。

测试结果与对比
下表总结了测试结果。
由于Wi-Fi链路速率(RX、TX和iperf3 )会因测量时机和无线电环境的不同而有所变化,因此这些数值应视为参考测量值,而非绝对数值。
特别是,iw dev wlan0 link 报告的数值往往会出现波动。

结论
在我们的测试环境中,使用 Raspberry Pi OS Bookworm 时,这两款适配器都需要额外的 DKMS 驱动程序。
本文中使用的驱动程序是基于wireless-next代码库的回溯移植版本,这意味着标准 Linux 内核最终可能会支持这些芯片组。
特别是对RTL8822BU芯片组的支持,似乎正在上游项目中取得进展。相关讨论可在树莓派官方论坛上找到。
启用RTW88_8821AU选项可添加对 RTL8811AU/RTL8821AU 系列的支持。
来源:https://forums.raspberrypi.com/viewtopic.php?t=392929
基于Trixie及更新内核的未来 Raspberry Pi OS 版本可能会包含改进的内置支持。
然而,截至本文撰写之时,某些环境仍需要使用 DKMS/回溯移植驱动程序,即使是针对 RTL8822BU 芯片组也是如此。
在我们的测试中,lwfinger/rtw88代码库为这两款适配器都提供了稳定且可靠的工作表现。
如果您使用的是基于相同瑞昱(Realtek)芯片组的 USB Wi-Fi 适配器,我们建议您按照本文所述的步骤操作。
由Raspida供稿
Raspida 运营 raspida.com,这是一个旨在让非工程师也能乐在其中的树莓派信息网站。基于多年对树莓派的实践经验,该网站发布了大量实用文章和专题内容,既适合经验丰富的树莓派用户,也适合有兴趣入门的新手。Raspida 还向 PiLink 网站供稿,发布关于工业级树莓派产品的技术博客文章。

