Raspberry Pi 5 SSD Enable 教學

前言

最近有一位客戶跟我說,他使用我們的 Camera 搭配 SSD,在 Record Video 的時候,不定時會有系統停擺的狀況。剛好最近想為 RPI 5 設置 SSD,因此就順道來驗證看看到底哪裡出了問題!

在我測試的當下,由於官方的 SSD 轉接板 Raspberry Pi M.2 HAT+ 在台灣還未上市(國外上市時間為 2024.05.14),加上我並不喜歡轉板設計放置在主板上,所以我另外購買了一款 GeekWorm X1002 來使用。

測試配置如下

  • Raspberry Pi 5 8Gb Ram
  • OS: Raspberry Pi OS (64-bit)
    • Release date: March 15th 2024
    • Kernel version: 6.6
    • Debian version: 12 (bookworm)
  • PCIe Adapter Board - GeekWorm X1002
  • SSD test checklist
    • WD Blue SN570 500Gb
    • Kingston NV2 500Gb
    • Micron Crucial P3 Plus 500Gb

值得一提的是,一般來說目前市面上所販售的 RPI 5 SSD 轉板,都是遵循官方的 Raspberry Pi Connector for PCIe Design Guideline,SSD 轉接板只承擔訊號轉接的部分,所有相容性的問題,都是取決於作業系統,需要透過作業系統的更新來獲得改善,跟轉板本身並沒有太大關聯性。

使用前的注意事項

  1. RPI 5 僅支援 M.2 的 NVMe 架構,並不支援 SATA 架構。
  2. SSD Edge connector 需要選購 М-Key 或 B&M-Key,不支援 B-Key。
  3. 目前 SSD 相容性問題主要是出自於 SSD Drive Firmware 的啟動時序問題,導致 BCM2712 內部的 PCIe Controler 無法識別 Driver,目前官方仍在致力解決此問題,相信相容性會隨著時間逐漸改善。
  4. 由於 SSD 會消耗較大的電力,請確保使用足瓦的電源供應器,5V5A 是最理想的配置。

1. RPI 5 SSD Enable 流程

HW 安裝 SSD 的過程不再贅述,在我們 Enable SSD 前,務必需先確認 Raspberry Pi EEPROM 的 Firmware 是最新的!

也就是說在安裝完 SSD 後,需要使用既有的 Raspberry Pi OS 進行 EEPROM 更新,再進行後續操作,不論你是否打算將 SSD 作為資料儲存硬碟,還是想將 SSD 作為 Raspberry Pi OS,皆需要執行以下指令進行更新,否則很容易出現 SSD 不相容的問題,目前官方仍在致力解決此問題,相信相容性會隨著時間逐漸改善。

1.1 RPI EEPROM Firmware 更新

首先,確保 SD Card 的 Raspberry Pi 運行最新的軟體,執行以下命令進行更新:

1
sudo apt update && sudo apt upgrade

接下來檢查 RPI EEPROM FW 版本

1
sudo rpi-eeprom-update

雖然官方說 EEPROM FW 版本至少在 2023.12.6 後才是可用的,但是按照國外網友的反饋,建議至少採用 2024.01.24 以後的版本,其 SSD 相容性才會有廣泛的提升。

RPI EEPROM FW 升級方式如下,輸入以下指令:

1
sudo raspi-config

選擇 Advanced Options > Bootloader Version,然後選擇 E1 Latest Use the latest bootloader image ,按 Ok & Yes 以及 Finish 退出 raspi-config,進行 System Reboot。

重新啟動系統後,輸入以下指令將 FW 更新到最新版本

1
2
3
sudo rpi-eeprom-update -a
# 再 Reboot 系統一次確保生效
sudo reboot

後續可以再用 sudo rpi-eeprom-update 指令確認 EEPROM 是否已經更新到最新的版本。

1.2 啟用 PCIe Port

