跳转到内容

2009 CM4/CM5 SSD WiFi6 EN

来自Mcuzone Wiki

切换语言为中文

Keywords

Raspberry Pi, CM4 Core board, CM5 Core board, Gigabit Ethernet, RPiOS, Ubuntu, NVMe SSD, DSI, CSI, Packet capture, WiFi6

I. Introduction

The CM4_SSD_WiFi6 expansion board is a Raspberry Pi CM4 core board-based design that expands one PCIe into two PCIe interfaces for NVMe SSD and WiFi6 expansion.

The CM4_SSD_WiFi6 expansion board features one PCIe M.2 M-KEY interface for external SSD expansion and one PCIe M.2 A-KEY interface for installing a WiFi6 module. It features one native Gigabit Ethernet port, one 2-lane DSI0 port, one 4-lane CSI1 port, one standard-sized HDMI port supporting 4K output, one TF card slot, and expands to three USB 2.0 host Type-A ports and one USB host 1.25 4-pin port. Furthermore, a 2.54mm 2x20-pin GPIO header, identical in definition to the Raspberry Pi 4B, designed for standard peripheral expansion.

This expansion board can also be modified into a dual-WiFi expansion board by connecting an NVMe to WiFi adapter to the NVMe interface. This expansion board also supports WLAN Pi OS, enabling WiFi packet capture, monitoring, and other functions.

This expansion board also supports the Raspberry Pi CM5 compute module.

II. Hardware Spec

1) 1*native Gigabit Ethernet port, featuring an integrated transformer for superior electromagnetic performance.

2) 1*PCIe M.2 M-key NVMe SSD slot, supporting 2242 and 2280 form factor SSD.

3) 1*PCIe M.2 A-Key WiFi6 interface, supporting WiFi6 and WiFi6E (optionally configurable with AX200/AX210), with an optional M.2 A-Key to 2.5G Gigabit Ethernet adapter.

4) 3*USB 2.0 Host Type-A ports, 1*USB 2.0 Host (1.25mm-4PIN) port, optional CM4 4G Mini and 5G Mini modules.

5) 1*4-lane CSI1 (22-pin, 0.5mm pitch, flip-down connector).

6) 1*2-lane DSI0 (22-pin, 0.5mm pitch, flip-down connector).

7) 1*standard HDMI port (supports up to 4K resolution).

8) 1*TF card slot, used only for storing the OS on the CM4 core boars without eMMC version.

9) 1*USB Type-C port for both power (5V3A) and flashing.

10) 1*circuit fan power supply port, 5V 2.54mm-2p

11) 40-pin GPIO header, fully compatible with Raspberry Pi 4B.

12) Standard aluminum alloy casing.

2009_CM4_SSD_WiFi6_68.jpg

2009_CM4_SSD_WiFi6_63.jpg

2009_CM4_SSD_WiFi6_64.jpg

2009_CM4_SSD_WiFi6_69.jpg

III. Flash OS

It was tested using Raspberry Pi OS and Ubuntu OS.

▶ The version of Raspberry Pi OS is: 2024-11-19-raspios-bookworm-arm64.img.xz

You can download it in:

https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit

▶ The version of Ubuntu OS is: ubuntu-24.10-preinstalled-desktop-arm64+raspi.img.xz,

You can download it in:

https://ubuntu.com/download/raspberry-pi

For core boards with eMMC, the OS is flashed onto the eMMC. For core boards without eMMC, the OS is flashed onto the TF card.

Use a core board with eMMC, before flashing the OS, please use a jumper cap to short the BOOT pins on the board and connect the USB-C port to the computer:

After the flashing is completed, remove the jumper cap and power on again to start the OS.

For the flashing method, please refer to:

How to flash OS

IV. Work with Raspberry Pi OS

4.1 USB port test

The board has three USB 2.0 ports, connected to a wireless keyboard/mouse, a USB drive, and a USB card reader. Executing lsusb and lsusb -t in the terminal displays the following:

2009_CM4_SSD_WiFi6_02.jpg

