采用了 Intel 第 7 代无线协议,支持 IEEE 802.11a/b/g/n/ac/be/ax 无线标准
测试使用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 - Wireless-N/Advanced-N/Ultimate-N (iwlwifi)
[M]Intel Wireless WiFi DVM Firmware support
[M]Intel Wireless WiFi MVM Firmware support
#编译内核。需要等待比较长时间
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上操作:
使用sshfs
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或者BE200。 如果编译内核开启了“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蓝牙
驱动下载
BE200:点这里
AX210:点这里
AX200:点这里
选择对应系统
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 ”确保蓝牙设备正常工作
周一-周五(9:30-6:30)周六(9:30-5:30)
手机:13434470212
邮箱:services04@spotpear.cn
QQ:202004841