树莓派cm4安装ax200驱动-wifi6

news/2024/11/15 5:29:38/

操作过程

0. 准备

树莓派CM4-CMIO套装(目前只有这套装有PCIE接口)
AX200-WIFI6网卡
一台win10电脑用于我的主电脑用来烧写树莓派固件以及修改boot中的config.txt
一台ubuntu20电脑编译树莓派内核

1. 树莓派cm4基本操作

1.1 烧写最新固件到emmc
请看这里:树莓派CM4和CM4IO上手,https://blog.csdn.net/qq_27158179/article/details/113047158?spm=1001.2014.3001.5501

*. 树莓派默认是用32位内核启动,需要修改 boot 分区下的 config.txt[2] 文件(我的树莓派是运行EMMC上的系统,因此使用USB线连接,让其进入BOOT模式,U盘修改config.txt,最后一行添加)
arm_64bit=1 kernel=kernel8.img

1.2 ssh
树莓派和电脑连到同一个路由器
ssh登录树莓派
账号密码是:pi/raspberry

1.3 更新
sudo apt update
更新完毕后关机。
sudo shutdown -h now

2. 连接AX200

硬件连接AX200,重新让树莓派上电。
注意一般不能带电操作

pi@raspberrypi:~ $ lspci
00:00.0 PCI bridge: Broadcom Limited Device 2711 (rev 20)
01:00.0 Network controller: Intel Corporation Device 2723 (rev 1a)

3. 交叉编译生成kernel,开启intel的wifi驱动工具-iwlwifi

默认内核没有这个iwlwifi工具(intel的wifi驱动),需要重新编译内核

<3.1> 首先下载树莓派的内核

https://github.com/raspberrypi/linux
可以直接使用 git clone --depth=1 --branch rpi-5.9.y https://github.com/raspberrypi/linux 来下载 5.9 版本的内核
个人建议从 github 直接下载 zip 包,分支选择5.9.y,最新的5.10.y不知为什么总是下载失败,文件大小约200MB才是正常尺寸。

<3.2> 然后下载交叉编译工具(x86_64 编译 arm64)

https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz

<3.3> 安装依赖项

sudo apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev

<3.4> 解压操作

首先把内核源码和编译工具放到同一个给文件夹内~/raspberry

unzip linux-rpi-5.9.y.zip linux-rpi-5.9
tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
mv gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu gcc-linaro

<3.5>、把交叉编译工具添加到环境变量

首先 nvim ~/.bashrc
在 .bashrc 后面加上:export PATH=$PATH:~/gcc-linaro/bin
然后执行 source ~/.bashrc 刷新环境变量

<3.6>、进行编译前的处理

首先进入内核目录

cd ~/raspberry/linux-rpi-5.9

先用默认配置创建.config文件
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig

再自定义内核

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig

加入iwlwifi:
device drivers > network device support > wireless LAN > intel devices > intel wireless wifi next gen agn(iwlwifi)
device drivers > network device support > wireless LAN > intel devices > intel wireless wifi next gen agn(iwlwifi) > intel wireless wifi MVM

这两个

<3.7>、 fix bug1,如果不改这个,ax200会起不来,错误原因疑似检测温度出错,不断复位

cd ~/raspberry/linux-rpi-5.9/drivers/net/wireless/intel/iwlwifi/mvm
打开fw.c
找到并注释掉(大概第1200行): 
     /* Init RSS configuration */
//-    if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22000) {
//-        ret = iwl_configure_rxq(mvm);
//-        if (ret) {
//-            IWL_ERR(mvm, "Failed to configure RX queues: %d\n",
//-                ret);
//-            goto error;
//-        }
//-    }
//-
  

<3.8>、启动编译过程

make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs

整个编译时间可能会比较长,根据编译机器的硬件处理器数量来制定同时使用多少线程编译(-j{‌‌n},这里同时使用8个线程)。

<3.9> 使用sshfs复制编译完的内核到板子

*. pi部分-创建root账号并设置密码
sudo su
passwd    #设置root密码

修改/etc/ssh/sshd_config


PermitRootLogin prohibit-password

改为
PermitRootLogin yes

sudo reboot

重启后可以用root账号登录

*. ubuntu主机Setting up an SSHFS mount
注意我的树莓派IP是192.168.8.130

sudo apt install sshfs
sudo mkdir -p /mnt/pi-ext4
sudo mkdir -p /mnt/pi-fat32

sudo sshfs root@192.168.8.130:/ /mnt/pi-ext4
sudo sshfs root@192.168.8.130:/boot /mnt/pi-fat32

我树莓派重新安装了系统,如果用同一个IP,会出错error:   read: Connection reset by peer
开启调试sudo sshfs root@192.168.8.130:/ /mnt/pi-ext4 -o debug -o sshfs_debug
发现原因是主机更改了密钥
ssh-keygen -f "/root/.ssh/known_hosts" -R 192.168.8.130


Install the kernel modules onto the drive:
cd ~/raspberry/linux-rpi-5.9
sudo env PATH=$PATH make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=/mnt/pi-ext4 modules_install

