跳转到内容

5004 CM5IO Plus EN

来自Mcuzone Wiki

切换语言为中文

Keywords

Raspberry Pi, CM5 Core board, NVME SSD, Gigabit Ethernet, 100Mbps Ethernet, RPiOS, USB3.0, USB2.0, 4G, mini PCIe, SSD, RTC, PWM, DSI, CSI, Dual HDMI

I. Introduction

The CM5IO_Plus expansion board is built upon the Raspberry Pi CM5 IO board by adding an additional USB hub. It maintains a size design compatible with the Raspberry Pi CM5 IO board while introducing new features such as a USB 2.0 port, a 100Mbps Ethernet port, and a TF card slot for storage expansion. Additionally, it reserves space for a PoE module and a CM4-sized 4G installation.

The CM5IO_Plus expansion board features a four-layer PCB design, equipped with dual HDMI, Gigabit + 100Mbps Ethernet dual network ports, dual USB3.0 + four USB2.0 ports, PoE power support, and an M.2 SSD slot that can further adapt to WiFi7 and 2.5G Ethernet. It also supports optional industrial interface expansion boards based on the 40Pin connector, as well as USB expansion modules like 4G.

II. Hardware Spec

1) Supports the full range of Raspberry Pi CM5 core boards with DF40HC3.0 connectors, also compatible with CM4, but the USB 3.0 ports will not function.

2) 1*native Gigabit Ethernet port, supporting PoE; onboard optional PoE module, 5V 4.5A.

3) 1*100Mbps Ethernet.

4) 2*USB3.0 ports.

5) 4*USB2.0 posts, include 2*USB-A posts and 2*1.25mm-4Pin USB posts.

6) 1*NVMe SSD slot, supporting 2230/2242/2260/2280 form factors, with 2280 mounting posts pre-installed by default.

7) 2*DSI/CSI combo interfaces.

8) 2*TF card slots: one is solely used for OS boot on CM5 core boards without eMMC (invalid for core boards with eMMC), and the other is a USB SD slot for storage expansion port.

9) 1*RTC port, 1.25mm-2Pin.

10) 2*standard-sized HDMI ports.

11) 2*fan connectors: 1*PWM FAN (1.0mm-4Pin) and 1*5V connector (2.54mm-2Pin).

12) 4*LEDs: Power LED, CM5 core board power LED, Run LED, and SSD LED.

13) 3*pin header jumpers.

14) GPIO port: 2.54mm 2*20pins GPIO, fully compatible with Raspberry Pi 5 pins.

15) 1*power button.

16) Size: 160*90mm, it is designed as a four-layer board, using UL and RoHS certified materials with a flammability rating of 94V-0.

17) Optional metal casing.

5004_CM5IO_Plus_49.jpg

5004_CM5IO_Plus_50.jpg

III. Flash OS

It was tested using Raspberry Pi OS. The 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. For core boards without eMMC, the OS is flashed onto the TF card or NVMe SSD.

If using a core board with eMMC, before flashing the OS, please connect the power USB-C to the computer, short the OTG and BOOT jumpers on the board with jumper caps, and ensure the PWR light at the bottom of the board glows dimly after powering on, as shown in the figure below:

After the flashing is finished, 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

4.1.1 USB port detection test

Connect devices to USB ports, then execute the commands lsusb in the terminal. The output is as follows:

USB devices are detected normally.

Note: The above USB port on the expansion board will not show up in lsusb unless a device is connected. For instance, "Bus 005 Device 004" appears here because a wireless keyboard and mouse are plugged in, otherwise, this entry would not be listed.

Then execute lsusb -t to check if the USB port's working mode is normal:

5004_CM5IO_Plus_40.jpg

Bus 02: USB 3.0 interface, 5000Mbps.

Bus 04: USB 3.0 interface, 5000Mbps.

Bus 05: USB 2.0 interface, 480Mbps.

4.1.2 Test the speed of USB 3.0

Insert the USB NVMe SSD enclosure (with the NVMe SSD installed) into the expansion board's USB 3.0-A port. Boot the OS and perform large file transfers between the two drives. The test results are as follows:

Data transfer direction Time(s) Packet size(Mb) Transmission speed(MB/s) Transmission speed(Gbps)
USB3.0 NVME->Expansion board SSD 5.89 2048 347.71 2.78
Expansion board SSD->USB3.0 NVME 7.55 2048 271.26 2.17
USB3.0 NVME->Expansion board SSD 41.1 10240 249.15 1.99
Expansion board SSD->USB3.0 NVME 42.14 10240 243 1.94

