• sales

    +86-0755-88291180

PCIe-TO-M.2-HAT+ User Guide

Overview

Introduction

PCIe TO 2-CH M.2 HAT+ for Raspberry Pi 5, compatible with M.2 solid state drive in 2230 / 2242 size, only supports Gen2 mode, and supports booting PI5 from SSD.

Features

  • Support NVMe protocol and M.2 solid state drive protocol, high-speed read/write, with high work efficiency.
  • PCI-E×1 only supports Gen2 mode.
  • Only supports PI5B.
  • Compatible with M.2 solid state drive of 2230/2242 sizes.
  • Onboard working indicator lights, with PWR on continuously when powered, and ACT blinking during read/write.
  • HAT+ design with onboard EEPROM chip.
  • Onboard power monitoring chip, for real-time monitoring of the working status of the solid state drive.
  • Support NVME SSD booting.

Note

  • This HAT does not support NVME startup by default.

Hardware Description

Hardware Connection

Pay attention to the direction of the cable and connect it as shown in the figure:

Load

1: Enable PCIe Interface:

PCIE interface is enabled on the PI5B by default.
If the PCIE interface is not enabled, you add the following content in "/boot/firmware/config.txt":
dtparam=pciex1

2: The module only supports PCIE gen2 x1.
3: After modifying it and restarting PI5, you can recognize the device.

As shown below, the identified SM2263 is my SSD, and the other PI5 is the RPI chip.  

4: Note that skip this step if you have partitioned and formatted on other platforms (will delete all data from the SSD and proceed with caution).

lsblk  for viewing the disk (If you want to see the details run sudo fdisk -l) 

Partition
sudo fdisk /dev/nvme0n1    The device number is the total device number, don't add p1, that's just one partition
How to use fdisk partition tool
n New Partition
q Exit without saving
p Print partition table
m Print selection menu
d Delete Partition
w Save to exit
t Modify ID number
Execute n to add the partition, at last execute w to save and exit.

5: Format:

sudo mkfs.  Then press the tab to see a variety of different suffixes, the different suffixes are the formats you need to format.

If I want to format to the ext4 file format, execute the following command:
sudo mkfs.ext4 /dev/nvme0n1p1
Wait for a few moments, when done has appeared, it means that the formatting has been carried out.

6: Mount:

Create Mount Directory
sudo mkdir toshiba
Mount the device
sudo mount /dev/nvme0n1p1 ./toshiba
Checking disk status
df -h

Read/Write Test

Enter the directory where the disk is mounted:

cd toshiba
  • Release memory:
sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
  • Copying the contents of the Raspberry Pi's memory to the hard drive (Write):
sudo dd if=/dev/zero of=./test_write count=2000 bs=1024k


  • Copying the contents of the hard drive to the Raspberry Pi's memory ("/etc/fstab" for reading):
 sudo dd if=./test_write of=/dev/null count=2000 bs=1024k


  • Note: Different cards and environments make different test results. As the Raspberry Pi is more vulnerable to being affected, if you want to test the exact performance, you can use a PC to test.

Auto-mounting

If the testing is sound and you don't need it as a system disk and only use an extended disk, you can set up an automatic mounting.

sudo nano /etc/fstab

#Add the following content at the end:
/dev/nvme0n1p1  /home/pi/toshiba  ext4  defaults  0  0
#/dev/nvme0n1p1 is the device name, /home/pi/toshiba is the directory to be mounted, ext4 is the file system type, defaults are using the default mounting setting
#Make the changes take effect (make sure test without problems before rebooting, otherwise it will lead to failure to mount or boot)
sudo mount -a

#And then reboot  
Check the device through "lsblk" 

Booting from NVMe SSD

1: First, you can use an SD card to boot the Raspberry Pi, just test it to make sure the hardware can work properly.
2: Use the SD card to boot the Raspberry Pi and modify the config file, modify BOOT_ORDER:

sudo rpi-eeprom-config --edit 

Add:

NVME_CONTROLLER=1
Modify BOOT_ORDER=0xf41 as BOOT_ORDER=0xf416   

For more details, you can refer to BOOT_ORDER  
If you want to realize SD card boot priority, change to BOOT_ORDER=0xf461
Note: The board has onboard two or more M.2 ports, one of them is used as boot, it is recommended to connect the SSD used as boot to NVME1, the priority is NVME1 first.

3: Reboot the Raspberry Pi:

If you fail after trying several times, you can connect it to the network before modify again (wait for network time synchronization), or set the correct time before modifying the file.

4: Flash the system to NVME, and then connect to the board, remove the SD card, and power it on again.


NVME Power Monitoring

The onboard INA219 chip can detect the voltage and current, easy to monitor the device status and monitor the input 5V voltage status (not 3.3V).
The default I2C address is 0x40, addresses can be modified via back resistors to support stacking of different expansion boards.

Demo:

wget https://files.waveshare.com/wiki/PCIe-TO-M.2-HAT%2B/PCIe_TO_M.2_HAT%2B.zip
unzip -o PCIe_TO_M.2_HAT+.zip -d ./PCIe_TO_M.2_HAT+
cd PCIe_TO_M.2_HAT+
sudo python INA219.py

Resource

Datasheet

FAQ

Question:Does it suppport Hailo-8?

 Answer:

It's fine to use it, but the rate is only supported when in GEN2 mode, and the other one has to take up the rate, so the performance will not be perfect.


Support

Monday-Friday (9:30-6:30) Saturday (9:30-5:30)

Mobile: +86  13434470212

Email: services01@spotpear.com

TAG: Industrial Isolated 4CH RS485 TO POE ETH (B) RJ45 Converter UART For Modbus USB TO 4CH RS485 User Guide Raspberry Pi Triple Screen HAT SpotPear ESP32-S3 AI Voice Images Chat Robot Electronic PhotoPainter Frame E-Paper Ink Screen 7.3-inch E6 Full-Color Deepseek Development Board Rockchip Smart Car USB TO 2.5G Ethernet Port Converter RJ45 RTL8156B Driver-Free For Windows/macOS/Linux/Android Raspberry Pi 3 display HAT 15.6 inch Dual LCD Computer PC Monitor Display Double Secondary Screen Type C Mini HDMI 1080P For Windows/MacOS R7FA4 PLUS B Development Board Based on R7FA4M1AB3CFM Compatible with Arduino UNO For R4 WiFi Arduino Thermal imaging 3D Display Transparent Screen Jetson Nano Case ESP32-S3R2 Jetson Orin 5G/4G/3G expansion board GNSS GPS RM520N-GL RM520N GL 5G/4G/3G M.2 Moudle IoT EMBB For LTE-A/NSA/SA And GNSS For DFOTA /VoLTE For Quectel Industrial Modbus RS485 RTU 8-ch Magnetic Latching Relay Module (C) With Digital Input Raspberry Pi Pico GNSS expansion board L76K GPS Beidou (BDS) GLONASS QZSS A-GNSS For RP2040/RP2350 UART To CAN