SSD-Festplatte direkt an dem Raspberry Pi 5 betreiben mit passendem 3D Druck Case

Die Vorstellung des neuen Raspberry Pi 5 (RPi5) ist erst wenige Wochen her und inzwischen gibt es schon mehrere Adapterkarten, um NVME SSD Datenspeicher (keine SATA) direkt am RPi5 anzuschließen. Für welche Modele ich mich entschieden habe, wie der Umbau abgelaufen ist, wie das Betriebssystem auf die SSD aufgespielt wurde und wie letztendlich der RPi5 davon bootet kann, habe ich in diesem Bericht zusammen gefasst.

Das erste Adapterboard das ich getestet habe ist das N05 M.2 2242 PCIe To NVMe, das mit 2 PCIe FFC Flachbandkabel 40 und 100mm Länge, 4 Abstandshalter mit Schmelzgewinde und Schrauben, kleiner Schraubenzieher und einer kurzen Anleitung geliefert wird. Es ist eine Tob-Variante und wird auf den RPi5 gesteckt. Da über das Flachbandkabel maximal eine Stromstärke von 0,6 A geliefert werden kann, wird zusätzlich über die GPIO Pins mit 5V versorgt. So können aber mit dieser Variante, die ersten 10 GPIO-Pins nicht verwendet werden. Dafür gibt es alternativ die zweite Adapter Lösungen, die unter den RPi5 angebracht werden (Siehe weiter unten).
Wie im Video zu sehen, sind die Abstandshalter lang genug, um auch beim Einsatz mit aktiven Kühler noch ausreichend Luftstrom zulässt.

Schritte des Zusammenbaus:

  1. SSD auf NVMe-Adapterkarte anschließen
  2. Flachbandkabel am RPi5 anschließen
  3. NVMe-Adapterkarte mit Abstandshalter auf dem RPi5 montieren
  4. Flachbandkabel an der NVMe-Adapterkarte anschließen

Hersteller Wiki: https://wiki.52pi.com/index.php?title=EP-0209

SD-Karte vorbereiten:

Ich gehe davon aus das die Schritte aus dem vorherigen Beitrag „Erste Schritte“ ausgeführt wurden, um eine SD-Kare mit dem RPi-Imager zu erstellen. Davon wird gebootet
Und danach wie immer vorab mit sudo apt upgrade und danach sudo apt update das OS auf den neusten Stand bringen

Wie man die PCle-Funktion auf dem Raspberry Pi OS aktiviert

Standardmäßig ist der externe PCle-Header nicht aktiviert, um ihn zu aktivieren bearbeite die Datei config.txt im Terminal mit dem Befehl: sudo nano /boot/firmware/config.txt

und fügen Sie hinzu: dtparam=pciex1
(Bei andere Linux Distributionen kann die txt-Datei auch direkt im boot Verzeichnis liegen)

Die Verbindung ist für die Geschwindigkeit Generation 2.0 (5 GT/sec) zertifiziert, aber Sie können die Geschwindigkeit Generation 3.0 (10 GT/sec) ermöglichen, indem Sie die folgende Zeile hinzufügen: dtparam=pciex1_gen=3
Speichern mit STRG-o / Enter-Taste / STRG-x

Nach dieser Bearbeitung neu zu starten mit sudo reboot
Danach kann mit dem Befehl „lspci“ kontrolliert werden, ob die SSD gefunden wird.

Bei mir taucht die KIOXIA BG4 erst in der Liste auf, wenn ich pciex1_gen=3 gesetzt hatte. Als zweite SSD testete ich diese Samsung SSD mit 256 GB, die auch ohne Vorgabe der Generation ansprechbar wird.

Wie starte / boote ich nun von der SSD?
Nachdem das NVMe-Laufwerk nun ansprechbar ist, müssen wir dem RPi5 mitteilen, dass es von der NVMe SSD booten soll.
Öffne wieder ein Terminal und bearbeiten das EEPROM mit Befehl
sudo rpi-eeprom-config –edit (vor dem edit sind zwei minus zeichen)
und füge diese zwei Zeilen soweit wie möglich oben ein:
BOOT_ORDER=0xf416

PCIE_PROBE=1

Speichern und wieder reboot

Jetzt kann das Betriebssystem von der SD-Karte mit SD Card Copier auf dem Desktop unter Zubehör auf die SSD kopiert werden. Danach das System herunter fahren und SD-Karte entnehmen.
Nächster Boot erfolgt dann von der neuen SSD und mit Befehl lsblk kann geprüft werden ob auch die korrekte Größe verwendet wird.

Boot_Order Optionen:
Die BOOT_ORDER-Eigenschaft definiert die Reihenfolge für die verschiedenen Startmodi. Er wird von rechts nach links gelesen und es können bis zu 8 Ziffern definiert werden.
In dem oben gesetzten Beispiel „BOOT_ORDER=0xf416“ also 6-1-4-f:
6 = Erster Bootversuch von NVME
1 = Zweiter Bootversuch von SD-Karte
4 = Dritter Bootversuch von USB
f = Schleife – beginn wieder bei ersten Bootversuch