4.1.3 Test the speed of USB 2.0

Insert the USB NVMe SSD enclosure (with the NVMe SSD installed) into the expansion board's USB 2.0-A port. Boot the OS and perform large file transfers between the two drives. The test results are as follows:

Data transfer direction Time(s) Packet size(Mb) Transmission speed(MB/s) Transmission speed(Gbps)
USB2.0 NVME->Expansion board SSD 60.79 2048 33.69 0.27
Expansion board SSD->USB2.0 NVME 39.45 2048 51.91 0.42
USB2.0 NVME->Expansion board SSD 304.64 10240 33.61 0.27
Expansion board SSD->USB2.0 NVME 306.01 10240 33.46 0.27

4.2 NVMe SSD test

4.2.1 SSD detection test

Connect an NVMe SSD to the expansion board, then power on and boot the OS.

In the terminal, execute lspci to check the SSD information:

5004_CM5IO_Plus_06.jpg

Then you need to authorize the SSD. In File Manager, click on the SSD partition, and an authorization dialog will pop up. Enter the current account password to authorize.

Note: The first partition requires password authorization upon clicking; others only need a click.

After authorization, the partitions will appear on the desktop.

Execute df in the terminal to view the SSD partition information:

5004_CM5IO_Plus_07.jpg

We can see two SSD partitions named nvme0n1p1 and nvme0n1p2.

4.2.2 Test the SSD interface speed (PCIe Gen2)

By default, the SSD operates under PCIe Gen2.

Install the hard disk speed testing software hdparm:

sudo apt install hdparm

Execute the speed test command repeatedly to measure disk performance multiple times:

sudo hdparm -t /dev/nvme0n1

This was execute5 times, with the detailed data below:

5004_CM5IO_Plus_08.jpg

No. Transmission speed(MB/s) Transmission speed(Gbps)
1 450.95 3.61
2 451.04 3.61
3 451.02 3.61
4 450.97 3.61
5 451.01 3.61
Avg. 451 3.61

4.2.3 Test the SSD interface speed (PCIe Gen3)

First, execute sudo nano /boot/firmware/config.txt in terminal, then add the following code at the end of the last line:

dtparam=pciex1_gen=3

5002_CM5_Basic_24.jpg

Save and exit, then restart the OS, this will switch to PCIe Gen3.

Execute the speed test command repeatedly to measure disk performance multiple times:

sudo hdparm -t /dev/nvme0n1

This was execute 5 times, with the detailed data below:

5004_CM5IO_Plus_09.jpg

No. Transmission speed(MB/s) Transmission speed(Gbps)
1 875.11 7.00
2 880.84 7.05
3 877.09 7.02
4 875.91 7.01
5 883.57 7.07
Avg. 878.5 7.03

The test results indicate a notable increase in SSD interface speed when switching from PCIe Gen2 to PCIe Gen3.

4.3 Ethernet port test

Connect the native Gigabit Ethernet port of the expansion board to the upper-level router, execute ifconfig, and the display is as follows:

5004_CM5IO_Plus_45.jpg

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

4.3.1 Testing Gigabit Ethernet

Use iperf3 to test the speed of the native Gigabit Ethernet:

Client mode is around 938Mbps:

5004_CM5IO_Plus_11.jpg

Server mode is around 947Mbps:

5004_CM5IO_Plus_12.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.3.2 Testing 100Mbps Ethernet:

Use iperf3 to test the speed of the 100Mbps Ethernet:

Client mode is around 93.7Mbps

5004_CM5IO_Plus_13.jpg

Server mode is around 947Mbps:

5004_CM5IO_Plus_14.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.4 RTC test

The CM5 core board comes with an RTC, while an external battery is required on the expansion board, and it can be used directly under the Raspberry Pi system. As shown in the figure below:

5004_CM5IO_Plus_51.jpg

After the OS starts, execute the following in the terminal:

ls /dev/r*

You can see the RTC device::

5004_CM5IO_Plus_16.jpg

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 below:

5004_CM5IO_Plus_17.jpg

If the RTC battery is correctly connected at this time, the RTC will continue to keep accurate time after power loss. If the RTC battery is not properly connected, the time will reset to the default (January 1, 1970) after power loss.

