From Waveshare Wiki
Jump to: navigation, search







Intel Wi-Fi 6E wireless NIC adopts Intel's sixth-generation wireless protocol AX standard, which enhances performance and compatibility compared to the previous generation 802.11AC protocol, while reducing power consumption and increasing service life.


  • Adopts sixth-generation 802.11AX Wi-Fi standard, provides better performance and compatibility than the previous generation 802.11AC, lower power consumption, and longer service life.
  • Supports 2.4G/5G/6GHz tri-band, the speed up to 574Mbps in the 2.4GHz band and 2400Mbps in the 5GHz/6GHz band.
  • Support Bluetooth 5.3 standard, longer transmission distance, and better stability. (BLE5.2 for 002 version)
  • Adopts NGFF (M.2 A/E Key) interface.
  • Adopts the new generation of MU-MIMO wireless technology, provides better network quality, faster Internet speed (more than three times), and higher transmission and download efficiency.
  • Support Linux, Windows 10/11, etc.


  1. In the Linux environment, you need to use a kernel of no less than 5.11 to work normally. If you only need WIFI without Bluetooth, the 5.10 kernel can also work.
  2. The native system of Raspberry Pi CM4 cannot work, and the kernel needs to be recompiled.
  3. The default hardware version for AX210 is 006,The hardware version of AX210 before 20230919 is 002
  4. Connection method: The connection method of WIFI is PCIe, and the connection method of Bluetooth is USB.

User Guides


Use CM4-DUAL-ETH-WIFI6-BASE to test.

Compile Kernel

You can refer to here.
Ubuntu system is required for kernel compilation.
Test by the following command: Ubuntu- :
Confirm the specific Raspberry Pi system version you need before compiling the environment: https://github.com/raspberrypi/linux
Wireless-AX210 USER GUIDE01.png
On the Ubuntu:

#Install dependencies
sudo apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev
#Install compilation tools
sudo apt install neovim
# create folder
mkdir cm4
cd cm4
mkdir gcc-linaro
#Download the GCC compiler
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
#Modify environment variables
nvim ~/.bashrc
Add after .bashrc: export PATH=$PATH:~/cm4/gcc-linaro/bin
# Refresh environment variables
source ~/.bashrc
#Clone the linux repo (or clone a fork or a different branch):
git clone --depth=1 https://github.com/raspberrypi/linux/…
#This command is an invalid command, the following github link needs to be changed to the kernel version you need https://github.com/raspberrypi/linux
#Or download it yourself and copy it in
# Run the following command to make a .config file: .
cd linux
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig
#Generate .config file:
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
#Configure the .config file, add the kernel driver you want to add here
Add (Enter to enter, space to select)
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
# Compile the kernel. need to wait a long time
make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs

On the Raspberry Pi:

sudo su
#Set password
sudo nano /etc/ssh/sshd_config
#Modify PermitRootLogin prohibit-password to
#PermitRootLogin yes
sudo reboot

On the Ubuntu:

sudo sshfs [email protected]:/ /mnt/pi-ext4
sudo sshfs [email protected]:/boot /mnt/pi-fat32
#192.168.x.x is the IP of the Raspberry Pi
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/

If an IP is connected multiple times and the system is changed, a read: Connection reset by peer error occurs:
Just delete the ssh public key authentication.

ssh-keygen -f "/root/.ssh/known_hosts" -R 192.168.x.x
  #192.168.x.x is the IP of Raspberry Pi

Install Driver

The kernel compiled above uses "ARCH=arm64" 64-bit.

Add in /boot/config.txt of Raspberry Pi
arm_64bit=1 kernel=kernel8.img
sudo reboot

The module needs to add an antenna to have a signal, please pay attention to adding an antenna before use.


Since the "intel wireless wifi MVM" driver supports many WIFIs, it is not limited to AX210 or AX200. If the kernel is compiled with "intel wireless wifi MVM" enabled, and arm_64bit=1 kernel=kernel8.img is added to /boot/config.txt, and then restarted, then check whether the log will appear as follows:

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

Among them, iwlwifi-ty-a0-gf-a0-59.ucode represents the missing driver file, you can download the firmware: click here.
For more firmware downloads: click here.


Check log:

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

If the above content appears, it means that the corresponding file is missing (for example, the above log indicates that the "/lib/firmware/intel/ibt-12-16.sfi" driver file is missing), you can download the latest driver on the Internet by yourself, or you can use our provided Driver file, in the firmware/intel folder, just copy /lib/firmware/intel
Execute 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
	RX bytes:813 acl:0 sco:0 events:62 errors:0
	TX bytes:3683 acl:0 sco:0 commands:62 errors:0

Among them, the UP RUNNING state means normal operation, and the DOWN state does not work normally, which may be closed or lack of driver files If it is DOWN, you can try to execute it. If there is insufficient permission, please add sudo:

hciconfig hci0 up
more commands
turn off bluetooth hciconfig hci0 down
reset bluetooth hciconfig hci0 reset
Scan for bluetooth devices hcitool scan

Among them, hci0 is the number of Bluetooth devices. If your cm4 comes with a WIFI Bluetooth module, then pay attention to observe the Bus: the back is USB or UART, and the Bluetooth device of AX200 is USB Bluetooth.

Jetson Xavier NX

The latest system only supports WIFI, not Bluetooth because the kernel is only 5.10 kernel.
Check the log:

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:
[   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!
Delete or rename /lib/firmware/iwlwifi-ty-a0-gf-a0.pnvm   
sudo rm -rf /lib/firmware/iwlwifi-ty-a0-gf-a0.pnvm 


Download drivers:
AX210: click here
AX200: click here
Choose the corresponding system:
Wireless-AX210 USER GUIDE010.png

Debug Notes

  1. Check the hardware connection first in the linux environment, "lspci" can see that the device is marked and connected correctly.
  2. In the Linux environment, check the log "dmesg | grep iwlwifi" to confirm what driver files are missing.
  3. Linux environment If there is no output from "dmesg | grep iwlwifi", you can try to restart or check the Linux kernel version to ensure that the Linux kernel version is greater than or equal to 5.11.
  4. In the Linux environment, check the Bluetooth startup status through "dmesg | grep bluetooth" and check whether the driver file is missing.
  5. The Linux environment uses "hciconfig" to ensure that the Bluetooth device works normally.


Technical Support

If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 PM GMT+8 (Monday to Friday)