Raspberry Pi CM4上的WiFi 6达到1.34 Gbps

2020-12-23 03:34:46

购买三张无线网卡后,需要一个新的WiFi路由器,优化我的流程以交叉编译Raspberry Pi的Linux内核,安装Intel的WiFi固件,并修补Intel的无线驱动程序以使其能够在在Raspberry Pi上,我对EDUP Intel AX200 WiFi 6 PCIe卡进行了基准测试,并在Raspberry Pi和新的ASUS WiFi 6路由器之间获得了1.34 Gbps的带宽。

您是否曾经以50美元的预算启动过一个需要花费几个小时的项目,并且最终意识到您在该项目上花费了整整一个月的时间,并且花费了近一千美元?

当我测试Compute Module 4的板载WiFi 802.11ac芯片时,即使使用外部天线,我的速度也达到了约80 Mbps。

我想知道使用PCI Express卡是否可以获得更好的性能。因此,我购买了内部装有Realtek芯片的ASUS AC51 PCIe卡,并花了几天时间调试Realtek的Linux驱动程序。最终,我放弃了,因为Linux上的大多数人似乎都使用USB版本,而不是PCI Express。如果您想了解更多有关该故障的信息,请在ASUS AC51上查看此GitHub问题。

因此,在对Linux上受良好支持的WiFi芯片组进行了更多研究之后,我决定使用EDUP Intel AX200 PCIe卡,如本文顶部所示。从我在网上阅读的内容来看,所需的iwlwifi驱动程序在运行Linux的各种台式机和笔记本电脑中得到了更广泛的使用。

该博客文章在下面继续,但是如果您更倾向于视觉,我还在Pi上发布了有关WiFi 6的视频:

为缩略图表示歉意-在我的A / B测试中,它的表现比不张嘴的杰夫好1000倍。

在WiFi的早期,当苹果公司的AirPort风行一时时,我们有了802.11b WiFi,理论上最大速度为11 Mbps。

在过去的几十年中,我们拥有速率为54 Mbps的802.11a和g,速率为300-600 Mbps并使用2.4或5 GHz频谱的802.11n(AKA WiFi 4),以及最近的802.11ac(gka WiFi 5)在5 GHz频段上高达1.3 Gbps。

我还跳过了其他一些标准,但是去年802.11ax标准被命名为' WiFi 6'现在是黄金标准,理论上允许的最大值是10 5 GHz频段上的Gbps。

现在,回到PCI Express卡。它非常适合Compute Module 4 IO板上的1x插槽,无需任何适配器。

我要测试的所有板卡的第一件事是启动Pi并查看使用lspci可以看到的内容:

自从出现板卡以来,我还运行了dmesg并查找了PCI Express初始化部分,以确保没有BAR空间问题:

[0.940759] pci 0000:00:00.0:BAR 8:分配了[mem 0x600000000-0x6000fffff] [0.940790] pci 0000:01:00.0:BAR 0:分配了[mem 0x600000000-0x600003fff 64bit]

我测试过的GPU和其他一些卡遇到了BAR分配问题,但该卡似乎还不错。

我还运行了ip a,看看运气好不好,该卡是否已在Pi OS中得到支持,但是我没有运气。仅将内置的wlan0接口与local和eth0一起列出。

在为我的第一个Pi GPU测试视频经历了将近十二次重新编译Linux内核的艰苦努力之后,我决定在Mac上建立一个可靠的交叉编译环境,该处理器具有更快的处理器。

该环境是在Mac上的虚拟机内部构建的,其主要原因是很难在Mac上安装Raspberry Pi ext4文件系统(即使使用Mac的Docker),但也很容易在VirtualBox下的Linux VM中执行操作。我必须这样做,以便能够在使用microSD卡时将已编译的内核复制到Pi的适当位置。

还有其他方法可以做到这一点,例如通过网络而不是整个内核复制特定于驱动程序的文件,或者使用netboot进行复制,但是由于在各种情况下它都是可靠且可重复的,因此目前这就是我要做的。

有关交叉编译的完整说明,请参见我在GitHub上的Raspberry Pi PCIe项目存储库:Raspberry Pi Linux交叉编译环境。

最重要的是使用menuconfig配置内核(如果需要,可以手动配置),并启用以下选项:

设备驱动程序>网络设备支持>无线局域网英特尔> "英特尔无线WiFi下一代AGN(iwlwifi)"

保存该配置后,编译内核。在我的Mac上,在VM中,大约需要10分钟。在Pi 4上,大约需要一个小时!

需要更多帮助和细节吗?在这里查看我在整个过程中制作的视频:Raspberry Pi CM4上的WiFi 6使它成为Fly!。

编译完成后,请按照其余说明将已构建的内核,dtb等复制到microSD卡上(假设您正在使用CM4 Lite,否则请分别安装CM4的eMMC版本)。

完成所有复制后,我卸载了两个分区,然后关闭了VM。我从Mac上拉了microSD卡,将其放回Pi中,启动了它,然后用手指交叉了!