weitere Optionen und Details auf raspberrypi.com

Adapter Variante 2:

Die zweite Lösung ist die Bottom Version von Geekworm X1002 und wird unter dem RPi5 angebracht. Diese Variante kann auch längere SSD bis zu einer Größe von 2280 aufnehmen. Da diese sich per raffiniertem Federstiftkontakt die benötigte 5Volt Spannung bei Pin 2 und 6 von unten abgreift, sind auch alle GPIO-Pins weiterhin nutzbar. Ob das im Dauerbetrieb reibungslos funktioniert, wird sich zeigen.
Eine Befestigungslösung für die Baugrösse 2280 liegt im Beipack, jedoch für kleine SSD´s muss selbst besorgt werden.

Hersteller Wiki: X1002 – Geekworm Wiki

Geschwindigkeit und Zuverlässigkeit:

Die PCI-Schnittstelle des Raspberry Pi 5 hat eine einzelne Lane, die PCIe 2.0 unterstützt. Das bedeutet, dass sie eine maximale Geschwindigkeit von 5 Gbits/s pro Lane erreichen kann. Allerdings wie hier gezeigt kann es auch PCIe 3.0 Geräte erkennen und nutzen, ob jedoch eine stabile doppelte Geschwindigkeit von 10 Gbits/s pro Lane dauerhaft zuverlässig bietet, sollte erstmal nur experimentell getestet werden.
Der Hersteller empfiehlt jedoch nur PCIe 2.0 Geräte mit dem Raspberry Pi 5 zu verwenden, um Kompatibilitätsprobleme zu vermeiden.

Ich habe mal zum vergleichen mit dem Raspberry Pi Diagnostics Tool, 3 Messungen auf dem RPi5 durchgeführt.
Die erste mit der SD-Karte von SanDisk Extreme PLUS:
Raspberry Pi Diagnostics – version 0.13

Sequential write speed 63875 KB/sec (target 10000) – PASS
Random write speed 1161 IOPS (target 500) – PASS
Random read speed 3257 IOPS (target 1500) – PASS
Test PASS

Die zweite und dritte mit der oben beschriebenen Methode (ohne SD-Karte) mit der Samsung SSD auf dem X1002 Adapter. Also boot von SSD und keine SD-Karte vorhanden.
Wenn diese als Generation 2.0 konfiguriert wurde, erhalte ich diese Werte:

Raspberry Pi Diagnostics – version 0.13

Sequential write speed 397187 KB/sec (target 10000) – PASS
Random write speed 87614 IOPS (target 500) – PASS
Random read speed 63750 IOPS (target 1500) – PASS
Test PASS

und hier die Ergebnisse mit Generation 3.0:

Raspberry Pi Diagnostics – version 0.13

Sequential write speed 728177 KB/sec (target 10000) – PASS
Random write speed 132129 IOPS (target 500) – PASS
Random read speed 73801 IOPS (target 1500) – PASS
Test PASS

NVME SSD Kompatibilität:
Es scheint, dass es einige Diskussionen über die Kompatibilität des Raspberry Pi 5 mit bestimmten NVMe-SSDs gibt, die einen Phison-Controller verwenden. Der Adapter Hersteller Geekworm hat in seiner Wiki einige nicht kompatible SSD aufgelistet.
Es könnte somit hilfreich sein, vorab die genaue SSD-Modellnummer und den Phison-Controller-Typ zu kennen, bevor diese erworben werden..

Fazit:
Mit der Samsung SSD gab es keine Probleme und alles lief so wie beschrieben und die Messdaten zeigen das es sich gelohnt hat. Vermissen werde ich den schnelle Betriebssystem Wechsel per SD-Karte, aber dafür habe ich ja noch meinen RPi4 🙂

Bei der KIOXIA BG4 die nach einem Umbau meines MS Surface übrig blieb, klappte auch alles, nur von dieser zu Booten blieb aus. Blieb die SD-Karte stecken, konnte ich auch diese SSD ansprechen. Interessanterweise bootet diese jedoch, wenn sie in einem USB-Adapter verbaut ist.

Somit wird nun mein RPi 5 mit der Samsung SSD Karte, die auf dem Adapter von Geekworm X1002 sitzt, als finale Lösung eingesetzt.

3D-Druck Gehäuse:

Um auch nach dem Umbau den RPi5 in ein Gehäuse zu packen, habe ich das Case Slim RPi5 Case angepasst und vergrößert. Dort gibt es weitere passende Deckel.

Es kann nun zum Nachdrucken hier gefunden werden:
Top-Version: RPi5 Case mit Adapter on Top
Bottom-Version: RPi5 Case mit Bottom Adapter

Youtube-Video: