在 Linux 上使用 Netgear A6210 USB 无线网卡¶
背景¶
最近要让一台 Linux 机器连接无线网,所以要买一个对 Linux 支持比较好的 USB 无线网卡。以前曾经用过一些 USB 无线网卡,但对 Linux 的支持大多不好,要么是需要 out of tree module,要么就忽然不能工作。因此前期的调研十分重要。
挑选 USB 无线网卡¶
在调研的时候,发现了 morrownr/USB-WiFi 仓库,里面总结了一些 Linux 支持比较好的 USB 无线网卡,由于是外国人写的,所以里面很多型号在国内都买不到,但实际上 USB 无线网卡的芯片组一般就是那些,所以需要先确定芯片组,再根据芯片组找对应的 USB 无线网卡。
开发用于 USB 无线网卡的厂商常见的是:Mediatek(2011 年 MediaTek 收购了 Ralink)和 Realtek。国内直接买到的 USB 无线网卡大部分是 Realtek,但是 Realtek 的 Linux 驱动很长一段时间都是 out of tree 的状态,只有比较新的一些芯片组有内核支持,而 Mediatek 系列的芯片内核支持较好,缺点是比较贵。下面从上面的仓库里摘录了一些芯片组的 Linux 内核支持情况:
Chipset | Linux | Commit | 802.11 | USB | Bluetooth | Package | Links |
---|---|---|---|---|---|---|---|
MT7601u | 4.2+ | mt7601u | b/g/n | 2.0 | N/A | Official | |
MT7610u | 4.19+ | mt76x0u | b/g/n/ac | 2.0 | N/A | Official | |
MT7612u | 4.19+ | mt76x2u | b/g/n/ac | 3.0 | 4.0 | Official | |
MT7662u | b/g/n/ac | 3.0 | 4.0 | Official | |||
MT7921au | |||||||
MT7922u | |||||||
RTL8188eus | 3.12+ | rtl8188eu/r8188eu/rtl8xxxu LKDDB | b/g/n | 2.0 | N/A | QFN-46 | Official |
RTL8188gu | N/A | 3rd party patch | |||||
RTL8723bu | 4.6+ | rtl8xxxu LKDDB | b/g/n | 2.0 | 4.0 | QFN-56 | USB 0bda:b720,Official |
RTL8723du | 6.2+ | rtw88 LKDDB | b/g/n | 4.2 | QFN-48 | Official | |
RTL8811au | N/A | 3rd party | b/g/n/ac | 2.0 | N/A | QFN-56 | Official Datasheet |
RTL8821au | N/A | b/g/n/ac | 2.0 | 4.0 | QFN-56 | Official | |
RTL8811cu | 6.2+ | rtw88 LKDDB | b/g/n/ac | 2.0 | N/A | QFN-56 | Official,Datasheet |
RTL8821cu | 6.2+ | rtw88 LKDDB | b/g/n/ac | 2.0 | 4.2 | QFN-56 | Official,Datasheet |
RTL8812au | N/A | 3rd party | b/g/n/ac | 3.0 | N/A | QFN-76 | Official |
RTL8812bu | 6.2+ | rtw88 LKDDB | b/g/n/ac | 3.0 | N/A | TFBGA | Official |
RTL8822bu | 6.2+ | rtw88 LKDDB | b/g/n/ac | 3.0 | 4.1 | TFBGA | Official,Datasheet |
RTL8822cu | 6.2+ | rtw88 LKDDB | |||||
RTL8814au | N/A | 3rd party | b/g/n/ac | 3.0 | N/A | QFN-128 | Official |
可以观察到规律:Realtek 的产品型号中,881x 和 882x 有对应的关系,前者不带蓝牙,后者带。最后一位数字越大,则越新。
在内核源码中可以找到一些使用这个芯片组的 USB 无线网卡型号,但需要注意的是,有时候同样的型号,有 v1v2v3 之分,可能用的是不同的芯片组,购买前需要问清楚。
购买的时候,考虑芯片组的支持情况,Linux 内核版本等等因素,我最后购买了 Netgeat A6210 认证翻新版,使用芯片组 MT7612u,价格是 138 人民币。
使用¶
使用的 Linux 内核版本是 5.10,插上 USB 无线网卡即可使用:
在使用 iwd 的连接无线网的时候,还出现一个小插曲,就是 iwd 遇到很长的中文 SSID 时会崩溃,于是我进行了修复,并且发送给 iwd mailing list(link),并等待修复。原理很简单,一是打印十六进制字符的时候没有考虑符号,二是缺少了缓冲区溢出的检查。
Realtek 上游 Linux 内核驱动支持¶
归功于 Sascha Hauer s.hauer@pengutronix.de 老哥,最近 Linux 上游增加了不少对 realtek 网卡的支持,因此只要系统足够新,realtek 的网卡也值得考虑,如:
- RTL8723du: Linux 6.2+
- RTL8811cu: Linux 6.2+
- RTL8821cu: Linux 6.2+
- RTL8812bu: Linux 6.2+
- RTL8822bu: Linux 6.2+
- RTL8822cu: Linux 6.2+
RTL8188gu 也有正在 review 的 patch。经过我的测试也是工作的。