Google Chat: zj734465502@gmail.com
+86-0755-88291180
sales01@spotpear.com
dragon_manager@163.com
services01@spotpear.com
manager01@spotpear.com
WhatsApp:13246739196
PCIe to USB 3.2 Gen1 2.5G ETH and M.2 adapter board is specifically designed for Raspberry Pi 5, expands M.2 hard drives in 2230 / 2242 / 2260 / 2280 sizes, 2.5G Ethernet and USB ports. It supports Gen2 mode only, and supports booting PI5 from SSD
Pay attention to the direction of the cable, and the connection is shown in the figure:
1. Enable PCIE interface
PI5B defaults to not having the PCIE interface enabled. Add to /boot/firmware/config.txt: dtparam=pciex1
2. The module only supports PCIE gen2 x1
3. After the modification, reboot the PI5, and the device can be recognized.
As shown in the figure, two SN580s were identified as my SSD solid-state drives, and the other PI5 is an RPI chip![]()
4. Partition, skip this step if you have partitioned and formatted on other platforms (Note: partitioning will delete all data on the SSD, proceed with caution)
Lsblk This command is executed to view the disk (if you want to see the details, run the sudo fdisk -l command)Partition: sudo fdisk /dev/nvme0n1 The device number is the total device number, do not add p1, that is just a partition How to use the partitioning tool fdisk: n New partition q Quit without saving p Print the partition table m Print the selection menu D Delete the partition w Save and exit t Modify the ID number Add the partition and execute n, then save and exit with w
5. Format
sudo mkfs. Execute the command and press Tab key, you will see a lot of different suffixes, and the different suffixes are the formats you need to formatIf I want to format it in ext4 file format, then execute the command: sudo mkfs.ext4 /dev/nvme0n1p1 Wait a moment, once all “done” appear as below, it indicates that the formatting is completed
![]()
6. Mount
Create a mount directory sudo mkdir toshiba Mount the device sudo mount /dev/nvme0n1p1 ./toshiba Check the disk status df -h
Enter the directory where the disk is mounted
cd toshiba
sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
sudo dd if=/dev/zero of=./test_write count=2000 bs=1024k
sudo dd if=./test_write of=/dev/null count=2000 bs=1024k
Test shows there's no issue. If it's not required to be used as a system disk, but only for expanding the disk, set it to auto-mount
sudo nano /etc/fstab #Add at the end /dev/nvme0n1p1 /home/pi/toshiba ext4 defaults 0 0 #/dev/nvme0n1p1 is the device name, /home/pi/toshiba refers to mounting to a directory, ext4 is the file system type, defaults uses the default mount option #Make the changes take effect (reboot only after testing, otherwise it will fail to mount and boot) sudo mount -a #Then reboot Check the device with lsblk
Boot the Raspberry Pi with a TF card first, mount and test it, and make sure the hardware can work properly
1. Modify the BOOT_ORDER in the Raspberry Pi boot loader configuration:
sudo rpi-eeprom-config --edit
Add:
NVME_CONTROLLER=1
Modify:
Modify BOOT_ORDER=0xf41 to BOOT_ORDER=0xf416For more information, please refer to BOOT_ORDER
2. Reboot Raspberry Pi
If you find you can't modify it multiple times, please reconnect to the network and then try to modify it (wait for the network to self-calibrate), or modify the file after setting the correct time
3. Burn the system to NVME, then connect the NVME to the expansion board, remove the TF card and power it on again
If you do not use the Raspberry Pi OS and use other Raspberry Pi supported systems, you may have the problem that PCIE can be recognized, but the corresponding network card will not appear
The kernel needs to be recompiled
Device Drivers > Network device support > Ethernet driver support > Realtek devices > Realtek 8169/8168/8101/8125 ethernet support
You can also download the driver directly and install it (the probability of failure is high, so it is not recommended)
The onboard INA219 chip can detect voltage and current, making it convenient for monitoring device status. It monitors the input 5V voltage status (not 3.3V)
Default I2C1 address is 0x40, which can be modified by adjusting the backside resistor to support the stacking of different expansion boards
sudo nano /boot/firmware/config.txt Add dtparam=i2c_arm=on
or
sudo raspi-config Find Interface Options -> I2C -> Yes
wget https://files.waveshare.com/wiki/PCIe_TO_M.2_USB_HAT%2B/PCIe_INA219.zip unzip -o PCIe_INA219.zip -d ./PCIe_INA219 cd PCIe_INA219 sudo python INA219.py![]()
Maximum output current per port: 2A
1. Install the uhubctl tool
sudo apt-get install uhubctl
2. Use
#Disable all USB power sudo uhubctl -l 1-1 -a off #Do not specify the port, disable all USB power on the bus #Enable USB power supply sudo uhubctl -l 1-1 -p 3 -a on sudo uhubctl -l 1-1 -p 4 -a on #-p specifies the port number #-a specifies the device status #-l (lowercase letter of L) specifies the USB bus, which can be checked with lsusb -t #The port number is based on the port number of USB2.0, and if there are no other USB devices, it should be the corresponding command by default #Disable USB power for a single port sudo uhubctl -l 1-1 -p 3 -a off sudo uhubctl -l 1-1 -p 4 -a off # Note that when using a single port for the first time it may not work, and you need to enable all ports first
Monday-Friday (9:30-6:30) Saturday (9:30-5:30)
Email: services01@spotpear.com