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
![X1002-IMG-7124](/2024/05/23/Raspberry_Pi_5_SSD_Enable_%E6%95%99%E5%AD%B8/X1002-IMG-7124.jpg)
值得一提的是,一般來說目前市面上所販售的 RPI 5 SSD 轉板,都是遵循官方的 Raspberry Pi Connector for PCIe Design Guideline,SSD 轉接板只承擔訊號轉接的部分,所有相容性的問題,都是取決於作業系統,需要透過作業系統的更新來獲得改善,跟轉板本身並沒有太大關聯性。
使用前的注意事項
- RPI 5 僅支援 M.2 的 NVMe 架構,並不支援 SATA 架構。
- SSD Edge connector 需要選購 М-Key 或 B&M-Key,不支援 B-Key。
- 目前 SSD 相容性問題主要是出自於 SSD Drive Firmware 的啟動時序問題,導致 BCM2712 內部的 PCIe Controler 無法識別 Driver,目前官方仍在致力解決此問題,相信相容性會隨著時間逐漸改善。
- 由於 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 |
![image-20240523161332895](/2024/05/23/Raspberry_Pi_5_SSD_Enable_%E6%95%99%E5%AD%B8/image-20240523161332895.png)
雖然官方說 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 | sudo rpi-eeprom-update -a |
後續可以再用 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 | # Enable the PCIe External connector. |
按 Ctrl + o
,然後按 Enter
,將變更寫入檔案
再按 Ctrl + x
退出 Nano 編輯器
最後再輸入以下指令進行 System Reboot。
1 | sudo reboot |
重新啟動後,可以使用 lspci
確認 PCIe device 狀況。
1 | sudo lspci |
![image-20240524101012102](/2024/05/23/Raspberry_Pi_5_SSD_Enable_%E6%95%99%E5%AD%B8/image-20240524101012102.png)
備註
目前系統 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
來取代。
![2024052411h19m32sgrim](/2024/05/23/Raspberry_Pi_5_SSD_Enable_%E6%95%99%E5%AD%B8/2024052411h19m32sgrim.png)
修改 BOOT_ORDER
指令如下
1 | sudo rpi-eeprom-config --edit |
修改成以下 BOOT_ORDER
參數
1 | BOOT_ORDER=0xf416 |
後續重新進行 System Reboot 即可。
2. 使用 SSD 作為開機作業系統
你需要先準備一個 SSD 轉接 USB 的轉接盒,按照 SD Card 燒錄 Image 方式進行安裝設定。
Image 燒錄完成後,先不要退出 SSD,直接進入 SSD 的 Bootfs 資料夾,修改
Config.txt
。在
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
WD Blue SN570 500Gb
Storage Disk - Pass
OS Disk - Fail, 穩定性有問題,有機率性無法開機Kingston NV2 500Gb
Storage Disk - Pass
OS Disk - Fail, 穩定性有問題,有機率性無法開機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