Intel Wi-Fi 6E 无线网卡, Intel 第六代无线协议 AX 标准,相比 802.11AC 协议,增强性能,提高兼容性,同时降低功耗,提高使用寿命
测试使用CM4-DUAL-ETH-WIFI6-BASE
可以参考:点这里
编译内核需要一个Ubuntu系统
以下测试使用:Ubuntu-20.04.2.0-desktop-amd64 :
编译环境前先确认你需要的具体树莓派系统版本
https://github.com/raspberrypi/linux
在Ubuntu上操作:
#安装依赖
sudo apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev
#安装编译工具
sudo apt install neovim
#创建文件夹
mkdir cm4
cd cm4
mkdir gcc-linaro
#下载GCC编译器
wget 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
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
#修改环境变量
nvim ~/.bashrc
#在 .bashrc 后面加上:export PATH=$PATH:~/cm4/gcc-linaro/bin
#刷新环境变量
source ~/.bashrc
#克隆 linux repo(或克隆一个 fork 或不同的分支):
git clone --depth=1 https://github.com/raspberrypi/linux/...
#此命令为无效命令,后面的github链接需要改成你具体需要的内核版本https://github.com/raspberrypi/linux
#或者自行下载,然后复制进去
#解压unzip linux-rpi-6.6.y.zip (不同内核版本使用的命令不一样)
#运行以下命令来制作 .config 文件:.
cd linux
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig
#生成 .config 文件:
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
#配置.config 文件,这里添加你想要添加的内核驱动
添加(回车进入,空格选中)
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
#编译内核。需要等待比较长时间
make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs
在树莓派上操作:
sudo su passwd #设置密码 sudo nano /etc/ssh/sshd_config #将 PermitRootLogin prohibit-password 改为 PermitRootLogin yes sudo reboot
在Ubuntu上操作:
sudo sshfs root@192.168.x.x:/ /mnt/pi-ext4 sudo sshfs root@192.168.x.x:/boot /mnt/pi-fat32 #192.168.x.x是树莓派的IP sudo env PATH=$PATH make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=/mnt/pi-ext4 modules_install 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/
如果多次链接一个IP然后系统更换了,出现read: Connection reset by peer 错误:
删除ssh公钥认证即可
ssh-keygen -f "/root/.ssh/known_hosts" -R 192.168.x.x #192.168.x.x是树莓派的IP
上面编译内核使用的都是“ARCH=arm64”64位的
在树莓派的 /boot/config.txt中添加 arm_64bit=1 kernel=kernel8.img #重启 sudo reboot
模组需要添加天线才会有信号,使用前注意要添加天线
由于“intel wireless wifi MVM”驱动支持的WIFI众多,不局限于AX210或者AX200。 如果编译内核开启了“intel wireless wifi MVM”,并且 /boot/config.txt中添加arm_64bit=1 kernel=kernel8.img,然后重启 那么检查日志会不会出现让如下:
dmesg | grep iwlwifi [ 4.574560] iwlwifi 0000:01:00.0: enabling device (0000 -> 0002) ..................... [ 4.586465] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-ty-a0-gf-a0-59.ucode failed with error -2 [ 4.586562] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-ty-a0-gf-a0-59.ucode failed with error -2 .....................
其中iwlwifi-ty-a0-gf-a0-59.ucode表示为缺少的驱动文件,可以下载固件:点这里
更多固件下载:点这里
将固件复制到/lib/firmware/ 目录下
检查日志
dmesg | grep hci ..................... [ 6.301299] bluetooth hci0: loading /lib/firmware/intel/ibt-12-16.sfi failed with error -20 [ 6.301321] bluetooth hci0: Direct firmware load for intel/ibt-12-16.sfi failed with error -20 .....................
出现以上内容则说明是缺少对应的文件(例如上面日志表示缺少"/lib/firmware/intel/ibt-12-16.sfi"驱动文件),可以自行下载网上最新的驱动,也可以使用我们提供的驱动文件,在firmware/intel文件夹中,复制/lib/firmware/intel即可
执行hciconfig
pi@raspberrypi:~ $ hciconfig hci0: Type: Primary Bus: USB BD Address: D8:3B:BF:46:2B:1A ACL MTU: 1021:4 SCO MTU: 96:6 UP RUNNING RX bytes:813 acl:0 sco:0 events:62 errors:0 TX bytes:3683 acl:0 sco:0 commands:62 errors:0
其中UP RUNNING 状态表示正常工作,DOWN为没有正常工作,可能是关闭或者缺少驱动文件
如果为DOWN可以尝试执行,如果出现权限不足,请添加sudo
hciconfig hci0 up 更多命令 关闭蓝牙 hciconfig hci0 down 重置蓝牙 hciconfig hci0 reset 扫描蓝牙设备 hcitool scan
其中hci0为蓝牙设备编号,如果你cm4自带WIFI蓝牙模组,那么注意观察Bus: 后面是USB 还是 UART,AX200的蓝牙设备是USB蓝牙
最新系统由于内核只有5.10内核所以只支持WIFI,不支持蓝牙。
检查日志
jetson@ubuntu:~$ sudo dmesg | grep iwlwifi [ 10.336831] iwlwifi 0004:01:00.0: Adding to iommu group 6 [ 10.337223] iwlwifi 0004:01:00.0: enabling device (0000 -> 0002) [ 10.422090] iwlwifi 0004:01:00.0: api flags index 2 larger than supported by driver [ 10.423132] iwlwifi 0004:01:00.0: TLV_FW_FSEQ_VERSION: FSEQ Version: 93.8.63.28 [ 10.423952] iwlwifi 0004:01:00.0: loaded firmware version 59.601f3a66.0 ty-a0-gf-a0-59.ucode op_mode iwlmvm [ 11.875701] iwlwifi 0004:01:00.0: Detected Intel(R) Wi-Fi 6 AX210 160MHz, REV=0x420 [ 12.057094] iwlwifi 0004:01:00.0: loaded PNVM version 0x324cd670 [ 12.311893] iwlwifi 0004:01:00.0: Timeout waiting for PNVM load! ..................... 删除或者重命名 /lib/firmware/iwlwifi-ty-a0-gf-a0.pnvm 即可 sudo rm -rf /lib/firmware/iwlwifi-ty-a0-gf-a0.pnvm
1:linux 环境先检查硬件连接,“lspci” 可以看到设备标示正确连接
2:linux 环境通过检查日志“ dmesg | grep iwlwifi”来确认缺少什么驱动文件
3:linux 环境如果“ dmesg | grep iwlwifi”没有任何输出,可以尝试重启或者检查linux内核版本,确保linux内核版本大于或等于5.11
4:linux 环境通过“ dmesg | grep bluetooth”检查蓝牙启动状态,检查是否缺少驱动文件
5:linux 环境通过“hciconfig ”确保蓝牙设备正常工作