Onlangs Ondersteuning voor Raspberry Pi 5 is toegevoegd voor Home Assistant OS. Het nieuwe model is twee keer zo snel als zijn voorganger en voegt nieuwe features toe, zoals een PCIe-bus. De discussie begonnen over het gebruik van NVMe SSD's die rechtstreeks op de PCIe-bus zijn aangesloten.
M2 PCIe hats
voor Raspberry Pi 5
Er zijn verschillende PCIe-hat's die je kunt kopen, maar er is nog geen officiële Raspberry Pi-hat, maar er is wel een officiële Raspberry 5-behuizing en Active Cooler.
De Raspberry Pi + Active koeler past in de behuizing als je de standaard ventilator verwijdert.
Een optie is om een SSD via USB3 aan te sluiten. Dit werkt prima, maar de prestaties zijn beperkt voor NVMe PCIe SSD's die een hogere doorvoer hebben dan SATA SSD-schijven.
De Raspberry Pi 5 brengt nu een tweede alternatief door het mogelijk te maken een NVMe SSD rechtstreeks op de PCIe-connector aan te sluiten.
Er bestaat een M2-hat die rechtstreeks op de PCIe-poort wordt aangesloten en ook in de originele Raspberry Pi 5-behuizing past, samen met de originele Raspberry Pi actieve koeler.
De Geekworm X1003 wordt bovenop de Raspberry Pi 5 en actieve koeler gemonteerd en maakt het zelfs mogelijk om de bovenklep te installeren (als dat gewenst is).
Installeer een NVMe SSD
De Geekworm X1003 is geschikt voor NMVe SSD's van 2242 (42 mm) en 2230 (30 mm). Er zit een moer op positie 2242, maar het kan zijn dat je een soldeerbout nodig hebt als je de moer naar positie 2230 wilt verplaatsen.
Op dit moment zijn de meeste nVME SSD's 2280, en voor dat formaat heb je een andere hoed nodig, bijvoorbeeld de Geekworm X1001 of X1002, maar die passen niet in de originele behuizing. Ik heb een goedkope gevonden SAMSUNG 2242 SSD bij Amazon. Dit model maakt gebruik van een functie genaamd HMB (Host Memory Buffer), die wat extra aandacht vereist, waar ik later op zal ingaan. Nadat we de SSD hebben gemonteerd (zorg ervoor dat de PCI FFC-kabel correct is geïnstalleerd) kunnen we doorgaan met de volgende stap.
Het voorbereiden van de installatie
Om Home Assistant OS te installeren gebruiken we de imager die standaard op de Raspberry PI OS-image is geïnstalleerd.
Om te beginnen hebben we dus een SD-kaart nodig Raspberry PI-besturingssysteem erop geflashed. Installeer dus niet Home Assistant OS op de SD-kaart.
We kunnen dit voorbereiden met behulp van de Officiële Raspberry PI-imager. Nadat de voorbereide SD-kaart in Raspberry Pi 5 is geïnstalleerd, kunnen we het Raspberry PI OS opstarten. Wanneer het besturingssysteem wordt gestart, zouden we moeten kunnen zien of de NVMe SSD wordt herkend. Om ervoor te zorgen dat de SSD probleemloos werkt, kunnen we de dmesg
commando. Als er problemen zijn met uw SSD, ziet u de fouten in de bootlog die deze opdracht laat zien.
Mogelijke NMVe SSD-problemen identificeren
In mijn geval waren er een paar problemen die ik moest aanpakken. Ik moest …
- … schakel PCIe-energiebeheer uit (dat vond ik tenminste een goed idee).
- .. schakel de in
pcie
-poort op de Raspberry Pi - … inschakelen
gen3
modus - .. verhoog de CMA-buffer om ervoor te zorgen dat er voldoende geheugen beschikbaar is voor de functie Host Memory Buffer
Als je helemaal geen NVMe SSD ziet verschijnen, dan kan dat betekenen dat...
- …uw FFC-kabel tussen bord en M2-hat is niet goed aangesloten.
- … je SDD is niet is ontdekt en en je
PCIE_PROBE
moet toevoegen aan je EEPROM-configuratie.
~# sudo rpi-eeprom-config --edit
# Add the following line if using a non-HAT+ adapter:
PCIE_PROBE=1
Schakel PCIe-energiebeheer uit
We kunnen uitschakelen pcie
energiebeheer. Als we weten dat de SSD altijd aan staat, zien we fouten als:
[22609.179027] nvme 0000:01:00.0: PCIe Bus Error: severity=Corrected, type=Data Link Layer, (Transmitter ID)
[22609.179031] nvme 0000:01:00.0: device [1d79:2263] error status/mask=00009100/0000e000
[22609.179035] nvme 0000:01:00.0: [ 8] Rollover
[22609.179039] nvme 0000:01:00.0: [12] Timeout
Uitschakelen pcie
energiebeheer als root
we moeten bewerken /boot/firmware/cmdline.txt
en voeg toe pcie_aspm=uit
naar de opdrachtregel.
Schakel de PCIe-poort op de Raspberry Pi in
Hoogstwaarschijnlijk is dit altijd nodig. Om de pcie
-poort als root
we moeten de config.txt
met de kernelconfiguratie. Als root kun je het volgende bestand ook rechtstreeks bewerken: /boot/firmware/config.txt
In staat te stellen pcie
voeg de volgende regels toe:
dtparam=pciex1 dtparam=nvme
Als u nog steeds fouten in uw logboek heeft, kunt u dit ook inschakelen gen3
.
Schakel de PCIe gen3-modus in op de Raspberry Pi
De PCIe gen3
modus wordt niet officieel ondersteund, dus schakel deze alleen in als je SSD zonder deze niet goed werkt.
Om in te schakelen als root
we moeten de config.txt
voeg de volgende regel toe:
dtparam=pciex1_gen=3
Verhoog de CMA-buffer
In geval dat dmesg
shows cma_toewijzing
fouten zoals:
[ 0.514198] nvme nvme0: Shutdown timeout set to 8 seconds
[ 0.516601] nvme nvme0: allocated 64 MiB host memory buffer.
[ 0.519481] cma: cma_alloc: linux,cma: alloc failed, req-size: 2 pages, ret: -12
[ 0.519494] cma: cma_alloc: linux,cma: alloc failed, req-size: 8 pages, ret: -12
[ 0.519506] cma: cma_alloc: linux,cma: alloc failed, req-size: 2 pages, ret: -12
[ 0.519513] cma: cma_alloc: linux,cma: alloc failed, req-size: 8 pages, ret: -12
[ 0.519523] cma: cma_alloc: linux,cma: alloc failed, req-size: 2 pages, ret: -12
[ 0.519530] cma: cma_alloc: linux,cma: alloc failed, req-size: 8 pages, ret: -12
[ 0.519539] cma: cma_alloc: linux,cma: alloc failed, req-size: 2 pages, ret: -12
[ 0.519546] cma: cma_alloc: linux,cma: alloc failed, req-size: 8 pages, ret: -12
[ 0.519735] nvme nvme0: 4/0/0 default/read/poll queues
[ 0.525784] nvme nvme0: Ignoring bogus Namespace Identifiers
[ 0.531980] nvme0n1: p1 p2 p3 p4 p5 p6 p7 p8
[ 0.519735] nvme nvme0: 4/0/0 default/read/poll queues
[ 0.525784] nvme nvme0: Ignoring bogus Namespace Identifiers
[ 0.531980] nvme0n1: p1 p2 p3 p4 p5 p6 p7 p8
[ 0.619473] brcm-pcie 1000120000.pcie: link up, 5.0 GT/s PCIe x4 (!SSC)
[ 0.619497] pci 0001:01:00.0: [1de4:0001] type 00 class 0x020000
[ 0.619514] pci 0001:01:00.0: reg 0x10: [mem 0xffffc000-0xffffffff]
[ 0.619524] pci 0001:01:00.0: reg 0x14: [mem 0xffc00000-0xffffffff]
[ 0.619533] pci 0001:01:00.0: reg 0x18: [mem 0xffff0000-0xffffffff]
[ 0.619605] pci 0001:01:00.0: supports D1
[ 0.619609] pci 0001:01:00.0: PME# supported from D0 D1 D3hot D3cold
[ 0.631479] pci_bus 0001:01: busn_res: [bus 01-ff] end is updated to 01
Ik had deze fouten vanwege de HMB-functie (Host Memory Buffer), die meer nodig had dan de standaardconfiguratie cma
geheugen.
Om de cma
geheugenbuffer Ik heb de standaardtoewijzing van 64 MB verhoogd naar 96 MB.
Als root
we kunnen de config.txt
voeg de volgende regel toe:
dtoverlay=cma,cma-96
Het is mogelijk om een groter blok in te schakelen, maar we moeten niet meer toewijzen dan nodig is. Om het gratis te zien cma
geheugen als root kunnen we gebruiken:
# cat /proc/meminfo | grep -i cma
CmaTotal: 98304 kB
CmaFree: 15684 kB
Home Assistant OS voorbereiden op de NVMe SSD
Wanneer we onze SSD hebben geconfigureerd en eventuele problemen hebben opgelost, kunnen we de NVMe flashen met Home Assistant OS. Wij gebruiken de vooraf geïnstalleerde Raspberry Pi image
die standaard op Raspberry Pi OS wordt geïnstalleerd en te vinden is in het accessoiresmenu. Let op: u kunt een aantal opties instellen waarmee u vooraf WiFi en de hostnaam kunt instellen. Andere instellingen moeten we handmatig instellen nadat het image is geflasht. Zorg ervoor dat de NVMe SDD correct is geflasht.
Aanpassen van de opstartvolgorde, kernelparameters en configuratie
Na het flashen van Home Assistant OS moeten we de opstartvolgorde aanpassen en ervoor zorgen dat Home Assistant OS hetzelfde gebruikt config.txt
and cmdline.txt
terwijl we ons voorbereidden op Raspberry PI OS. Er zijn bestanden in de afbeelding die we moeten aanpassen voordat we kunnen opstarten vanaf de nieuwe afbeelding, omdat het voorlopig nog niet mogelijk is om deze instellingen vanuit de gebruikersinterface toe te passen. Om toegang te krijgen tot deze bestanden moeten we de juiste partitie aankoppelen. In mijn geval werd de NVMe gebeld nvme0n1
. Als u niet zeker weet wat de naam van uw schijf als root is, kunt u de opdracht gebruiken fdisk -l
~# fdisk -l
...
other drive info
...
Disk /dev/nvme0n1: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Disk model: SAMSUNG MZAL4256HBJD-00BL2
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: DFEFDCBD-D15E-4E82-B88C-5E6B46166328
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 133119 131072 64M EFI System
/dev/nvme0n1p2 133120 182271 49152 24M Linux filesystem
/dev/nvme0n1p3 182272 706559 524288 256M Linux filesystem
/dev/nvme0n1p4 706560 755711 49152 24M Linux filesystem
/dev/nvme0n1p5 755712 1279999 524288 256M Linux filesystem
/dev/nvme0n1p6 1280000 1296383 16384 8M Linux filesystem
/dev/nvme0n1p7 1296384 1492991 196608 96M Linux filesystem
/dev/nvme0n1p8 1492992 500118158 498625167 237.8G Linux filesystem
Om toegang te krijgen config.txt
and cmdline.txt
mounten we de eerste partitie:
~# mkdir boot
~# mount -t vfat /dev/nvme0n1p1 ~/boot
~# cd boot
~# ls
Gebruik dezelfde instellingen die goed waren voor Raspberry PI OS, en het zou goed moeten komen.
Ten slotte veranderen we de opstartvolgorde zodat de Raspberry Pi opstart vanaf de SSD. De onderstaande code laat zien hoe je dat doet:
# Edit the EEPROM on the Raspberry Pi 5.
sudo rpi-eeprom-config --edit
# Change the BOOT_ORDER line to:
BOOT_ORDER=0xf461
# This will try SD card first, then NVMe and finally USB
# Add the following line if using a non-HAT+ adapter:
PCIE_PROBE=1
# Press Ctrl-O, then enter, to write the change to the file.
# Press Ctrl-X to exit nano (the editor).
Voor mij was het niet nodig om toe te voegen PCIE_PROBE
. De volgorde wordt van rechts naar links gelezen. Dus 0xf416
zal eerst 6=NVMe proberen, dan 1=sd-kaart, dan 4=USB en ten slotte f=de lus opnieuw starten. Zoals je in het voorbeeld kunt zien, heb ik gebruikt 0xf461
als opstartvolgorde, omdat ik er de voorkeur aan geef gemakkelijk op te starten vanaf de SD-kaart, zonder de noodzaak om de NMVe SSD te verwijderen, als dat nodig is voor reddingsacties.
Meer documentatie over de opstartvolgorde-opties vindt u hier: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER.
Boot Home Assistant vanaf NVMe SSD
Wanneer de opstartvolgorde de NMVe als eerste geldige opstartoptie bevat, kunnen we proberen de geflashte NMVe SSD op te starten.
De Home Assistant-instantie moet initialiseren op http://homeassistant.local:8123. Het initialiseren kan enkele minuten duren. Als u over een geschikte HDMI-kabel en een toetsenbord en muis beschikt, kunt u toegang krijgen tot de Home Assistant CLI.
Om te zien of er fouten zijn, kunt u deze uitvoeren dmesg
om het opstartlogboek te zien. Om te weten of er PCIe-runtimefouten zijn die u kunt gebruiken ha host logs -f
. Wanneer u de CLI vanaf de console gebruikt, kunt u deze weglaten ha
, Dus host logs-f
of de host logs
zou gewoon moeten werken. Als u SSH instelt bij het flashen van de afbeelding, zou u SSH ook moeten kunnen gebruiken om de CLI te openen.
Als alles in orde is, kunt u beginnen met het instellen van Home Assistant of het herstellen vanaf een back-up, maar zorg ervoor dat wanneer u herstelt vanaf een back-up dezelfde supervisorversie wordt gebruikt, anders mislukt het terugzetten van de back-up. Om vanuit de CLI naar een specifieke versie te updaten, gebruikt u:
ha supervisor update --version 2024.03.0
Om gewoon te updaten naar de nieuwste versie:
ha supervisor update
Het herstellen vanaf een back-up kan enige tijd duren als het back-upbestand groot is. De gebruikersinterface toont niet veel details over de voortgang. Voor meer details kunt u de supervisorlogboeken raadplegen. Als er iets mis is gegaan, kun je dat zien.
ha supervisor logs
En dat is alles: geniet van uw Home Assistant-installatie op Raspberry Pi 5 en NVMe SSD!