004: Wireless keyboard/mouse

003: USB Card Reader

007: USB drive

USB devices are detected normally. No device number will appear if no external USB device is connected.

Bus 01 is a USB 2.0 interface with 480Mbps, and the operating mode is also normal.

4.2 SSD test

After expanding the PCIe of the CM4 into two channels via a switch, the onboard SSD does not support booting the OS and can only be used for data storage.

Execute lspci in the terminal to view SSD's information:

2009_CM4_SSD_WiFi6_03.jpg

Executing lsblk, we can see that the SSD partition is named nvme0n1p1:

2009_CM4_SSD_WiFi6_04.jpg

Install the hard drive speed testing software hdparm, and execute the following command in the terminal:

sudo apt install hdparm

Execute the interface speed test command, which can be executed multiple times to test the SSD speed repeatedly:

sudo hdparm -t /dev/nvme0n1

Since the SSD and WiFi6 share a single PCIe lane split by a switch, this affects the SSD's speed. The test results are as follows:

2009_CM4_SSD_WiFi6_05.jpg

No. Transmission speed(MB/s) Transmission speed(Gbps)
1 375.85 3.01
2 374.47 3.00
3 378.77 3.03
4 376.61 3.01
5 375.08 3.00
Avg. 376.16 3.01

4.3 WiFi6 test (AX210)

For the CM4, the onboard WiFi and the expanded WiFi via the carrier board are mutually exclusive in Raspberry Pi OS, only one of them can be utilized at a time. So if you want to use WiFi6, it is recommended to choose a CM4 core board without WiFi. If a CM4 core board with WiFi functionality is used, the built-in WiFi module will be automatically disabled and cannot be used after installing the WiFi6 driver.

We used the AX210 for testing, and it is also compatible with the AX200. After booting the OS, execute lspci in the terminal to see:

2009_CM4_SSD_WiFi6_06.jpg

4.3.1 Install driver

Update header files in the terminal:

sudo apt install -y raspberrypi-kernel-headers firmware-iwlwifi flex yacc

5001_CM5_WiFi7-PoE_19.jpg

Then download the source code:

mkdir wifi && cd wifi

wget http://www.mcuzone.com/wiki/2004_CM4_WiFi7/backport-iwlwifi-20231029.tar.bz2

sudo tar -xvf backport-iwlwifi-20231029.tar.bz2

5001_CM5_WiFi7-PoE_20.jpg

Prepare the compilation environment:

sudo make defconfig-iwlwifi-public

sudo sed -i 's/CPTCFG_IWLMVM_VENDOR_CMDS=y/# CPTCFG_IWLMVM_VENDOR_CMDS is not set/' .config

5001_CM5_WiFi7-PoE_21.jpg

Compile source code:

sudo make -j 4

sudo make install

Note: If the system freezes or reports errors during compilation when using -j 4, please try compiling with -j 2 or -j 1 instead.

5001_CM5_WiFi7-PoE_22.jpg

5001_CM5_WiFi7-PoE_23.jpg

The OS is now prompting a restart. Please restart now.

sudo reboot

4.3.2 WiFi6 test

After restarting the OS, we can use the WiFi6 module to connect to the wireless AP in the network connections.

Note: The core board's built-in WiFi module has been automatically turned off and replaced with the WiFi6 module.

Click the network icon in the upper-right corner of the desktop- Advanced Options - Connection Information...