Copy the kernel and DTBs onto the drive:
sudo cp arch/arm64/boot/Image /mnt/pi-fat32/kernel8.img
sudo cp arch/arm64/boot/dts/broadcom/*.dtb /mnt/pi-fat32/
sudo cp arch/arm64/boot/dts/overlays/*.dtb* /mnt/pi-fat32/overlays/
sudo cp arch/arm64/boot/dts/overlays/README /mnt/pi-fat32/overlays/


*. Unmount the filesystems:
sudo umount /mnt/pi-ext4
sudo umount /mnt/pi-fat32
Reboot the Pi and voila!, you're done!

4 安装驱动

AX200官方驱动在这里:https://www.intel.com/content/www/us/en/support/articles/000005511/wireless.html
AX200,复制链接

注意驱动要求内核版本大于等于5.1

mkdir wifi6-ax200
cd wifi6-ax200
wget https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi/iwlwifi-cc-46.3cfab8da.0.tgz

tar xzvf iwlwifi-cc-46.3cfab8da.0.tgz
cd iwlwifi-cc-46.3cfab8da.0/
sudo cp *.ucode /lib/firmware

sudo reboot
发现重启后的 ifconfig中wlan0已经正常了。我的CM4没有内置WIFI的,所以这里是wlan0

5. 连接WIFI,并测试

dmesg还是会有错误的,但是可以不用理会。WIFI正常使用了。 

连接wifi使用界面操作

sudo apt install iperf3
# Server 端
iperf3 -s

# Client 端
iperf3 -c SERVER_IP

主要是路由器是MT7688,百兆的。

结尾

本文在树莓派CM4上安装了WIFI6-AX200这款网卡的驱动。大部分都是根据参考资料[3]进行的,参考资料[2]的重要之处是点醒了笔者需要修改config.txt让树莓派运行在arm64,而不是32位。要64位的iwlwifi才会在dmesg中打印信息。 

 

参考1、Raspberry Pi Linux Cross-compilation Environment,https://github.com/geerlingguy/raspberry-pi-pcie-devices/tree/master/extras/cross-compile
参考2、编译树莓派 4B Linux 5.9 内核,https://shumeipai.nxez.com/2020/10/18/compile-raspberry-pi-4b-linux-5-9-kernel.html
参考3、https://www.jeffgeerling.com/blog/2020/wifi-6-gets-134-gbps-on-raspberry-pi-cm4


http://www.ppmy.cn/news/625373.html

相关文章

CM4 空格替换

空格替换 解题思路 String是不可变的 但是StringBuffer是可变的 并且StringBuffer的append(index,element)方法可以添加元素.toString()方法可以转换成字符串。 import java.util.*;public class Replacement {public String replaceSpace(String iniString, int length) {// …

【构建基于树莓派cm4的机器人控制系统的运行环境】

概述&#xff1a;以前的机器人控制系统使用的是X86硬件平台&#xff0c;x86平台的运算性能高&#xff0c;但是成本也较高。近些年arm平台的应用越来越广泛&#xff0c;而且其运算性能与x86的差距越来越小。以cm4对比J1900cpu&#xff0c;进行机器人控制器常用算法效率对比测试.…

在树莓派计算模块CM4 eMMC上安装Ubuntu Desktop 21.04

陈拓 2021/09/29-2021/11/27 在不需要桌面的情况下可以安装Server版&#xff0c;节省空间&#xff0c;速度快。 在树莓派计算模块CM4 eMMC上安装Ubuntu Server 21.04_晨之清风-CSDN博客陈拓 2021/10/05-2021/10/051. 概述在《在树莓派计算模块CM4 eMMC上安装Ubuntu Desktop 21…

树莓派CM4平台超级电容UPS解决方案

关键词&#xff1a;树莓派 CM4 超级电容 UPS 不间断电源 掉电保护 SuperCap MCU电源管理 来电重启 概述&#xff1a;树莓派CM4平台已经被广泛应用于各行各业&#xff0c;在一些高可靠性应用场合需要有完善的电源管理系统来确保数据被完整保存&#xff0c;系统被安全…

树莓派CM4六路串口设置及使用

最近在做公司项目的时候使用了CM4核心板&#xff0c;与底板相对应的是野芯科技的5G底板。有一个需求是调用串口接收GPS模块信息&#xff0c;在配置串口时候绕了好大一圈&#xff0c;现在准备总结下。 树莓派包含两个串口 1.硬件串口&#xff08;/dev/ttyAMA0&#xff09;,硬件…

树莓派CM4 USB不能使用

最近烧录了树莓派CM4系统&#xff0c;发现usb设备&#xff08;鼠标、键盘&#xff09;不能使用 一查才知道CM4为了减少功耗默认关闭了USB功能 想要使用就在 config.txt文件里 里把下面语句前面的#取消掉&#xff1a; #dtoverlaydwc2,dr_modehost很奇怪&#xff0c;我取消了注…

树莓派 CM4 启动时 GPIO口输出

在做一个项目中有一个需求&#xff1a;启动时GPIO6 输出高电平&#xff0c;锁住电源。 开始使用 rc.local方法&#xff1a; 在rc.local中添加启动GPIO6的Python程序&#xff0c;发现从上电到运行程序需要十几秒的时间&#xff0c;不满足需求。 后来使用 update-rc.d 方法&am…

树莓派CM4烧录Ubuntu20镜像与ROS2的安装(无屏)

树莓派CM4烧录Ubuntu20镜像与ROS2的安装&#xff08;无屏&#xff09; 文章目录 树莓派CM4烧录Ubuntu20镜像与ROS2的安装&#xff08;无屏&#xff09;需要的软件说明 一、镜像烧录1.1 EMMC版本烧录bootload1.2 烧录Ubuntu镜像1.3 system-boot U盘分区简介config.txtnetwork-co…