由於對某些 SSD 存在相容性問題,BCM2712 無法順利偵測,導致 PCIe Port 不一定會自動 Enable,所以需要以強制手段讓 FW 直接查看 pciex1

因此最好請依照此流程修改 config.txt 讓 PCIe Port 直接啟用

1
sudo nano /boot/firmware/config.txt

config.txt 內容下方添加以下代碼

1
2
3
4
# Enable the PCIe External connector.
dtparam=pciex1
# This line is an alias for above (you can use either/or to enable the port).
dtparam=nvme

Ctrl + o,然後按 Enter,將變更寫入檔案

再按 Ctrl + x 退出 Nano 編輯器

最後再輸入以下指令進行 System Reboot。

1
sudo reboot

重新啟動後,可以使用 lspci 確認 PCIe device 狀況。

1
sudo lspci

備註

目前系統 PCIe Port 預設的是 Gen 2.0 (5 GT/sec) 速度,你可以在 config.txt 中再添加以下指令,讓 PCIe Port 強制跑到 Gen 3.0 (10 GT/sec) 速度。

1
dtparam=pciex1_gen=3

但是依目前狀況,在 SSD 相容性問題還沒徹底解決前,不建議這麼做,這種設置只會讓 SSD 裝置變的非常不可靠且不穩定。

1.3 設置啟動順序 (非必須)

後續如果想要使用 SSD 作為開機作業系統,就需要依照此流程設置作業系統啟動順序。

啟動順序不建議像往常一樣直接透過 sudo raspi-config 來進行設置,正常來說 B2 的設置會嘗試先從 NVMe 啟動,再去檢查 USB,最後才會是 SD Card,但是最近測試的結果,如果我同時插入 SSD 跟 USB,會造成開機遲緩,所以目前建議直接修改 BOOT_ORDER來取代。

修改 BOOT_ORDER 指令如下

1
sudo rpi-eeprom-config --edit

修改成以下 BOOT_ORDER 參數

1
BOOT_ORDER=0xf416

後續重新進行 System Reboot 即可。

2. 使用 SSD 作為開機作業系統

  1. 你需要先準備一個 SSD 轉接 USB 的轉接盒,按照 SD Card 燒錄 Image 方式進行安裝設定。

  2. Image 燒錄完成後,先不要退出 SSD,直接進入 SSD 的 Bootfs 資料夾,修改 Config.txt

  3. Config.txt 文件中添加以下內容,以確保 PCIe 功能 Enable。

    1
    2
    3
    4
    # Enable the PCIe External connector.
    dtparam=pciex1
    # This line is an alias for above (you can use either/or to enable the port).
    dtparam=nvme

    如之前所提,其實在 SSD 相容性理想的狀況下,不需要設置此代碼,但是因為絕大多數 SSD Control 相容性問題,BCM2712 無法順利偵測,導致 PCIe Port 不一定會自動 Enable,所以需要以強制手段讓 FW 直接查看 pciex1

    3. SSD 相容性測試結果

    For 2280

    1. WD Blue SN570 500Gb
      Storage Disk - Pass
      OS Disk - Fail, 穩定性有問題,有機率性無法開機

    2. Kingston NV2 500Gb
      Storage Disk - Pass
      OS Disk - Fail, 穩定性有問題,有機率性無法開機

    3. Micron Crucial P3 Plus 500Gb
      Storage Disk - Pass
      OS Disk - Pass, 可直接 Enable,不需特別設置 Config.txt


    關於國外網友測試的結果,可以參考以下影片和清單,部分產品台灣購買不到,僅供參考。

    Leepspvideo 測試可用清單

    Patriot P310 2280 https://amzn.to/3UzX5Rq

    Kingspec 128 2242 https://amzn.to/3SQSCJ2

    Kioxia 2230 https://amzn.to/48atQYH

    其他國外網友測試可用清單

    Kingston kc3000 https://amzn.to/48oCBOZ

    Lexar NM710 https://amzn.to/3UvyU6Q

    Samsung 980 pro https://amzn.to/3UCK4H6