In the network connection information, we can also see that this connection uses the iwlwifi driver (if it's the wireless network card integrated on the core board, the driver will be displayed as brcmfmac):

Execute the command ifconfig -a in the terminal:

2009_CM4_SSD_WiFi6_09.jpg

"wlan0" refers to the WiFi6 module.

We use the network speed testing tool iperf3 for speed tests.

Download iperf3 for Windows:

http://www.mcuzone.com/down/Software.asp?ID=10000634

Install iperf3 on Linux:

sudo apt-get install iperf3

The hardware equipment used for speed testing:

The router is a Xiaomi BE6500 Pro (WiFi6/7+ 4-port 2.5G router), and the extension board is about 1 meter away from the router.

Connect the AX210 to a WiFi6 wireless network (5G hotspot) and perform an iperf3 speed test with a Windows device under the same router.

Expansion board as Client, single-threaded speed test:

2009_CM4_SSD_WiFi6_10.jpg

The speed is around 505Mbps.

30-threaded speed test:

2009_CM4_SSD_WiFi6_11.jpg

The speed is around 1.31Gbps.

Expansion board as Server, single-threaded speed test:

2009_CM4_SSD_WiFi6_12.jpg

The speed is around 557Mbps.

30-threaded speed test:

2009_CM4_SSD_WiFi6_13.jpg

The speed is around 1.97Gbps.

Single-threaded(Mbps) 30-threaded(Gbps)
Client 505 1.31
Server 557 1.97

Note: Network speed tests are affected by the network environment and testing methods. Please refer to the actual speed, as this test is for reference only.

4.3.3 Dual wireless network card test

4.3.3.1 Dual WiFi6 wireless network card test

This expansion board can be upgraded to a dual WiFi6 wireless network cards expansion board. By installing our company's compatible NVMe to WiFi6 adapter into the NVMe interface, dual wireless network cards can be achieved:

After the driver installation is completed, the network connection is displayed as follows:

AX200 network details (connected to the WiFi6 interface, serving as the primary network card, wlan0):

AX210 network details (connected via NVMe to WiFi6 adapter board, serving as the secondary network card, wlan1):

Execute the command ifconfig -a in the terminal, and the displayed results are as follows:

2009_CM4_SSD_WiFi6_17.jpg

We use the network speed testing software iperf3 to conduct speed tests, and the results are as follows:

Single-threaded(Mbps) 30-threaded(Gbps)
AX200 Client 403 0.57
AX200 Server 457 1.05
AX210 Client 521 1.40
AX210 Server 564 1.72

Note: Network speed tests are affected by the network environment and testing methods. Please refer to the actual speed, as this test is for reference only.

4.3.3.2 WiFi6 and WiFi7 wireless network cards test

This expansion board can be upgraded to a WiFi6 wireless network card and a WiFi7 wireless network card expansion board. By installing our company's compatible NVMe to WiFi7 adapter into the NVMe interface, dual wireless network cards can be achieved:

Install the firmware for the BE200:

After installing the WiFi driver on Raspberry Pi OS, the BE200 requires firmware installation, while the AX200/210 do not. Installing the firmware for the BE200 does not affect the functionality of the AX200/210.

Execute the following commands in the terminal:

cd ..

cd Downloads

wget http://www.mcuzone.com/wiki/0011_MPW7/firmware_wifi7.zip

unzip firmware_wifi7.zip

sudo cp iwlwifi-gl-c0-fm-c0-86.ucode /lib/firmware

sudo cp iwlwifi-gl-c0-fm-c0.pnvm /lib/firmware

2004_CM4_WiFi7_06.jpg

Restart the OS:

sudo reboot

After the restart, we can use both wireless network cards to connect to the wireless AP in the network connections, the method is the same as WiFi6 wireless network card.

The network connection is displayed as follows:

AX210 network details (connected to the WiFi6 interface, serving as the primary network card, wlan0):

BE200 network details (connected via NVMe to WiFi7 adapter board, serving as the secondary network card, wlan1):

Execute the command ifconfig -a in the terminal, and the displayed results are as follows:

2009_CM4_SSD_WiFi6_58.jpg

4.4 Gigabit Ethernet test

Connect the Gigabit Ethernet to the upper-level router, and execute ifconfig -a in the terminal. The displayed eth0 is the Gigabit Ethernet:

2009_CM4_SSD_WiFi6_18.jpg

We conducted speed tests on the native Gigabit Ethernet port using iperf3.

Client mode is around 943Mbps:

2009_CM4_SSD_WiFi6_19.jpg

Server mode is around 949Mbps:

2009_CM4_SSD_WiFi6_20.jpg

Note: Network speed tests are affected by the network environment and testing methods. Please refer to the actual speed, as this test is for reference only.

4.5 DSI test

The official two LCD screens for Raspberry Pi: the 1st-gen LCD has a resolution of 800×480, while the 2nd-gen LCD has a resolution of 1280×720. Both screens require additional power supply.

4.5.1 Raspberry Pi 1st-Gen LCD Display

Power up the OS, open the terminal and execute the following commands:

sudo nano /boot/firmware/config.txt

Insert the following lines at the end of the file:

dtoverlay=vc4-kms-dsi-7inch,dsi0

5001_CM5_WiFi7-PoE_33.jpg

After saving and restarting the OS, you can use the Raspberry Pi 7-inch touchscreen.

4.5.2 Raspberry Pi 2nd-Gen LCD Display

Open the terminal and execute the following commands:

sudo nano /boot/firmware/config.txt

Insert the following lines at the end of the file:

dtoverlay=vc4-kms-dsi-ili9881-7inch,dsi0

2009_CM4_SSD_WiFi6_21.jpg

After saving and restarting the OS, you can use the Raspberry Pi 7-inch touchscreen.

4.5.3 Notes

1): If both the HDMI display and the 7-inch touchscreen are connected simultaneously, the 7-inch touchscreen may become the secondary screen. Simply power off the system, disconnect the HDMI display, and restart; the 7-inch touchscreen will then function as the primary display.