我登录到Pi并运行dmesg来检查日志...并且我意识到一定缺少某些东西,因为我看到消息找不到合适的固件!

我还必须从Linux Wireless网站安装适当的设备固件。我在英特尔无线驱动程序页面上找到了AX200的驱动程序下载,并将其安装在Pi上,如下所示:

这次,我运行了dmesg,看到了更多的输出,但同时也出现了很多错误。使用dmesg --follow,我发现每隔几秒钟就会打印出类似的错误。

并检查了ip a和iw列表后,发现有一个新的无线设备,但它似乎陷入了循环,每次尝试初始化时都会增加其ID。

热区问题只是方向错误;这不是致命的,实际上,如果我手动读取热区数据,它似乎可以工作,因此可能是驱动程序中的错误。

对于第二个错误,我最终在Linux内核邮件列表中找到了一个有用的补丁。

PawełMarczewski提出的解决方案是删除错误消息和触发它的检查。我认为这值得一试,因此我使用该电子邮件中的差异修补了Intel的WiFi驱动程序。

我直接从邮件列表页面复制了diff,再次启动了交叉编译环境,登录,然后回到Linux源目录。

我用邮件列表中diff的内容创建了一个名为iwlwifi.patch的新文件,并用git apply -v iwlwifi.patch应用了它。补丁程序干净利落地偏移了,于是我重新编译(第二次快得多),将所有内容复制到Pi的microSD卡上,然后使用补丁驱动程序启动Pi。

我运行ip a检查接口,它显示为wlan1,我运行iw列表,并且在那里也正确显示!

因此,最后要测试的是连接到我的网络。我在/etc/wpa_supplicant/wpa_supplicant.conf中编辑了WPA请求者文件,设置了我的国家代码和网络详细信息

一切都已连接,WiFi卡获取了一个IP地址。我们在做生意!

第一次执行此操作时,我使用iperf进行了一些测试,但此时意识到我已将802.11ax无线卡连接到老式的802.11ac无线路由器。所以我不得不想办法通过WiFi 6进行连接。

GitHub上的PixlRainbow并没有升级我的整个家庭网络,而是建议我尝试将另一台计算机升级到WiFi 6,然后测试将其直接连接到Pi。

因此,当我发现20美元的“明智的老虎”时,我感到非常兴奋。适用于我的Dell XPS 13笔记本电脑的Intel AX200卡。我购买了它并将其安装在Dell中,并制作了视频“如何将Dell XPS 13升级到WiFi 6(802.11ax)”的视频。

但是,当我测试速度时,由于戴尔的两分两天线性能和配置,我发现升级后的卡只能在XPS 13上以300-400 Mbps的速度通过,这让我感到失望。我的不带WiFi 6的MacBook Pro可以通过802.11ac达到900 Mbps的速度,因此整个系统的设计非常重要。

我很高兴在戴尔笔记本电脑中安装WiFi 6,但是它还不足以测试从Pi上获得的速度有多快。

因此,我的下一步是升级无线路由器。并且有很多可用的AX路由器,但是大多数速度超过千兆的路由器比基本模型要贵很多。而且,如果我想突破千兆位的障碍,我需要一个具有更快上行链路的设备。

我发现我的本地Micro Center装有具有2.5 Gbps可切换LAN / WAN端口的ASUS RT-AX86U WiFi 6路由器。我的家庭Internet连接无法做那么多事情(感谢Spectrum!),但是我确实希望尽快将内部网络升级到10 Gbps,所以也很高兴能拥有快速的WiFi连接。

首先,我购买了十个千兆网络设备,包括一个MikroTik 4 SFP +端口10G交换机...然后,我意识到事后购买的特定收发器无法与路由器的2.5 Gbps端口配合使用-他们只做1或10 Gbps。

其次,我决定遵循GitHub上St0nedB的建议,并在路由器上设置ASUSWRT-Merlin固件,以便可以在路由器和Raspberry Pi之间直接运行iperf。

如果您想尝试同样的方法,可以在GitHub上链接直接使用iperf与ASUS路由器进行基准测试的说明。

在我的千兆位网络上,Pi达到了其内置的千兆位有线网络性能,使其达到了930兆位。

并直接连接到AX路由器,它可以泵送1.34吉比特(或双向1.5吉比特,具有全双工传输)。 这款WiFi 6 AX200卡的运行速度比内置千兆有线网络快30%,比内置WiFi快16倍! 在Raspberry Pi上获得更快的WiFi并不是很困难,但是它确实需要一些额外的调整和一个内核补丁,这使得大多数人很难使其正常工作。 希望我遇到的问题将来会更容易解决。 我想探索这种快速无线设置带来的更多可能性,例如将WiFi 6与快速SATA或NVMe存储一起用于超快速无线NAS,或将WiFi 6与千兆以太网一起使用来构建自定义路由器或访问点。 如果您想跟随这些冒险,请订阅我的YouTube频道并在Raspberry Pi PCIe设备数据库上浏览问题。