2005 CM4 NAS EN
Keywords
Raspberry Pi, CM4 Core board, NAS, 2.5Gbps Ethernet, NVME SSD, RPiOS, Ubuntu, OpenMediaVault
I. Introduction
The CM4_NAS expansion board is designed based on the Raspberry Pi CM4. It expands three M.2 NVMe SSDs via the PCIe interface, with one slot supporting the 22110 form factor, another supporting 2242 and 2280, and a third supporting 2242, 2280, and 22110. We also added a 2.5Gbps Ethernet via PCIe to improve the read and write speeds of the M.2 NVMe SSD. Although the connection cannot fully utilize the 2.5Gbps bandwidth (typical SSD speeds are around 150MB/s = 1.2Gbps, with peaks up to 200MB/s = 1.6Gbps), it still significantly outperforms Gigabit Ethernet, which maxes out at about 110MB/s = 0.88Gbps. Other resources are standard for the Raspberry Pi CM4, including CSI0, CSI1, DSI1, native Gigabit Ethernet, standard HDMI, a TF card slot for booting, a 40-pin expansion interface, 3.3V and 5V fan connectors, as well as three USB 2.0-A ports and one 1.25mm 4-pin USB port for internal 4G device connectivity. This expansion board supports OS flashing to eMMC via a USB-C port. For power supply, it utilizes a DC5.5 interface and accepts a wide input voltage range of 7-24V.
The expansion board can run Raspberry Pi OS, Ubuntu OS, and OpenWrt. All three OSs support normal operation of 2.5Gbps Ethernet and NVMe SSDs. Additionally, it supports OpenMediaVault based on Raspberry Pi OS Lite for NAS storage applications.
II. Hardware Spec
1) 1*native Gigabit Ethernet.
2) 1*2.5G Ethernet via PCIe expansion with RTL8125 chip.
3) 3*PCIe M.2 M-KEY interfaces, supporting 22110/2280/2242 form factor SSDs.
4) 4*USB 2.0 host ports, including 3*USB-A ports and 1*1.25mm-4p port.
5) 1*standard HDMI port.
6) 1*DSI (22PIN, 0.5mm, flip-down connection).
7) 2*CSI (22PIN, 0.5mm, flip-down connection).
8) 1*TF card slot for booting the OS with a CM4 core module without eMMC.
9) 6*LEDs: 3*SSD activity LEDs, 1*5V power LED, 1*CM4 power LED, and 1*CM4 operation LED.
10) Power supply: 7–24V DC wide-voltage input or USB-C 5V/3A input (use either one, not both simultaneously).
11) 1*2.54mm 2-pin Boot jumper for eMMC flashing, eMMC flashing port is USB-C port.
12) 2*fan power connectors: 2.54mm 2-pin, supporting 5V and 3.3V.
13) Size: 125 × 135 mm; PCB with immersion gold process, lead-free production, UL and RoHS certified material, flame retardant rating 94V-0.
14) Optional aluminum alloy case with four mounting holes for easy installation, case size: 128 × 155 × 31 mm.
The pin definitions for the 40-pin connector, from left to right:
| 5V | 5V | GND | G14 | G15 | G18 | GND | G23 | G24 | GND | G25 | G08 | G07 | IDSC | GND | G12 | GND | G16 | G20 | G21 |
| 3V3 | G02 | G03 | G04 | GND | G17 | G27 | G22 | 3V3 | G10 | G09 | G11 | GND | IDSD | G05 | G06 | G13 | G19 | G26 | GND |
III. Flash OS
This document was tested on Raspberry Pi OS and Ubuntu OS. The OS versions used for testing are as follows:
▶ The version of Raspberry Pi OS is: 2024-07-04-raspios-bookworm-arm64.img.xz.
You can download it in:
https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit
▶ OpenMediaVault needs to be installed on the Lite version of Raspberry Pi OS (32-bit/64-bit CLI without GUI). The download link for the 32-bit/64-bit Raspberry Pi OS Lite is:
https://www.raspberrypi.com/software/operating-systems/
▶ 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 a core board with eMMC, the OS is flashed into the eMMC. If the core board does not have eMMC, the OS is flashed into the TF card.
Use a core board with eMMC. Before flashing, short-circuit the BOOT jumper on the extension board with a jumper cap, then connect the USB-C port on the extension board to a computer, as shown in the figure below:
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 Ethernet test
4.1.1 Ethernet connection
Connect the Gigabit Ethernet port to the upstream router, and execute ifconfig on the terminal, which displays the following:
eth0 is a Gigabit Ethernet and has obtained an IP address.
eth1 is a 2.5Gbps Ethernet, but since no network cable is plugged in, it has not acquired an IP address.
4.1.2 Gigabit Ethernet test
Connect the Gigabit Ethernet to the upstream router. The OS will automatically obtain an IP address. Open the terminal and install the speed testing software iperf3:
sudo apt-get install iperf3
Then we use iperf3 for a speed test:
The Gigabit Ethernet speed test result: about 942Mbps in Client mode:
About 946Mbps in Server mode:
4.1.3 2.5Gbps Ethernet test
The 2.5Gbps Ethernet is automatically recognized and driver-free on the Raspberry Pi OS. We connected the 2.5Gbps Ethernet to the upstream router, and the OS automatically obtained an IP address. Then, we used iperf3 to conduct a speed test:
The 2.5Gbps Ethernet speed test result: about 1.84Gbps in Client mode:
About 1.85Gbps in Server mode:
4.1.4 Set 2.5Gbps Ethernet MAC address
The 2.5G Ethernet port uses the RTL8125 network card, and during use, the MAC address is not fixed. Each time the device is powered on again, the MAC address changes randomly. The following explains how to set a fixed MAC address for the RTL8125 network card.
This explanation also applies to the Ubuntu system.
First, check the identification information of the RTL8125 network card in terminal:
ipconfig -a
Here, the RTL8125 network card is identified as eth1, but in practice, the name recognized by the system might be different.
Then input:
sudo mousepad /etc/systemd/system/macspoof@eth1.service
Or:
sudo nano /etc/systemd/system/macspoof@eth1.service
eth1 is the name recognized by the system for the network card shown above.
Executing the above command will create a new document, then enter the following text:
[Unit]
Description=MAC Address Change %I
Wants=network-pre.target
Before=network-pre.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
[Service]
Type=oneshot
ExecStart=/usr/bin/ip link set dev %i address xx:xx:xx:xx:xx:xx
ExecStart=/usr/bin/ip link set dev %i up
[Install]
WantedBy=multi-user.target
Here, "xx:xx:xx:xx:xx:xx" represents the MAC address you wish to assign. You can determine it according to the MAC address format (make sure it does not duplicate the MAC address of other network devices). After setting it, save and exit.
Then execute the following commands to enable the service:
sudo systemctl enable macspoof@eth1.service
sudo systemctl start macspoof@eth1.service
This completes the fixation of the MAC address for eth1.
After completing all operations, restart the system. Once the system has finished rebooting, execute ipconfig -a to see that the MAC address has been successfully changed.
4.2 Single SSD test
The test was conducted using three different SSDs, with their serial numbers and parameters as follows:
SSD1: KingSpec NE-128 128.0 GB
SSD2: WDC PC SN530 SDBPNPZ-256G-1002 256.0 GB
SSD3: INTEL MEMPEI1J016GAL 16 GB
The locations of the three SSD slots on the expansion board are shown in the figure below:
4.2.1 SSD recognition test
The onboard triple SSD interface supports plug-and-play functionality on the Raspberry Pi OS. Use the command lspci to read SSD information, where the red box indicates the information read from the SSD2:
This proves that the SSD has been recognized.
After testing, a single SSD can be recognized regardless of which slot it is plugged into. However, in the Raspberry Pi OS, authorization is required before further operations can be performed:
4.2.2 SSD interface speed test
Install the SSD speed testing software hdparm. Execute the command in the terminal:
sudo apt install hdparm
Execute df in the terminal to check the SSD partition named nvme0n1:
Execute the speed test command repeatedly to measure SSD performance multiple times:
sudo hdparm -t /dev/nvme0n1
Slot1:
Slot2:
Slot3:
Test results: The SSD achieved an interface speed of approximately 360MB/s (equivalent to about 2.81Gbps) across all three slots, indicating similar interface speeds for the three slots themselves.
Below are the SSD interface speed test results for three SSDs in three slots:
| Interface speed unit: MB/s | Slot1 | Slot2 | Slot3 |
| SSD1 | 359 (about 2.80Gbps) | 359 (about 2.80Gbps) | 361 (about 2.82Gbps) |
| SSD2 | 387 (about 3.02Gbps) | 389 (about 3.04Gbps) | 389 (about 3.04Gbps) |
| SSD3 | 379 (about 2.96Gbps) | 379 (about 2.96Gbps) | 380 (about 2.97Gbps) |
4.2.3 Install SAMBA for file sharing
SAMBA is a software for sharing files between Windows and Linux. We can use it to transfer files between Windows and Raspberry Pi via Ethernet to test network speed.
Install SAMBA:
sudo apt install samba
Edit the SAMBA configuration file and add a shared node:
sudo nano /etc/samba/smb.conf
Add a shared node at the end of the file:
[pi5]
comment = pi5 filesystem
path = /
available = yes
browseable = yes
public = yes
guest ok = yes
writable = yes
create mask = 0644
directory mask = 0755
valid users = mcuzone
force user = mcuzone
force group = mcuzone
The "mcuzone" in the last 3 lines represents the login username for the Raspberry Pi OS. Please modify it according to the actual username.
After adding the content, save the file and quit.
Assign Samba access to the user "mcuzone: (a custom password will be required):
sudo smbpasswd -a mcuzone
Test and restart the Samba service:
sudo testparm
sudo service smbd restart
sudo service nmbd restart
After completing the setup, on a PC within the same local network as the CM4_NAS expansion board (taking Windows 11 as an example), enter \192.168.8.61 in File Explorer (the address is that of the expansion board and may vary in practice). Then, enter the username and password (the password is the Samba password, not the Raspberry Pi OS login password), and you will be able to see the shared directory:
Note: If "Remember my credentials" is enabled, changing the Samba password (via sudo smbpasswd -a mcuzone) will cause login failures on Windows. To resolve this, delete or update the credentials in Windows Credential Manager.
4.2.4 SSD R/W speed test
Speed test via 2.5Gbps Ethernet.
Slot1 and SSD1:
Write: about 164MB/s (about 1.28Gbps)
Read: about 207MB/s (about 1.61Gbps)
Slot1 and SSD2:
Write: about 171MB/s (about 1.34Gbps)
Read: about 192MB/s (about 1.50Gbps)
Slot1 and SSD3:
Write: about 159MB/s (about 1.24Gbps)
Read: about 190MB/s (about 1.48Gbps)
Slot2 and SSD1:
Write: about 161MB/s (about 1.26Gbps)
Read: about 208MB/s (about 1.63Gbps)
Slot2 and SSD2:
Write: about 208MB/s (about 1.63Gbps)
Read: about 195MB/s (about 1.52Gbps)
Slot2 and SSD3:
Write: about 163MB/s (about 1.27Gbps)
Read: about 218MB/s (about 1.70Gbps)
Slot3 and SSD1:
Write: about 151MB/s (about 1.18Gbps)
Read: about 201MB/s (about 1.57Gbps)
Slot3 and SSD2:
Write: about 175MB/s左右 (about 1.37Gbps)
Read: about 217MB/s (about 1.70Gbps)
Slot3 and SSD3:
Write: about 166MB/s (about 1.30Gbps)
Read: about 204MB/s (about 1.59Gbps)
The test summary is as follows:
Speed test for SSD R/W via 2.5Gbps Ethernet:
| R/W speed units: MB/s | Slot1 | Slot2 | Slot3 | |||
| Write | Read | Write | Read | Write | Read | |
| SSD1 | 164 | 207 | 161 | 208 | 151 | 201 |
| SSD2 | 171 | 192 | 208 | 195 | 175 | 217 |
| SSD3 | 159 | 190 | 163 | 218 | 166 | 204 |
| R/W speed units: Gbps | Slot1 | Slot2 | Slot3 | |||
| Write | Read | Write | Read | Write | Read | |
| SSD1 | 1.28 | 1.61 | 1.26 | 1.63 | 1.18 | 1.57 |
| SSD2 | 1.34 | 1.50 | 1.63 | 1.52 | 1.37 | 1.70 |
| SSD3 | 1.24 | 1.48 | 1.27 | 1.70 | 1.30 | 1.59 |
Note: Subsequent test results such as SSD R/W speed benchmarks will be summarized in tables without individual screenshots.
Speed test for SSD R/W via Gigabit Ethernet:
| R/W speed units: MB/s | Slot1 | Slot2 | Slot3 | |||
| Write | Read | Write | Read | Write | Read | |
| SSD2 | 113 | 112 | 110 | 111 | 110 | 111 |
| R/W speed units: Mbps | Slot1 | Slot2 | Slot3 | |||
| Write | Read | Write | Read | Write | Read | |
| SSD2 | 904 | 896 | 880 | 888 | 880 | 888 |
4.3 Using two SSDs simultaneously
The test was conducted using two different SSDs, with their serial numbers and parameters as follows:
SSD1: KingSpec NE-128 128.0 GB
SSD2: WDC PC SN530 SDBPNPZ-256G-1002 256.0 GB
Each type of test is divided into three rounds, with the SSDs corresponding to the slots as follows:
| Slot1 | Slot2 | Slot3 | |
| Test1 | SSD1 | SSD2 | |
| Test2 | SSD2 | SSD1 | |
| Test3 | SSD1 | SSD2 |
4.3.1 SSD recognition test
Execute the command lspci to identify the SSDs, and the result is as follows:
| Test results | |
| Test1 | Both SSDs can be recognized |
| Test2 | Both SSDs can be recognized |
| Test3 | Both SSDs can be recognized |
4.3.2 SSD interfaces speed test
Using the SSD speed testing software hdparm, the results of the SSD interfaces speed test are as follows:
| Interface speed unit: MB/s | SSD1 | SSD2 |
| Test1 | 360 (about 2.81Gbps) | 385 (about 3.01Gbps) |
| Test2 | 359 (about 2.80Gbps) | 388 (about 3.03Gbps) |
| Test3 | 360 (about 2.81Gbps) | 390 (about 3.05Gbps) |
4.3.3 SSD R/W speed test
Speed test for SSD R/W via 2.5Gbps Ethernet:
| R/W speed units: MB/s | SSD1 | SSD2 | ||
| Write | Read | Write | Read | |
| Test1 | 165 | 205 | 155 | 208 |
| Test2 | 160 | 200 | 160 | 200 |
| Test3 | 170 | 210 | 173 | 209 |
| R/W speed units: Gbps | SSD1 | SSD2 | ||
| Write | Read | Write | Read | |
| Test1 | 1.29 | 1.60 | 1.21 | 1.63 |
| Test2 | 1.25 | 1.56 | 1.25 | 1.56 |
| Test3 | 1.33 | 1.64 | 1.35 | 1.63 |
Speed test for SSD R/W via Gigabit Ethernet:
| R/W speed units: MB/s | SSD1 | SSD2 | ||
| Write | Read | Write | Read | |
| Test1 | 106 | 110 | 109 | 110 |
| Test2 | 110 | 112 | 109 | 111 |
| Test3 | 110 | 111 | 108 | 111 |
| R/W speed units: Mbps | SSD1 | SSD2 | ||
| Write | Read | Write | Read | |
| Test1 | 848 | 880 | 872 | 880 |
| Test2 | 880 | 896 | 872 | 888 |
| Test3 | 880 | 888 | 864 | 888 |
4.4 Using three SSDs simultaneously
The test was conducted using three different SSDs, with their serial numbers and parameters as follows:
SSD1: KingSpec NE-128 128.0 GB
SSD2: WDC PC SN530 SDBPNPZ-256G-1002 256.0 GB
SSD3: INTEL MEMPEI1J016GAL 16 GB
Three SSDs are inserted into the three slots of the expansion board simultaneously, with SSD1 corresponding to Slot1, SSD2 to Slot3, and SSD3 to Slot2.
4.4.1 SSD recognition test
Execute the command lspci to identify the SSDs, and the result is as follows:
Three SSDs can be recognized.
4.4.2 SSD interfaces speed test
Using the SSD speed testing software hdparm, the results of the SSD interfaces speed test are as follows:
| Interface speed unit: MB/s | SSD1 | SSD2 | SSD3 |
| Test results | 360 (about 2.81Gbps) | 386 (about 3.02Gbps) | 380 (about 2.97Gbps) |
4.4.3 SSD R/W speed test
Speed test for SSD R/W via 2.5Gbps Ethernet:
| R/W speed units: MB/s | SSD1 | SSD2 | SSD3 | |||
| Write | Read | Write | Read | Write | Read | |
| Test results | 170 | 215 | 170 | 205 | 169 | 204 |
| R/W speed units: Gbps | SSD1 | SSD2 | SSD3 | |||
| 写 | 读 | 写 | 读 | 写 | 读 | |
| Test results | 1.33 | 1.68 | 1.33 | 1.60 | 1.32 | 1.59 |
Speed test for SSD R/W via Gigabit Ethernet:
| R/W speed units: MB/s | SSD1 | SSD2 | SSD3 | |||
| Write | Read | Write | Read | Write | Read | |
| Test results | 101 | 111 | 98 | 111 | 97 | 111 |
| R/W speed units: Mbps | SSD1 | SSD2 | SSD3 | |||
| Write | Read | Write | Read | Write | Read | |
| Test results | 808 | 888 | 784 | 888 | 776 | 888 |
4.5 Extend WiFi6
The SSD M.2 interface on the CM4_NAS expansion board can be converted into a WiFi interface using an NVMe to WiFi adapter to expand WiFi6 capability, compatible with AX200 or AX210.
Test results:
AX200:
When three WiFi modules are used individually, they can all connect to the internet normally. However, if two or three WiFi modules are used simultaneously, only the WiFi6 module in Slot1 remains functional.
AX210:
Whether using one, two, or three WiFi modules simultaneously, they can be freely inserted into any slot for normal operation.
V. Work with Ubuntu OS
5.1 Install the 2.5Gbps Ethernet driver
The 2.5Gbps Ethernet on the CM4_NAS expansion board requires the installation of the RTL8125 driver in Ubuntu OS.
Connect the Gigabit Ethernet on the expansion board to the upstream router and install net-tools to use ifconfig.
sudo apt install net-tools
Execute ifconfig -a, and you will see that the 2.5Gbps Ethernet is not displayed at this time:
Next, we will begin installing the RTL8125 driver:
First, you need to update the OS:
sudo apt-get update
Next, prepare the compilation environment:
sudo apt-get install --reinstall linux-headers-$(uname -r) linux-headers-generic build-essential dkms
Then install the driver:
sudo apt-get install r8125-dkms
If the OS freezes during the installation and compilation of the driver, you can limit the number of CPU cores used:
sudo MAKEFLAGS="-j2" apt-get install r8125-dkms
After installation is complete, excute:
sudo modprobe r8125
Enter ifconfig -a to see a network port called enxxx, which indicates that the 2.5Gbps Ethernet driver has been successfully installed:
5.2 Gigabit Ethernet test
Connect the Gigabit Ethernet to the upstream router. The OS will automatically obtain an IP address. Then we use iperf3 for a speed test:
The Gigabit Ethernet speed test result: about 941Mbps in Client mode:
About 929Mbps in Server mode:
5.3 2.5Gbps Ethernet test
Connect the 2.5Gbps Ethernet to the upstream router. The OS will automatically obtain an IP address. Then we use iperf3 for a speed test:
The 2.5Gbps Ethernet speed test result: about 2.29Gbps in Client mode:
About 1.64Gbps in Server mode:
5.4 Single SSD test
After testing, the Ubuntu 24.04 can recognize the SSD, but the OS freezes when performing operations on the SSD, making it unusable.
Ubuntu 24.10 supports the use of SSDs, but the system is quite selective with SSDs. Therefore, we conducted tests on the Ubuntu 24.10, aiming for comprehensive testing while ensuring OS stability; the SSD can only be used for storage in the Ubuntu OS.
The locations of the three SSD slots on the expansion board are shown in the figure below:
5.4.1 SSD recognition test
Use the command lspci to read SSD information, where the red box indicates the information read from a single SSD:
This proves that the SSD has been recognized.
Execute the command lspci to identify and test the SSDs, with the following results:
| SSD No. | Slot1 | Slot2 | Slot3 | |
| SSD A: KingSpec NE-128 128.0 GB | √ | × | × | √ indicates recognition;
× indicates non-recognition. |
| SSD B: SAMSUNG MZALQ128HBHQ-000L1 128.0 GB | √ | × | × | |
| SSD C: KINGSTON SNV2S250G 250.0 GB | × | × | √ | |
| SSD D: KSE128 128.0 GB | √ | √ | √ | |
| SSD E: WDC PC SN530 SDBPNPZ-256G-1002: 256.0 GB | √ | × | √ | |
| SSD F: HFS960GD0TEG-6410A 960.1 GB | √ | × | × |
5.4.2 SSD interfaces speed test
Below are the SSD interface speed test results using the hdparm tool, with each SSD tested in three different slots:
| Interface speed unit: MB/s | Slot1 | Slot2 | Slot3 |
| SSD A | 278 (about 2.17Gbps) | ||
| SSD B | 271 (about 2.12Gbps) | ||
| SSD C | 266 (about 2.08Gbps) | ||
| SSD D | 269 (about 2.10Gbps) | 255 (about 1.99Gbps) | 264 (about 2.06Gbps) |
| SSD E | 269 (about 2.10Gbps) | ||
| SSD F | 228 (about 1.78Gbps) |
5.4.3 Install SAMBA for file sharing
The steps for installing the SAMBA service on Ubuntu OS are the same as on Raspberry Pi OS. Please refer to Section 4.2.3.
5.4.4 SSD R/W speed test
| Read | Write | |
|---|---|---|
| Perform R/W speed tests on SSD B through the 2.5Gbps Ethernet,
with SSD B inserted in Slot 1 |
244MB/s (about 1.91Gbps) | 155MB/s (about 1.21Gbps) |
| Perform R/W speed tests on SSD B through the Gigabit Ethernet,
with SSD B inserted in Slot 1 |
108MB/s (about 864Mbps) | 105MB/s (about 840Mbps) |
5.5 Two SSDs test
The test was conducted using three different SSDs, paired and tested in combinations of two. Their serial numbers and parameters are as follows:
SSD A: KingSpec NE-128 128.0 GB
SSD C: KINGSTON SNV2S250G 250.0 GB
SSD D: KSE128 128.0 GB
5.5.1 SSD recognition test
SSD A corresponds to Slot 1, SSD D corresponds to Slot 2, and SSD C corresponds to Slot 3. Each can be recognized when inserted pairwise.
Execute the command lspci to identify and test the SSDs, with the following results:
| SSD No. | SSD A | SSD C | SSD D |
| SSD A (Slot1) + SSD D (Slot2) | √ | √ | |
| SSD A (Slot1) + SSD C (Slot3) | √ | √ | |
| SSD D (Slot2) + SSD C (Slot3) | √ | √ |
5.5.2 SSD interfaces speed test
Using the SSD speed testing software hdparm, the results of the SSD interface speed test are as follows:
| Interface speed unit: MB/s | SSD A | SSD C | SSD D |
| SSD A (Slot1) + SSD D (Slot2) | 233 (about .82Gbps) | 179 (about 1.40Gbps) | |
| SSD A (Slot1) + SSD C (Slot3) | 172 (about 1.34Gbps) | 219 (about 1.71Gbps) | |
| SSD D (Slot2) + SSD C (Slot3) | 288 (about 2.25Gbps) | 284 (about 2.22Gbps) |
5.5.3 SSD R/W speed test
Select the insertion method of SSD A (Slot1) + SSD C (Slot3), and perform read/write speed tests on SSD A.
Perform R/W speed tests on SSD A through the 2.5Gbps Ethernet, with SSD A inserted in Slot1:
Read: 202MB/s, (about 1.58Gbps)
Write: 95MB/s, (about 760Mbps)
Perform R/W speed tests on SSD A through the Gigabit Ethernet, with SSD A inserted in Slot1:
Read: 108MB/s, (about 864Mbps)
Write: 97MB/s, (about 776Mbps)
Select the insertion method of SSD D (Slot2) + SSD C (Slot3), and perform read/write speed tests on SSD D.
Perform R/W speed tests on SSD D through the 2.5Gbps Ethernet, with SSD D inserted in Slot2:
Read: 244MB/s, (about 1.91Gbps)
Write: 160MB/s, (about 1.25Gbps)
Perform R/W speed tests on SSD D through the Gigabit Ethernet, with SSD D inserted in Slot2:
Read: 107MB/s, (about 856Mbps)
Write: 104MB/s, (about 832Mbps)
5.6 Three SSDs test
The test was conducted using three different SSDs , with their serial numbers and parameters as follows:
SSD B: SAMSUNG MZALQ128HBHQ-000L1 128.0 GB
SSD D: KSE128 128.0 GB
SSD E: WDC PC SN530 SDBPNPZ-256G-1002: 256.0 GB
Every test involves inserting three SSDs into the expansion board, with SSD B corresponding to Slot1, SSD D to Slot2, and SSD E to Slot3.
5.6.1 SSD recognition test
Execute the command lspci to identify and test the SSDs, with the following results:
Select the configuration with SSD B (Slot1) + SSD D (Slot2) + SSD E (Slot3). All three hard drives can be recognized.
5.6.2 SSD interfaces speed test
Using the SSD speed testing software hdparm, the results of the SSD interface speed test are as follows:
| Interface speed unit: MB/s | SSD B | SSD D | SSD E |
| Test results | 277 (about 2.16Gbps) | 248 (about 1.94Gbps) | 262 (about 2.05Gbps) |
Select the insertion method of SSD B (Slot1) + SSD D (Slot2) + SSD E (Slot3), and perform read/write speed tests on SSD B.
Perform R/W speed tests on SSD B through the 2.5Gbps Ethernet, with SSD B inserted in Slot1:
Read: 205MB/s, (about 1.60Gbps)
Write: 150MB/s, (about 1.17Gbps)
Perform R/W speed tests on SSD B through the Gigabit Ethernet, with SSD B inserted in Slot1:
Read: 112MB/s, (about 896Mbps)
Write: 105MB/s, (about 840Mbps)
5.7 Extend WiFi6
The SSD M.2 interface on the CM4_NAS expansion board can be converted into a WiFi interface using an NVMe to WiFi adapter to expand WiFi6 capability, compatible with AX200 or AX210. After testing, the device can connect to the internet normally when using any single WiFi module, any two modules combined, or all three modules simultaneously.
VI. Work with NAS server
6.1 Preparation
For successful installation of OpenMediaVault NAS server, use the Lite version of Raspberry Pi OS (32-bit/64-bit CLI without GUI). Other versions are incompatible.
The version of Raspberry Pi OS which we use is 2025-05-13-raspios-bookworm-armhf-lite.img.xz
Please flash the OS image to the TF card or eMMC. Use the Raspberry Pi Imager to flash the image and enable the SSH function in the preset configuration during the flashing process:
6.2 Install OpenMediaVault
Connect the Ethernet port on the CM4_NAS expansion board to the upstream router. It is recommended to use the 2.5Gbps Ethernet to maximize the functionality of the onboard network. After the OS starts, log in with the preset username and password:
Execute ifconfig, and you can see that the 2.5Gbps Ethernet has correctly obtained an IP:
The IP here is 192.168.8.79. Note: If the 2.5Gbps Ethernet is used for network connection, to prevent IP changes after each reboot, follow the instructions in Section 4.1.4 to set a fixed MAC address for this port.
Update the OS and header files:
sudo apt-get update
sudo apt-get upgrade
Once the update is finished, you can begin installing the OpenMediaVault.
Execute:
wget https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install
chmod +x install
sudo ./install -n
Note: When downloading and installing the OpenMediaVault, ensure a stable connection to websites like GitHub, as the installation process may take some time. Please wait patiently.
6.3 Configure OpenMediaVault
After the installation is complete, restart the OS. On a PC within the same local network, enter the Raspberry Pi OS's IP address (in this example, it is 192.168.8.79) into a browser to access OpenMediaVault. The default login username and password are admin and openmediavault, respectively.
Before setting up the NAS server, make sure the storage devices are correctly installed. Proceed only after installation is complete. Select "Storage", then click on "Disk". This should display all connected storage devices, including SD (TF) cards and SSDs. If nothing appears, carefully check that everything is properly inserted and restart the OS.
Here, you can see an externally connected Samsung 120G SSD.
Click "File System" under "Storage", then click "Mount Existing File System", as shown in the figure below:
Select the currently installed storage device (in this case, a 120GB Samsung SSD), then click "Save"
Save and then click "Change" in the "Pending Configuration Changes" that appear afterward to complete the mount setup.
After the mounting is completed, the interface will display an overview of the SSD.
We can repeat the above steps to mount multiple storage devices.
Click "Shared Folder" under "Storage", then click "Create":
You can name the folder here, select the drive where it should be located, and assign user permissions. By default, the permissions should be correct, but if different permissions are needed, they can be adjusted. Then save and apply the changes:
Here, multiple shared folders can be added as needed.
Next, we need to make sure the computers on the network can find the shared folder. Click "SMB/CIFS" under "Services", then click "Settings", check "Enabled", and save and apply the changes.
Then click "Share" under "SMB/CIFS", select "Create", choose the shared folder configured above, check "Enabled", and save and apply the changes.
If you need to configure multiple shared folders, please repeat the above steps.
Finally, by clicking on "User" under the "Users" section, we can set up a user for subsequent logins to the NAS server.
Note: The default user here refers to the login user of the Raspberry Pi OS, not the user logging into the OpenMediaVault (shown as the "mcuzone" user in this article). If you change this password, you will need to use the new password the next time you log in to the Raspberry Pi OS.
6.4 NAS server test
On a PC within the same local area network, taking Windows 11 as an example, navigate to "Control Panel > All Control Panel Items > Network and Sharing Center > Change advanced sharing settings", then enable "Turn on network discovery" and "Turn on file and printer sharing":
Click "Network," locate the NAS server, which is shown as "RASPBERRYPI" in this article:
Double-click this server, then enter the username and password set above to open the shared folder:
Test file R/W speed under 2.5Gbps Ethernet:
Write: about 146MB/s (about 1.14Gbps)
Read: about 204MB/s (about 1.59Gbps)
Note: Testing speeds are affected by various factors such as network conditions, SSD quality, and file storage status. The above test results are for reference only and do not represent the final parameters of the actual product.
6.5 Multi-SSD concurrent usage test
Above, we tested the performance of a single SSD as the storage device. Next, we will examine how the OS recognizes one SSD in different slots and multiple SSDs working together.
6.5.1 Single SSDs test
After testing, a single SSD can be recognized no matter which slot it is inserted into.
6.5.2 Two SSDs test
The test was conducted using three different SSDs, paired and tested in combinations of two. The serial numbers and parameters are as follows:
SSD A: KingSpec NE-128 128.0 GB
SSD C: KINGSTON SNV2S250G 250.0 GB
SSD D: KSE128 128.0 GB
SSD A corresponds to Slot1, SSD D corresponds to Slot2, SSD C corresponds to Slot3.
Test1:
SSD A + SSD D (Slot1 + Slot2):
Both SSDs are detectable.
Test2:
SSD A + SSD C (Slot1 + Slot3):
Both SSDs are detectable.
Test3:
SSD D + SSD C (Slot2 + Slot3):
Both SSDs are detectable.
6.5.3 Three SSDs test
Test4:
The test was conducted using three different SSDs, with their serial numbers and parameters as follows:
SSD A: KingSpec NE-128 128.0 GB
SSD C: KINGSTON SNV2S250G 250.0 GB
SSD D: KSE128 128.0 GB
SSD A corresponds to Slot1, SSD D corresponds to Slot2, SSD C corresponds to Slot3.
Insert all three SSDs into the slots:
All three SSDs are detectable.
Test5:
The test was conducted using three different SSDs, with their serial numbers and parameters as follows:
SSD B: SAMSUNG MZALQ128HBHQ-000L1 128.0 GB
SSD D: KSE128 128.0 GB
SSD F: HFS960GD0TEG-6410A 960.1 GB
SSD B corresponds to Slot1, SSD D corresponds to Slot2, SSD F corresponds to Slot3.
Insert all three SSDs into the slots:
All three SSDs are detectable.
6.5.4 Conclusion
In OpenMediaVault, whether one, two, or three SSDs are inserted, and regardless of which slot they are plugged into, the OS and software can recognize them properly.
VII. The compatibility test of the CM5 core board
▶ Raspberry Pi OS:
| Boot | Supports booting via the eMMC version of the CM5 core board. The CM5 core board without eMMC cannot boot from a TF card but can boot using an SSD via any SSD interface. | ||||
| Device Name | HDMI output | USB2.0-A ports | SSD R/W | Gigabit Ethernet | 2.5G Ethernet |
| Compatible or not? | √ | √ | √ | √ | √ |
| Device Name | Core Board WiFi | DSI | CSI0 | CSI1 | CSI1 used as DSI |
| Compatible or not? | √ | √(dsi1) | × | √(cam0) | √(dsi0) |
| Note: √ = compatible, × = incompatible. The text in parentheses indicates the differences from the CM4 core board. | |||||
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




QQ:8204136