Open main menu

Changes

NVMe SSD boot with the Raspberry Pi 5

337 bytes removed, 19 April
no edit summary
{{GD Template Impl}}
 <span class="tb_red">Most of the content of this tutorial comes from Jeff's blog: [https://www.jeffgeerling.com/blog/2023/nvme!-ssd-boot-raspberry-pi-5 NVMe SSD boot with the Raspberry Pi 5], Thanks fo Jeff</span>
==<span class="tb_red">READ ME before Starting</span>==
1. '''Enable PCIe''': Must make sure to '''enable PCIe in the OS on the NVME SSD you are booting''', instead of the OS on SD card. Too people just enable PCIe in the OS on the SD CARD.
'''[PS]''': The official Raspberry Pi firmware is frequently upgraded and the OS is not stable enough. It is also a challenge for us.
-->
 
This tutorial<ref>Refer to [https://www.jeffgeerling.com/blog/2023/nvme-ssd-boot-raspberry-pi-5 NVM NVMe SSD boot with the Raspberry Pi 5]</ref> describes how to configure the Raspberry Pi OS on PI 5 to get pcie pip working
 
== Important Notes==
{{NVMe SSD Incompatibility List}}
==Enable PCIe==
By default the PCIe connector is not enabled. To enable it you should add the following option into <span class="tb_blue">/boot/firmware/config.txt</span> and <span class="tb_blue">reboot</span>:
#/boot/config.txt is a link to sudo nano /boot/firmware/config.txt, they are the same file sudo nano /boot/config.txt
Then add the following comment;
# Enable the PCIe External connector.
dtparam=pciex1_gen=3
However, we '''DON'T''' recommend you to use <span class="tb_red_bold">WARNING:</span><span class="tb_red">The Raspberry Pi 5 is not certified for Gen 3.0 as it is not officially supported speeds, and connections to PCIe devices at these speeds may not work stablybe unstable.</span>
Then DON'T forgot to reboot
You also can refer to official documentatio:[https://www.raspberrypi.com/documentation/computers/raspberry-pi-5.html#enabling-pcie Enabling PCIe]
 
After reboot,use the lspci command to display your PCIe devices
sudo lspci
The output is as follows, note that the content of the third line depends on the NVME control you are using.
<span style="color:green;">pi@raspberrypi:</span> <span style="color:#50BEFF;">~ $</span> sudo lspci
0000:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries Device 2712 (rev 21)
<span class="tb_red">0000:01:00.0 Non-Volatile memory controller: Silicon Motion, Inc. SM2263EN/SM2263XT SSD Controller (rev 03)</span>
0001:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries Device 2712 (rev 21)
0001:01:00.0 Ethernet controller: Device 1de4:0001
<span class="tb_red">If your NVMe SSD is not recognized, updating the bootloader firmware is essential!</span>Refer to [[How to update eeprom firmware]] to update firmware or [[#FAQ]] Q1 to know more details.
==Flash OS onto NVME SSD==
'''Only''' support Raspberry Pi OS ('''Bookworm''') version, Raspberry Pi OS bullseye or Ubuntu or Home Assistant OS is NOT supported, rfer refer to https://www.raspberrypi.com/software/operating-systems/
Here are a few ways to flash the OS to an NVME SSD:
The PCIe connection should work after a reboot, but your Pi won't try booting off an NVMe SSD yet. For that, you need to change the '''BOOT_ORDER''' in the Raspberry Pi's bootloader configuration:
* Use tool '''raspi-config''' to set boot order sudo raspi-configThen select '''6 Advanced Opitions''' => '''A4 Boot Order''' => '''B2 NVMe/USB Boot''' answer '''Yes''', then <code>sudo reboot</code>* Run the following command to edit the EEPROM on the Raspberry Pi 5set boot order.
sudo rpi-eeprom-config --edit
Then change the BOOT_ORDER line to the following:
'''Reboot''' your Raspberry Pi 5 to make the change take effect.
==Decrease wattage when turned off==
By default, the Raspberry Pi 5 consumes around 1W to 1.4W of power when turned off. This can be decreased by manually editing the EEPROM configuration with <mark>'''''sudo rpi-eeprom-config -e'''''</mark>. Change the settings to the following:
BOOT_UART=1
POWER_OFF_ON_HALT=1
BOOT_ORDER=0xf416
Then reboot the device with <mark>'''''sudo reboot'''''</mark>, this should drop the power consumption when powered down to around 0.01W.
==References==
<references />
==FAQ==
'''Q1''': Don't recognize / boot from NVME SSD? A: If you have '''enabled pcie''' and find that you still cannot boot from NVME SSD, please perform the following actions 1. Follow the picture below to check the version of [[X1001]] or [[X1000]] [[File:X1001{{X100x-V1.1-IMG-6871-old-new.jpg|600px]] 2. If it is an '''Old Version''', refer to [[How to update eeprom firmware]] to update the firmware with '''pieeprom-2023-10-30.bin file'''. 3. If it is an '''New Version''', refer to [[How to update eeprom firmware]] to update the firmware to '''lasted version'''. 4. '''If you still have not solved the problem, please refer to the next FAQ:Q2'''  '''Q2''': Can't boot/recognize from NVMe SSD? A: Here are a few steps to help you troubleshoot some issues: #Firstly, you can read [https://geekworm.com/community/forum/topic/120764/geekworm-x1001-for-raspberry-pi-5 this post] to get some help;# Make sure the SSD type you use is correct, only support <span class="tb_red">M.2 NVME Key-M SSD '''</span>NOT support''' M.2 NGFF Key-B SSD. Refer to the following diagram (click it to zoom out): [[File:Supported-SSD-1.jpg|100px]]# Make sure all hardware connections are properly connected and coupled.# '''Only''' Raspberry Pi OS ('''Bookworm''') supports PCIe, Raspberry Pi OS bullseye is NOT supported, refer to https://www.raspberrypi.com/software/operating-systems/# Although you can also boot from a SD card, Pi OS is required for the NVMe SSD to boot, DON'T forget Flash OS onto NVMe SSD.# If you're flashing a fresh Pi OS , DON'T forget to '''ENABLE PCIe'''.# Run the '''lspci''' or '''lsblk''' command to check the NVMe SSD is recognized.# Update the firmware, refer to [[#How to update eeprom firmware]]# If your SSD is old and has a '''DOS partition''', delete the DOS partition and repartition the SSD (feedback from buyer)# Contact us at email: support@geekworm.com# Refer to the issue solved by customer: https://geekworm.com/community/forum/topic/120764/geekworm-x1001-for-raspberry-pi-5}}
Return to [[X1000]] / [[X1001]] / [[X1000X1002]] / [[X1003]]
<!--Add review function! -->