2): The added command actually enables the second display, meaning a dual-screen setup. Whether the second screen's hardware is installed or not, the system may still recognize it as a dual-display configuration. If you use PrtScn (Print Screen) to take a screenshot, it may capture both screens. In some cases, this could even cause the system to fail to boot. Therefore, if you don’t need this screen, it is recommended to remove or comment out this line in config.txt.

4.6 CSI test

The camera used for testing here is the OV5647. Once the OS is running, open the terminal and execute the following commands:

sudo nano /boot/firmware/config.txt

Insert the following lines at the end of the file:

dtoverlay=ov5647,cam0

5001_CM5_WiFi7-PoE_35.jpg

Add according to your model in practice. Save and restart the OS, then you can use the OV5647 camera.

Execute the following command in the terminal:

ls /dev/video*

You will then see the video0 device listed:

2009_CM4_SSD_WiFi6_22.jpg

Execute libcamera-hello --camera 0 in the terminal to open the corresponding camera for preview:

2009_CM4_SSD_WiFi6_23.jpg

If a photo is required, please excute:

libcamera-jpeg -o test.jpg

The photos are saved in the /home/mcuzone directory (i.e., the user's home directory). The photo effects are as follows:

2009_CM4_SSD_WiFi6_24.jpg

V. Work with Ubuntu OS

5.1 USB port test

The board has three USB 2.0 ports, connected to a wireless keyboard/mouse, a USB drive, and a USB card reader. Executing lsusb and lsusb -t in the terminal displays the following:

Device 003: Wireless keyboard/mouse

Device 004: USB drive

Device 005: USB Card Reader

USB devices are detected normally.

If no external devices are connected via USB, only Hubs will appear without any device numbers when executing lsusb.

Bus 001 is a USB 2.0 interface with 480Mbps, and the operating mode is also normal.

5.2 SSD test

Execute lspci in the terminal to view SSD's information:

Executing lsblk, we can see that the SSD partition is named nvme0n1p1:

Install the hard drive speed testing software hdparm, and execute the following command in the terminal:

sudo apt install hdparm

Execute the interface speed test command, which can be executed multiple times to test the SSD speed repeatedly:

sudo hdparm -t /dev/nvme0n1

Since the SSD and WiFi6 share a single PCIe lane split by a switch, this affects the SSD's speed. The test results are as follows:

No. Transmission speed(MB/s)
1 332.30
2 295.68
3 331.57
4 337.63
5 327.38
6 317.33
7 336.66
8 335.89
Avg. 326.81 (about 2.55Gbps)

5.3 WiFi6 test

The Ubuntu OS does not come with the ifconfig command by default, so you need to install net-tools first to use the ifconfig command:

sudo apt install net-tools

5.3.1 Single wireless network card test

In Ubuntu OS, the AX200 and AX210 wireless modules are driver-free and plug-and-play.

Insert the AX210 into the expansion board, and after booting the OS, execute lspci in the terminal to see:

Click the icon in the upper right corner of the desktop to see that WiFi is activated. Click the arrow next to the WiFi icon to select a hotspot for connection:

Enter the hotspot password. After successfully connecting, execute ifconfig -a in the terminal. The result is as follows:

"wlp3s0" refers to the WiFi6 module.

We use the network speed testing tool iperf3 for speed tests.

The hardware equipment used for speed testing:

The router is a Xiaomi BE6500 Pro (WiFi6/7+ 4-port 2.5G router), and the extension board is about 1 meter away from the router.

Connect the AX210 to a WiFi6 wireless network (5G hotspot) and perform an iperf3 speed test with a Windows device under the same router.

Test results are as follows:

Single-threaded(Mbps) 30-threaded(Gbps)
AX210 Client 491.00 1.80
AX210 Server 493.00 1.66

Note: Network speed tests are affected by the network environment and testing methods. Please refer to the actual speed, as this test is for reference only.

5.3.2 Dual wireless network card test

5.3.2.1 Dual WiFi6 wireless network card test

This expansion board can be upgraded to a dual WiFi6 wireless network cards expansion board. By installing our company's compatible NVMe to WiFi6 adapter into the NVMe interface, dual wireless network cards can be achieved:

The network connection is displayed as follows:

The network card connected to the hotspot in the above image is the original AX210, while the unconnected network card is the newly added AX200. Connect the AX200 network card to the hotspot as well, and execute ifconfig -a in the terminal. The result is as follows:

"wlp3s0" refers to the AX210, and "wlp4s0" refers to the AX200.

We use the network speed testing software iperf3 to conduct speed tests, and the results are as follows:

Single-threaded(Mbps) 30-threaded(Gbps)
AX200 Client 492.00 1.80
AX200 Server 537.00 1.63
AX210 Client 487.00 1.58
AX210 Server 503.00 1.53

Note: Network speed tests are affected by the network environment and testing methods. Please refer to the actual speed, as this test is for reference only.

5.3.2.2 WiFi6 network card and the built-in WiFi module of the CM4

After testing, it has been confirmed that on the Ubuntu OS, if the CM4 core board comes with a built-in WiFi module, it can be used simultaneously with a WiFi6 interface wireless network card.

After inserting an AX200 network card into the WiFi6 interface and booting the Ubuntu OS using the CM4 core board with its built-in WiFi module, it can be observed that both wireless network cards are capable of connecting to wireless networks:

Execute the command ifconfig -a in the terminal, and the displayed results are as follows:

"wlan0" refers to the built-in WiFi module of the CM4, and "wlp3s0" refers to the AX200.

5.4 Gigabit Ethernet test

Connect the Gigabit Ethernet to the upper-level router, and execute ifconfig -a in the terminal. The displayed eth0 is the Gigabit Ethernet:

We conducted speed tests on the native Gigabit Ethernet port using iperf3.

Client mode is around 936Mbps:

Server mode is around 938Mbps:

Note: Network speed tests are affected by the network environment and testing methods. Please refer to the actual speed, as this test is for reference only.

5.5 DSI test

The official two LCD screens for Raspberry Pi: the 1st-gen LCD has a resolution of 800×480, while the 2nd-gen LCD has a resolution of 1280×720. Both screens require additional power supply.

5.5.1 Raspberry Pi 1st-Gen LCD Display

Power up the OS, open the terminal and execute the following commands:

sudo nano /boot/firmware/config.txt

Insert the following lines at the end of the file:

dtoverlay=vc4-kms-dsi-7inch,dsi0

After saving and restarting the OS, you can use the Raspberry Pi 7-inch touchscreen.

5.5.2 Raspberry Pi 2nd-Gen LCD Display

Open the terminal and execute the following commands:

sudo nano /boot/firmware/config.txt

Insert the following lines at the end of the file:

dtoverlay=vc4-kms-dsi-ili9881-7inch,dsi0

After saving and restarting the OS, you can use the Raspberry Pi 7-inch touchscreen.

5.5.3 Notes

1): If both the HDMI display and the 7-inch touchscreen are connected simultaneously, the 7-inch touchscreen may become the secondary screen. Simply power off the system, disconnect the HDMI display, and restart; the 7-inch touchscreen will then function as the primary display.

