操作过程

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

树莓派cm4安装ax200驱动-wifi6相关推荐

  1. Pixhawk RPi CM4 Baseboard 树莓派CM4安装Ubuntu20.04 server 配置ros mavros mavsdk

    文章目录 硬件 安装Ubuntu Server20.04 下载rpiboot工具 下载imager 刷写系统 配置USB 配置WIFI 开机安装桌面 配置wifi 配置串口 安装ROS 安装mavro ...

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

    树莓派CM4烧录Ubuntu20镜像与ROS2的安装(无屏) 文章目录 树莓派CM4烧录Ubuntu20镜像与ROS2的安装(无屏) 需要的软件 说明 一.镜像烧录 1.1 EMMC版本烧录bootl ...

  3. 树莓派4B (Raspberry pi 32 bit)安装uv4l驱动,解决opencv无法获取CSI摄像头图像问题

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 环境描述:        问题描述:我希望用opencv调用csi摄像头(最开始我只有USB摄像头,可是我无论怎么调用都无法出图像,就 ...

  4. Ubuntu18.04安装ax200网卡驱动以及更新内核

    Ubuntu18.04安装ax200网卡驱动以及更新内核 参考资料:https://zhangyiming748.github.io/2019/12/05/useAX200OnUbuntu/ 原来的网 ...

  5. 树莓派安装RTL-SDR驱动(编译安装)

    树莓派系统镜像 2018-11-13-raspbian-stretch-full.img 树莓派安装RTL-SDR驱动步骤(编译安装) 以下内容参照文档"RTL-SDR for Linux ...

  6. 树莓派4B安装联想LJ2605D打印机驱动

    1.树莓派4B安装RASPBERRY PI OS(32BIT)系统 2.打印机型号为联想LJ2605D 去官网搜索发现没有匹配的linux驱动,通过搜索得知可以使用brother打印机的linux驱动 ...

  7. 树莓派2B安装TP-Link usb无线wifi驱动

    标题树莓派2B安装TP-Link usb无线wifi驱动 前言 买了好多年的树莓派2B,都没怎么玩,仅仅捣鼓过几次系统.最近因为有个初中弟娃,学习没多大兴趣,加之前几年也准备过一些材料,这次趁暑假和他 ...

  8. 树莓派 PHP白屏,树莓派3.5英寸屏幕安装显示驱动,解决白屏问题

    前几天为了树莓派显示DNS解析统计,我购买了一个3.5英寸的树莓派显示屏幕,它采用的显示方式是SPI方式,占用树莓派的26个IO口,由于不是采用HDMI方式显示,所以要安装树莓派显示驱动,否则屏幕是一 ...

  9. 给jetson nano 安装AX200网卡驱动

    几经波折,因为在网上看到的基本都是amd版本而非arm版,然后最终选定V5.5是因为更新的几个版本的arm版本是false的(在https://kernel.ubuntu.com/~kernel-pp ...

  10. (14)树莓派B+使用L298N驱动控制四驱车并实现一个简单的web控制端

    在系列文章第12篇中提到了L298N,它是H桥双路直流电机驱动,可以使双路直流电机实现正转或者反转,并且通过ENDA和ENDB输入PWM信号,还可以实现加减速.本文用2块L298N驱动板成功驱动了4个 ...

最新文章

  1. 和为s的两个数字与和为s的连续正数序列
  2. 小程序不支持wx.request同步请求解决方法
  3. C++中关于内部与外部函数
  4. SEED实验系列:缓冲区溢出漏洞试验
  5. oracle授权、表备份、用户管理
  6. linux 恢复数据
  7. Array.prototype.slice.call 将伪数组转成真数组的原理是什么?
  8. 计算机可用内存分配失败,你们都被忽悠了! 其实可用内存大才有用
  9. 报表或BI的价值在哪?
  10. 2021李宏毅机器学习课程笔记——Explainable AI
  11. Linux vim
  12. matlab fspecial
  13. 根据生日计算年龄 java_Java 根据出生日期获得年龄
  14. 如何用新安装的jdk替换掉Linux系统默认jdk
  15. 会考计算机辅助制图,信息技术会考基础知识
  16. 一个以表驱动得汉字转拼音的库
  17. 为ramda添加类型
  18. 前后端对接及接口管理平台浅析
  19. NFT引发的“十大行业变局”
  20. 西门子精智HMI-TP1200发邮件功能

热门文章

  1. 全网最详细numpy的argmin与argmax解析(一次性理解np.argmin)
  2. cint、int、fix的区别
  3. wordpress启动_使用Wumblr在WordPress中启动微博
  4. Linux共享内存使用常见陷阱与分析
  5. pdo mysql 函数_PDO函数属性详解
  6. H3C防火墙-安全域
  7. letsencrypt证书-管理工具certbot
  8. 工信部《全国区块链和分布式记账技术标准化技术委员会组建公示》
  9. Adaptive icon 二 设计自适应图标
  10. ResNet网络 残差块的作用