5001 CM5 WiFi7-PoE EN
Keywords
Raspberry Pi, CM5 Core board, WiFi7, BE200, Bluetooth, RPiOS, USB3.0, 4G, Gigabit Ethernet with PoE, RTC, PWM, DSI, CSI, HDMI, OTG
I. Introduction
The CM5 WiFi7-PoE expansion board is specifically designed for the Raspberry Pi CM5 core board, supporting M.2 E-Key interface WiFi7 (such as BE200) with backward compatibility for WiFi6 (e.g., AX210, AX200) and WiFi5. The expansion board features two USB 3.0 ports, along with conventional interfaces such as HDMI, USB 2.0, and a 40-pin GPIO. The Gigabit Ethernet port supports PoE power supply, making it ideal for various high-speed WiFi7-based transmission and testing applications. The expansion board is compatible with all CM5 core boards(including those with and without eMMC) and uses a DF40HC 3.0 connector.
II. Hardware Spec
1) 1*Gigabit Ethernet port, supporting PoE power supply (can output 5V 2.4A, do not use simultaneously with USB-C power).
2) 1*PCIe M.2 E-Key slot, supporting WiFi7 BE200, with a Bluetooth interface routed out as well.
3) 2*USB 3.0 Type-A ports.
4) 3*high-speed USB 2.0 ports, including one USB 2.0-A, one USB-C, and one 1.25mm 4Pin interface (can be used for the built-in CM4 4G module).
5) 1*Standard HDMI output port that supports 4K resolution.
6) 1*RTC interface, 1.25mm-2pin.
7) 1*CSI/DSI0 interface, 0.5mm 22Pin FPC (on the back of the expansion board).
8) 1*PWM speed control fan interface (1.0mm-4pin).
9) 1*3.3V fan interface (2.54mm-2Pin).
10) 3*LEDs: a 5V power indicator, a CM5 operation indicator, and a CM5 power indicator.
11) 1*Power button.
12) 1*TF card, only used for booting the system on CM5 core boards without eMMC.
13) 2-pin OTG jumper allows the power USB-C port to enter USB gadget mode (software support required).
14) The boot jumper enables flashing the eMMC-based CM5 core board through the USB-C power port.
15) Power supply: 5V/3A via USB-C port.
16) GPIO pins: 2.54mm 2×20Pin, fully compatible with Raspberry Pi 5.
17) Size: 70*110mm. Aluminum alloy shell size: 80*113*38mm.
18) The PCB uses immersion gold process, lead-free production, and the substrate is UL and RoHS certified. The flame retardant rating is 94V-0.
The 40-pin pinout is defined sequentially from left to right as:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2pin | 5V | 5V | GND | G14 | G15 | G18 | GND | G23 | G24 | GND | G25 | G08 | G07 | IDSC | GND | G12 | GND | G16 | G20 | G21 |
1pin | 3V3 | G02 | G03 | G04 | GND | G17 | G27 | G22 | 3V3 | G10 | G09 | G11 | GND | IDSD | G05 | G06 | G13 | G19 | G26 | GND |
III. Flash OS
We use the Raspberry Pi OS, the system version 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
For core boards with eMMC, the OS is flashed onto the eMMC. If the core board does not have eMMC, the OS is flashed onto the TF card.
Use a core board with eMMC. Before flashing the OS, please connect the power USB-C interface to the computer and short the BOOT jumper and OTG jumper on the board:
Once the flashing process is complete, remove the shorting cap, then power on again to start the OS.
For the flashing method, please refer to:
IV. Work with Raspberry Pi OS
4.1 Test USB ports
Plug the USB device into the USB port of the expansion board, then execute lsusb
in terminal:
Note: If no device is connected to the USB port on the expansion board, the corresponding device number will not appear in lsusb. For example, 'Bus 005 Device 005' appears because a wireless keyboard/mouse is connected. If no device is connected, this number will not be displayed.
Then enter lsusb -t
to check the operating mode of the USB ports.
Bus 02: For the USB 3.0 interface, connected to a USB flash drive (USB 3.0 device, 5000M).
Bus 04: For the USB 3.0 interface, connected to a USB flash drive (USB 3.0 device, 5000M).
Bus 05: For the USB 2.0 interface, it is connected to a wireless keyboard and mouse (12M), the Bluetooth of the WiFi module (12M), the CM4 4G module (480M), and a USB card reader (480M)
All operating modes are functioning normally.
4.2 Test WiFi7
The Raspberry Pi OS only supports a single WiFi connection. Therefore, if you use a Raspberry Pi CM5 core board with built-in WiFi functionality, the onboard WiFi module will automatically disable itself after installing the WiFi7 driver, rendering it unusable. For this reason, we also recommend using a CM5 core board without WiFi.
In the Pi terminal, run the lspci
command—the highlighted section indicates the BE200 WiFi7 module:
4.2.1 Install driver
(This step is applicable to both the AX200 and AX210)
Update header files in the terminal:
sudo apt install -y raspberrypi-kernel-headers firmware-iwlwifi flex yacc
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
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
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.
The OS is now prompting a restart. Please hold off on restarting for now.
Install the firmware (only for BE200, AX200 or AX210, no need to install the firmware):
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
Restart the OS:
sudo reboot
4.2.2 Test WiFi7
After restarting the OS, we can use the WiFi7 module to connect to the wireless AP.
Note: The core board's built-in WiFi module has been automatically turned off and replaced with the WiFi 7 module.
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:
"wlan0" refers to the WiFi7 module.
We perform speed tests using the iperf3 network benchmarking tool.
Download iperf3(Windows version):
http://www.mcuzone.com/down/Software.asp?ID=10000634
Install iperf3 on Linux:
sudo apt-get install iperf3
Hardware equipment used for speed test:
The router is a Xiaomi BE6500 Pro (WiFi7 + four-port 2.5G router), and the CM5 WiFi7-PoE is about 1 meter away from the router.
Connect the BE200 to a WiFi7 wireless network and perform an iperf3 speed test with a PC (Windows OS) under the same router.
The expansion board in client mode single-thread speed test:
The speed is about 507Mbps.
30-thread speed test:
The speed is about 2.08Gbps.
The expansion board in server mode single-thread speed test:
The speed is about 535Mbps.
30-thread speed test:
The speed is about 1.67Gbps.
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 WiFi7 (BE200) Bluetooth test
The BE200 WiFi7 module comes with a built-in USB Bluetooth interface, but additional Bluetooth driver installation is required for use.
4.3.1 Install Bluetooth driver
Execute the command in the terminal:
cd Downloads
wget http://www.mcuzone.com/wiki/5001_CM5_WiFi7-PoE/intel.zip
sudo cp intel.zip /lib/firmware/intel && cd /lib/firmware/intel
sudo unzip intel.zip
If there are file name conflicts while extracting, choose "A" (replace all).
Then restart the OS:
sudo reboot
4.3.2 Bluetooth test
Execute the command in the terminal:
hciconfig -a
There are two visible devices: hci0 is the core board's onboard Bluetooth (manufactured by Cypress Semiconductor, a UART device), while hci1 belongs to the BE200 (manufactured by Intel, a USB device). Both Bluetooth interfaces are currently active.
In order to test hci1, we need to disable hci0. Please execute the following command in the terminal:
sudo hciconfig hci0 down
(If you need to enable this device, please run sudo hciconfig hci0 up
.)
Now, executing hciconfig -a
shows that hci0
is down.
Click the Bluetooth icon at the top-right of the desktop, then choose "Add Device..." from the menu.
Put the target device in discoverable mode, and the Bluetooth module will scan and find it shortly. This example uses a Bluetooth mouse:
Select the mouse, click "Pair", and it will connect successfully after a short wait.
We can operate this mouse in the Raspberry Pi OS.
Execute the command in the terminal:
hcitool -i hci1 con
You can view the status of the devices connected to this Bluetooth.
4.4 Gigabit Ethernet test
Connect the Gigabit Ethernet to the upper-level router, execute ifconfig -a
, and the output is as follows:
Using iperf3 to test the speed of a Gigabit Ethernet port:
The client mode reaches around 937Mbps.
The server mode reaches around 948Mbps.
Note: The speed test for native Gigabit Ethernet is affected by network conditions and testing methods. Actual speeds may vary, and this test is for reference only.
4.5 RTC test
The CM5 core board comes with a built-in RTC, which can be used directly under the Raspberry Pi OS, but requires an external battery, as shown in the figure below:
After the OS starts, execute the following command in terminal:
ls /dev/r*
You will then see the RTC device listed.
The command to display the current system time is date
.
The command to write the system time to the RTC is sudo hwclock -w
.
The command to read the system time from the RTC is sudo hwclock -r
.
As shown in the following figure:
If the RTC battery is properly connected now, the RTC will retain its current time after power loss; otherwise, it will reset to the default time (January 1, 1970).
4.6 Fan (PWM) test
The expansion board includes a 1mm-4pin PWM-controlled fan power interface.
Install the monitoring software s-tui:
sudo apt install s-tui
Then, execute s-tui in the Raspberry Pi terminal, and you can observe the changes in fan speed in the monitoring window.
If you need to customize the fan speed and operating temperature range, please open the terminal and execute the following commands:
sudo nano /boot/firmware/config.txt
Insert the following lines at the end of the file:
dtparam=cooling_fan=on
dtparam=fan_temp0=50000,fan_temp0_hyst=5000,fan_temp0_speed=255
Among them:
fan_temp0=50000
, where 50000 represents the temperature, here it is 50°C.
fan_temp0_hyst=5000
, where 5000 denotes the hysteresis temperature, here it is 5°C.
fan_temp0_speed=255
, where 255 indicates the fan speed, with the maximum being 255.
You can input multiple temperature ranges and their corresponding fan speeds, with each segment on a separate line, differentiated by unique numbering (e.g., 1., 2., 3., etc.):
dtparam=fan_temp1=36000,fan_temp1_hyst=5000,fan_temp1_speed=128
4.7 DSI test
All LCD screens need separate external power.
4.7.1 Testing the Raspberry Pi 1-Gen LCD Display for Raspberry Pi
After the OS starts, 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. The display effect is as shown below:
4.7.2 Testing the Raspberry Pi 2-Gen LCD Display for Raspberry Pi
After the OS starts, 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.
4.7.3 Notes
Note 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.
Note 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.8 CSI test
The camera used for testing here is the OV5647. After connecting the camera, power on the board. 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
In actual use, add according to your specific model, save the settings, and restart the OS to enable the OV5647 camera.
After the OS starts, execute the following command in terminal:
ls /dev/video*
You will then see the video0 device listed.
Execute libcamera-hello --camera 0
in the terminal to open the corresponding camera for preview.
If a photo is required, please eexcute:
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:
4.9 4G module test
The expansion board comes with a built-in 1.25mm-4P USB port, which can be used to connect a 4G LTE module, enabling the expansion board to support 4G network functionality. For testing, we used the CM4 4G mini (CAT4 4G) module.
4.9.1 4G network test
Execute the command ifconfig -a
in the terminal, and the result is as follows:
The eth1 shown in the figure above is the CM4 4G mini (CAT4) module. If you are using the CM4 4G mini (Qualcomm 4G) module, the OS will recognize it as usb0.
Execute the route
command to view the routing table. Since eth1
is listed first, the internet connection is currently through the 4G module.
Both pinging the IP and the domain name are successful at this stage, confirming that the 4G module is working correctly.
Run a speed test at https://www.speedtest.cn/, and the results are as follows:
Note: Network speed test results are affected by network conditions and testing methods. Actual speeds may vary, and this test is for reference only.
4.9.2 Other tests for 4G
For details, please click the link below:
Modification of Network Priority
Modify the IP address of the 4G module
4.10 Button test
The expansion board comes with a button that functions as a power switch. When the device is on, pressing the button once will bring up the shutdown menu:
Press the button again to power off immediately.
Power on by pressing the button once while in the shutdown state (requires power connection).
4.11 PoE input test
The expansion board supports PoE and delivers 5V2.4A output. The network port needs to be connected to a PoE-enabled router, and the board can then be powered via the Ethernet cable. Either PoE power or the USB-C power port can be used for power supply, but they cannot be used simultaneously.
On-board PoE module parameters:
12W (5V 2.4A) Isolated PoE module, supports IEEE 802.3af/at Compliant.
Supports 37-57V input, with a typical value of 48V.
Featuring overheat, short-circuit, and overcurrent protection.
1.5KVrms insulation level.
PSE power supply equipment requirements:
Supports IEEE 802.3af/at Compliant.
Supports at least 20W output.
48V output, 1, 2+ / 3, 6- power supply.
Contact Us
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