2): The added command actually enables the second display, meaning a dual-screen setup. Whether the second screen's hardware is installed or not, the system may still recognize it as a dual-display configuration. If you use PrtScn (Print Screen) to take a screenshot, it may capture both screens. In some cases, this could even cause the system to fail to boot. Therefore, if you don’t need this screen, it is recommended to remove or comment out this line in config.txt.

VI. Work with WLAN Pi

The WLAN Pi OS version we tested is: wlanpi-os_v3.3.0-2025-02-17.zip.

Download link for WLAN Pi: https://www.wlanpi.com/downloads

6.1 Using a single wireless module in WLAN Pi

After testing, the wireless modules compatible with WLAN Pi are:

WiFi6: AX200, AX210.

WiFi7: BE200 (Requires the use of a matching NVMe to WiFi7 adapter board).

For operation reference of WLAN Pi with a single wireless module, please refer to our company's CM4 WiFi6 expansion board. The link is as follows:

Using a single wireless module in WLAN Pi

The wireless module can be used whether plugged directly into the native WiFi6 port or connected via an adapter board to the SSD port, with no additional configuration required.

6.2 Using dual wireless modules in WLAN Pi

In the WLAN Pi, the wireless module functions as a packet capture tool in PROFILER, which uses wlan0 as the default capture port. The original WiFi6 interface module (AX210) is wlan0, and the module on the NVMe to WiFi6 adapter board (AX200) is wlan1.