4.5 PWM fan test

Installing the monitoring tool s-tui:

sudo apt install s-tui

Then, run s-tui in the Raspberry Pi terminal, and you can observe the changes in fan speed in the monitoring window:

5004_CM5IO_Plus_18.jpg

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

5003_CM5_Router_59.jpg

4.6 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.6.1 Testing the Raspberry Pi 1st-Gen LCD Display

Connect the screen cable to the CAM/DISP 0 port on the back of the expansion board, power on 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

(Using the CAM/DISP 0 port, if using the CAM/DISP 1 port, please change dsi0 to dsi1.)

5002_CM5_Basic_34.jpg

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

4.6.2 Testing the Raspberry Pi 2nd-Gen LCD Display

After connecting the hardware, power on the expansion 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=vc4-kms-dsi-ili9881-7inch,dsi0

2009_CM4_SSD_WiFi6_21.jpg

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

4.6.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.

3): To use CAM/DISP 1, replace "dsi0'"with "dsi1" in the statement.

4.7 CSI test

The camera used for testing here is the OV5647, and the port is CAM/DISP 0. 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

(If using the CAM/DISP 1 port, please change cam0 to cam1.)

5002_CM5_Basic_36.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:

5004_CM5IO_Plus_19.jpg

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

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:

4.8 Testing the external 4G module

The 4G modules provided by our company all feature driver-free and dial-up-free operation, auto-identification, and plug-and-play functionality. Our 4G models include CAT4 4G, Qualcomm 4G/4G-GPS, NL668-EAU/EU/AM 4G, ZTE CAT4 4G, and Quectel EG25-G. Among them, both CAT4 4G and ZTE CAT4 4G are automatically recognized by the OS as eth devices, while Qualcomm 4G/4G-GPS, NL668-EAU/EU/AM 4G, and Quectel EG25-G are all automatically recognized as usb0 devices.

We connect the 1.25mm-4p port of the 4G module to the 1.25mm-4p port of the CM5IO_Plus expansion board:

5004_CM5IO_Plus_32.jpg

The native Gigabit Ethernet is connected to the upper-level router. After booting the system, execute ifconfig -a in the terminal, and the displayed results are as follows.:

5004_CM5IO_Plus_46.jpg

If your 4G module is a CAT4 4G/ZTE CAT4, the OSs will recognize it as eth2 (the number "2" depends on the number of other wired networks present).

Taking the Qualcomm 4G LTE module as an example, we connected both the native Gigabit Ethernet and 100Mbps Ethernet to the upstream router. After executing the route command to check the routing table, eth1 was listed first, indicating that the internet connection was currently being routed through the 100Mbps Ethernet.

5004_CM5IO_Plus_24.jpg

We unplugged the 100Mbps Ethernet cable, restarted the OS, executed the route command, and checked the routing table. Since usb0 was listed first, the OS was connected to the internet via the 4G module at that time.

5004_CM5IO_Plus_25.jpg

We can now successfully ping both the IP address and the domain name, confirming that the 4G module is working correctly:

5002_CM5_Basic_28.jpg

Open https://www.speedtest.cn/ to conduct a speed test, and the results are as follows:

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.

For other operations related to the 4G module, such as AT commands or network priority testing, please click this link: CM4 4G Mini.


4.9 Button test

CM5IO_Plus 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:

5001_CM5_WiFi7-PoE_47.jpg

Press the button again to power off immediately.

Power on by pressing the button once while in the shutdown state (requires power connection).

Note: The power button function requires system-level support. While Raspberry Pi OS and Ubuntu enable it by default, the current OpenWrt version lacks this feature.

4.10 PoE input test

CM5IO_Plus expansion board supports PoE and delivers 5V4.5A output. The Gigabit Ethernet 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:

25.5W (5V 4.5A) 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 30W output.

48V output, 1, 2+ / 3, 6- power supply.

4.11 HDMI test

The CM5IO_Plus expansion board features two HDMI output ports, supporting both separate and simultaneous image signal output. The effect of simultaneous image signal output is as follows:

V. Expansion peripherals

5004_CM5IO_Plus_52.jpg

5004_CM5IO_Plus_53.jpg

5004_CM5IO_Plus_54.jpg

5004_CM5IO_Plus_55.jpg

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