Das Raspberry Pi M.2 HAT+ ist eine Erweiterungsplatine für den Raspberry Pi 5, um ein NVME Medium an den PCIe Bus anzuschließen.
Die HAT+ Spezifikation
Die HAT+ Spezifikation schreibt detailliert vor, wie ein zur Spezifikation kompatibles HAT ausgelegt sein muss. Dazu gehören u.a. das Verhalten während der verschiedenen Power Modes, die Kompatibilität zum 40-pin GPIO Header und den Inhalt des EEPROM auf dem HAT. Nicht Bestandteil der Spezifikation sind die Dimensionen der Platine, was man am M.2 HAT+ erkennen kann.
Über das EEPROM liest der Bootloader beim Einschalten die notwendigen Informationen über das HAT. um ggf. davon booten zu können und Raspberry Pi OS es später in den Devicetree eingehängt werden kann und ggf. davon booten zu können.
Ich möchte hier nicht im Detail auf die Spezifikation eingehen, daher habe ich sie dir verlinkt.
Raspberry Pi M.2 HAT+
Die Platine des M.2 HAT+ ist L-förmig und soll wie das Geekworm X 1001 eine M.2 NVME aufnehmen. Allerdings ist es im Gegensatz zu diesen nur für Drives mit 2230 Formfaktor ausgelegt. Da der Active Cooler über die GPIO Pins hinausragt, ist unter dem M.2 HAT+ für ihn kein Platz. Gleiches gilt für das Armor Lite V5. Darüber mache ich mir später noch Gedanken.

Lieferumfang

Montage
Die drei Abstandhalter schraube ich von unten auf die Raspberry Pi Platine. Sie dienen in erster Linie der Stabilisierung des HAT.
Das FFC Kabel ist bereits im HAT angebracht und muss nur noch in den PCIe des Raspis gesteckt werden. Da das Kabel nur die absolut notwendige Länge hat, gebe ich dir den Tipp, das HAT an der kurzen Seite mit der Oberseite nach unten zu legen, Das Ende des Kabels in den PCIe zu stecken. Die etwas eigenwillige Form des Kabels gibt vor, dass die nicht isolierte Seite des Kabelendes in Richtung Platine zeigt.Danach wird das HAT um 180° auf den Raspi geklappt und auf die GPIO Leiste gesteckt. Das macht die Prozedur um einiges einfacher. Zum Schluss kannst das HAT noch zur Sicherung in die Abstandhalter schrauben. Darauf verzichte ich allerdings, da das Konstrukt für meine Zwecke auch so fest genug ist.

Jetzt schraube ich das die Corsair MP600 Mini 1TB M.2 NVMe, die ich schon für das Compute Module 5 benutzt habe, in den Sockel. Zuvor habe ich dort die Desktop Version von Raspberry Pi OS (trixie) aufgespielt. Ich möchte die NVME später noch anderswo weiter verwenden, daher nutze ich die Desktopversion.
Test
Ich versorge das Raspi über ein offizielles Raspberry Pi 5 Netzteil mit Strom und die rote Power LED des M.2 HAT+ leuchtet sofort auf. Kurz darauf verrät mir die grüne Aktivität LED, dass das System von der NVME gebootet wird.
Danach konfiguriere ich die PCIe Schnittstelle auf Gen3 um. Dadurch startet der Raspi etwa 4,4s schneller als vorher.

Geschwindigkeit
Ich lasse zunächst sysbench über den Datenträger laufen und erhalte Geschwindigkeiten von 1240,82 MB/sec beim Lesen und 827,05 MB/sec beim Schreiben. Beide Werte sind die höchsten, die ich jemals bei einer NVME am PCIe gemessen habe.Der Vergleich mit dem CM5 I/O Board zeigt, dass dies nicht allein an dem MP600 Drive liegt.
| Lesen (MB/s) | Schreiben (MB/s) | |
|---|---|---|
| Raspberry 5 mit MicroSD | 30,85 | 20,45 |
| Raspberry 4 mit MicroSD | 10,15 | 6,63 |
| Raspberry 4 mit Argon One M.2 SATA | 138,17 | 91,89 |
| Pineberry Pi pcie1_gen=2 | 148,50 | 99,15 |
| Pineberry Pi pciex1_gen=3 | 171,99 | 114,97 |
| Geekworm X1001 pciex1_gen=3 | 229,95 | 153,30 |
| CM5 eMMC | 121,93 | 81,61 |
| CM5 I/O Board NVME | 284,24 | 189,66 |
| M.2 HAT+ (MP600) | 1240,82 | 827,05 |
| M.2 HAT+ (Raspberry Pi NVME) | 382,07 | 254,71 |
Der Langzeittest mit fio kommt auf Peak-Werte von 144.000 IOPS, auch dies ist ein ausgezeichneter Wert. Im geglätteten Langzeitdurchschnitt messe ich relativ konstante 50.000 IOPS

Temperatur
Bei Berührung bemerke ich, dass sich das gesamte Board sehr stark aufheizt. Das guck ich mir mal genauer an.
Ich kühle den Raspi im Kühlschrank auf eine definierte Ausgangstemperatur runter und starte den fio Lauf erneut.
Der SoC wird zwischendurch bis zu 86,7°C heiß (bei einer Last von 2,62. Zur gleichen Zeit bringt es die NVME auf satte 77,8°C. Dadurch steigt die Temperatur der gesamten Platine stark an.

Raspberry Pi NVME
Jetzt interessiert mich, ob die NVME von Raspberry Pi bessere Werte liefert und tausche den Datenträger gegen eine 256GB Raspberry Pi NVME aus.

Nah dem ersten Blick mit lspci scheint diese eine umgelabelte Samsung NVME zu sein.

Der Test mit sysbench ergibt 382,07 MB/sec beim Lesen und 254,71 MB/sec beim Schreiben. Diese Disk ist also deutlich langsamer als die von Corsair. Aber das sind bessere Werte als beim X1001 oder dem Pineberry Pi

Allerdings wird der Datenträger bei Dauerbelastung dadurch nicht automatisch weniger warm. Im Gegenteil. Die Oberfläche des Speicherstreifens kann eine Temperatur von 100°C und darüber annehmen.

Bei diesen Temperaturen besteht Verbrennungsgefahr und man sollte dort besser nicht dran fassen.
Deshalb setze ich einen 2230 Heatsink auf die NVME auf. Auch der SoC bekommt einen Kühlkörper verpasst.
Fazit
Das Raspberry Pi M.2 HAT+ ist einfach zu verbauen und liefert mit dem richtigen Datenträger eine beachtliche I/O Geschwindigkeit. Schade ist nur, dass es so flach auf dem Raspberry Pi 5 sitzt, dass kein Active Cooler drunter passt. Die entstehende Hitze muss irgendwie abgeführt werden. Da der ganze Aufbau flach genug ist, um in ein Gehäuse eingebaut zu werden, werde ich das in einem weiteren Post mal versuchen.