I purchased a PoE M.2 HAT+ adapter from Waveshare for my Raspberry Pi 5, which allows not only to power the board via Ethernet, but also to connect an NVMe M.2 storage drive. This opens up new possibilities for using the Raspberry Pi as a mini-server, NAS or high-performance storage system.
To fully exploit this potential, I chose a compact and energy-efficient 256 GB Samsung MZ9L4256HCJQ-00BD1 SSD. In this review, I will share my experience connecting, configuring and testing this drive in conjunction with the Raspberry Pi 5. In particular, we will look at the design, main characteristics, operation of the PCIe 3.0 x1 interface, and check the real-world speed performance with the PCIe 3.0 x4 interface.
Compactness and design
The Samsung MZ9L4256HCJQ-00BD1 model is made in the M.2 2230 form factor, which means a length of only 30 mm (unlike the more common 2280, which is 80 mm). This format is often used in ultra-compact devices – tablets, mini PCs, and now in the Raspberry Pi 5 thanks to available adapters. Due to the limited area, 2230 format drives have certain design limitations:
- They are produced by only a few companies (Samsung, Kioxia, Western Digital, Sabrent, and a few others).
- The most common volumes are 256 GB and 512 GB, which are considered optimal in terms of price/capacity.
- Models of 1 TB or more exist, but their price is significantly higher than that of 2280 format counterparts due to high layout density and lower demand.
Despite its compact size, the NVMe SSD MZ9L4256HCJQ-00BD1 retains all the advantages of a full-fledged drive: high speed, low power consumption and stable operation. The 2230 form factor is ideal for use with the Raspberry Pi 5 in projects where compactness and reliability are important.
To better imagine its dimensions, I compared the drive with a 1 euro coin. This clearly demonstrates the density of components achieved in this form factor.


Key Features
This SSD is intended for computer and laptop manufacturers, i.e. it is an OEM product and unfortunately I could not find a public page on Samsung’s consumer sites, so I got its specification from the seller:
- Series – PM9B1
- Memory capacity – 256 GB
- Flash memory type – TLC
- Form factor – M.2
- M2 size – M.2 2230
- Connection interface – PCI Express 4.0 x4
- Read speed – 3300 Mb/s
- Write speed – 1250 Mb/s
Connecting to Raspberry Pi 5
Connecting the SSD to the Raspberry Pi 5 via the Waveshare POE M.2 HAT+ was not easy. I encountered a problem – the lack of a drive fixing screw in the kit with the SSD and in the kit with the PoE HAT itself. Because of this, I spent time searching for it, but in the end I found the right one and fixed the SSD.
Each screw hole had a special protective sticker that was easily removed with a clerical knife and tweezers.

The SSD must be inserted at an angle until it stops and secured with a screw, this is how the connected solution will look.

After connecting, we proceed to the next stage – configuration and speed testing.
Device identification
When turning on the Raspberry Pi, the drive was correctly identified by the Disk utility as PM9B1 NVMe Samsung 256GB (46304039)

By default, the Raspberry Pi uses the PCIe 2.0 interface. To determine this, you need to run the following command, where the devices will be filtered by the keyword PCIe. Among the results, the following line is important, which accurately indicates the base value of PCI Express 2.0. Despite the speed limit of 5 Gigabits per second, it is still higher than any modern MicroSD memory card.
dmesg | grep PCIe
[0.505851] pci 0001:01:00.0: 4.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x1 link at 0001:00:00.0 (capable of 63.012 Gb/s with 16.0 GT/s PCIe x4 link)
The maximum possible bandwidth of this storage device is approximately 16 Gigaoperations per second, when using the PCI Express 4.0 x4 interface.
PCIe 3.0 Settings
The hardware parameters are written in the configuration file, which is read every time the operating system boots. It is this file that we will edit:
sudo nano /boot/firmware/config.txt
In the configuration, look for the dtparam parameter, which is responsible for the PCIe version of the pciex1_gen interface, and change its value to pciex1_gen=3. If there is no such parameter, simply add it:
dtparam=pciex1_gen=3
Save this file, and reboot the Raspberry Pi so that the changes are applied, and check the result again:
dmesg | grep PCIe
[0.401861] pci 0001:01:00.0: 7.876 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x1 link at 0001:00:00.0 (capable of 63.012 Gb/s with 16.0 GT/s PCIe x4 link)
This entry indicates that after rebooting, the new settings were applied, and now the Raspberry Pi will work with the drive faster.
Speed Testing
Once again, the Samsung SSD supports PCIe Gen 4.0 x4, which provides very high speeds. However, the Raspberry Pi 5 limits its capabilities to PCIe 3.0 x1, as described in the previous section. To understand how much this affects the speed, I conducted a comparative test: first I tested the SSD on my PC with PCIe 3.0 x4, and then on the Raspberry Pi 5, already with a PCIe 3.0 x1 interface.
The testing was carried out using the KDiskMark utility. This program is an alternative version of CrystalDiskMark only for Linux operating systems. You can install KDiskMark by running the following commands:
echo 'deb http://download.opensuse.org/repositories/home:/kimi:/kdiskmark/Raspbian_12/ /' | sudo tee /etc/apt/sources.list.d/home:kimi:kdiskmark.list
curl -fsSL https://download.opensuse.org/repositories/home:kimi:kdiskmark/Raspbian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_kimi_kdiskmark.gpg > /dev/null
sudo apt update
sudo apt install kdiskmark
After installing the program, you can run it with the command
kdiskmark
In the interface, you will need to select the disk that was recognized, in my case it is /media/ostrich/NVME and you also need to select the Settings menu in the program settings and select NVMe SSD to optimize the test specifically for NVMe disks. I left the other parameters at default. To start the test, click the “All” button and wait for the results to complete!

I decided to conduct a similar test only on my PC. I connected the SSD to an Asus Prime A520M-K motherboard, which also supports PCIe 3.0 but with an x4 index, which means 4 lanes instead of one.

Unfortunately, I don’t have the opportunity to fully test the full potential of this drive, but the difference is very noticeable.
Conclusions
The Samsung MZ9L4256HCJQ-00BD1 is a reliable and fast SSD that is perfect for expanding the capabilities of the Raspberry Pi 5. Its main advantages are stable operation, good energy efficiency and read/write speed, which makes the most of the potential of the PCIe 3.0 x1 interface on the Raspberry Pi. With such a drive, you can create a file server, storage system or even run databases with minimal latency. If you do not need maximum speeds of more than 1 GB/s, this combination is an ideal solution for your money.