In the COCKPIT terminal, execute ifconfig -a as shown in the figure below:

At this point, we execute:

wifichannel 6

sudo profiler -c 12

The results are as follows:

From the MAC address, it can be determined that the packet capture was performed via the AX210, i.e., wlan0.

If we need to use the AX200 for packet capture, we need to execute the following commands to swap wlan0 and wlan1:

sudo ip link set wlan0 name wlan2

sudo ip link set wlan1 name wlan0

sudo ip link set wlan2 name wlan1

Then execute ifconfig -a, as shown in the following image:

From the MAC address, it can be determined that wlan0 is currently using AX200. Execute:

wifichannel 6

sudo profiler -c 12

The results are as follows:

From the MAC address, it can be determined that the packet capture was performed via the AX200, i.e., wlan0.

If you need to restore the default state (i.e., capturing packets via the AX210), simply restart the OS.

Note: If using BE200, please select channel 11:

sudo profiler -c 11

VII. The compatibility test of the CM5 core board

Raspberry Pi OS:

Boot form eMMC/TF card It supports the CM5 core board with eMMC to boot from eMMC, but does not support the CM5 core board without eMMC to boot from a TF card.
Boot form SSD It supports booting from an SSD for the CM5 core board without eMMC.
Device Name HDMI output USB2.0-A ports SSD Gigabit Ethernet Core Board WiFi
Compatible or not?
Device Name DSI CSI Single WiFi6 wireless network card Dual WiFi6 wireless network cards
Compatible or not? √(Cannot be used simultaneously with SSD.) ×
Note: √ = compatible, × = incompatible

Test date: March 27, 2025

Contact Us

0001_x.jpg 0002_fb.jpg 0004_ytb.jpg 0003_bb.jpg 0005_qq.jpg QQ:8204136

Email: mcuzone@vip.qq.com

Tel: +86(0)13957118045

If there are any omissions, errors, or infringements on this page, please contact us through the above methods. Thank you!

Copyright 2004-2025 Wildchip