User Tools

Site Tools


sbcs:raspberry_pi:nvme_ssd_s_nutzen_pi_5

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
sbcs:raspberry_pi:nvme_ssd_s_nutzen_pi_5 [2024/01/24 19:01] – removed - external edit (Unknown date) 127.0.0.1sbcs:raspberry_pi:nvme_ssd_s_nutzen_pi_5 [2024/01/24 19:01] (current) – ↷ Links adapted because of a move operation dominik
Line 1: Line 1:
 +===== NVMe SSD's nutzen (Pi 5) =====
 +> **<color #ed1c24>Wichtig</color>** \\ Die folgende Anleitung bezieht sich nur auf den **Raspberry Pi 5**! 
 +
 +===== YouTube Video #79 =====
 +{{youtube>P37eGxbIf6M?half}}
 +
 +\\ 
 +
 +===== Erklärungen =====
 +==== PCIe ====
 +PCI Express (PCIe) ist ein serielles Hochgeschwindigkeitsübertragungsprotokoll für die Datenübertragung zwischen Hauptplatinen und Peripheriegeräten. Es verwendet differenzielle Signalpaare und Punkt-zu-Punkt-Verbindungen, wodurch höhere Datenraten im Vergleich zu älteren parallelen Busstandards wie PCI ermöglicht werden. PCIe bietet mehrere Lanes (Datenspurgruppen), wodurch die Bandbreite je nach Anforderungen skaliert werden kann. Diese Lanes können in verschiedenen Konfigurationen wie x1, x4, x8 und x16 vorliegen. Durch seine Flexibilität und hohe Leistungsfähigkeit wird PCIe weitläufig für Grafikkarten, SSDs, Netzwerkkarten und andere Hochleistungsperipheriegeräte eingesetzt.
 +==== NVMe ====
 +> **Hinweis** \\ NVMe ist nicht SSD mSATA !
 +NVMe (Non-Volatile Memory Express) ist ein Protokoll, das speziell für den Zugriff auf NAND-basierten Flash-Speicher optimiert ist, wie er in modernen Solid-State-Drives (SSDs) verwendet wird. NVMe ermöglicht eine effiziente und parallele Datenübertragung zwischen dem Host (CPU) und der SSD über den PCIe-Bus. Im Gegensatz zu älteren Protokollen wie AHCI reduziert NVMe Latenzen und maximiert die Bandbreite, was zu deutlich schnelleren Lese- und Schreibgeschwindigkeiten führt. NVMe-SSDs werden zunehmend in Hochleistungsrechnern und Datenspeicherlösungen eingesetzt, um die Leistungsfähigkeit von Flash-Speicher optimal zu nutzen.
 +==== M.2 (NGFF) ====
 +M.2 (= NGFF = Next Generation Form Factor) ist ein Formfaktor und Schnittstellenstandard für kompakte, kleine Erweiterungskarten, die in M.2-Steckplätzen auf Hauptplatinen eingesteckt werden. M.2-Steckplätze unterstützen verschiedene Schnittstellen, darunter SATA und PCIe, wodurch sie vielseitig für den Anschluss von SSDs, WLAN-Karten und anderen Erweiterungen sind. Der M.2-Formfaktor ermöglicht es, Platz zu sparen und die Verbindung von Hochleistungsgeräten wie NVMe-SSDs direkt über den PCIe-Bus für schnelle Datenübertragungen zu unterstützen.
 +==== M Key ====
 +"M Key" ist eine Bezeichnung für einen der physischen Schlüssel (Keying) in M.2-Steckplätzen. Der M.2-Steckplatz selbst kann verschiedene Schlüssel oder Buchsen haben, um die Kompatibilität mit unterschiedlichen Arten von M.2-Modulen sicherzustellen.
 +In einem M.2-Steckplatz mit einem M Key ist der Schlitz so gestaltet, dass er speziell für M.2-Module mit einem M Key passt. M-Key-Module können verschiedene Arten von Schnittstellen verwenden, einschließlich PCIe (PCI Express) und SATA, und werden häufig für Hochleistungsgeräte wie NVMe-SSDs verwendet.
 +
 +  * https://www.delock.de/infothek/M.2/M.2.html
 +  * https://de.wikipedia.org/wiki/M.2
 +  * https://www.atpinc.com/blog/what-is-m.2-M-B-BM-key-socket-3
 +
 +===== Hinweise =====
 +  * Bevor eine NVMe oder der Adapter dazu installiert wird, immer den Pi stromlos machen!
 +  * Die WD Green SSDs sind laut Pimoroni nicht zu empfehlen. Laufwerke wie das SN350 führen wohl öfters zu Problemen am CM4 und Pi 5.
 +  * Es empfiehlt sich erstmal von SD zu booten, um den [[sbcs:raspberry_pi:nvme_ssd_s_nutzen_pi_5#bootloader_update|Bootloader]] & [[sbcs:raspberry_pi:nvme_ssd_s_nutzen_pi_5#bootloader_konfig|Bootloader Einstellungen]] anzupassen! 
 +
 +===== Hardware =====
 +Für den Betrieb am Pi wird ein NVMe Adapter benötigt, der an den PCIe Port angeschlossen wird. 
 +Der USB auf NVMe Adapter dient vornehmlich zum Bespielen einer NVMe unter Windows. Er funktioniert aber auch mit einem Raspberry Pi - allerdings mit Geschwindigkeitseinbußen. Und er wird behandelt wie ein USB-Stick.
 +
 +==== NVMe Base ====
 +{{:sbcs:raspberry_pi:pasted:20240116-173453.png}}
 +
 +  * https://shop.pimoroni.com/products/nvme-base?variant=41219587178579
 +  * Unterstützt alle gängigen Formate von 2230 bis 2280 
 +==== HatDrive! ====
 +{{:sbcs:raspberry_pi:pasted:20240116-173759.png}}
 +  * https://pineberrypi.com/products/hat-top-2230-2240-for-rpi5
 +  * https://pineberrypi.com/products/hatdrive-bottom-2230-2242-2280-for-rpi5
 +  * Zwei Versionen verfügbar
 +
 +==== Typ X 1001 ====
 +**TBD**
 +==== USB auf NVMe Adapter ====
 +{{:sbcs:raspberry_pi:pasted:20240116-173218.png}}
 +
 +Solche Adapter gibt es bei eBay / Amazon für 10-15€. Zu finden unter der Bezeichnung **USB NVMe Adapter**.
 +===== Bootloader Update =====
 +> **Achtung** \\ Ohne aktuelle Firmware (Bootloader) wird die NVMe erst gar nicht erkannt!
 +> **Hinweis** \\ Der Bootloader wird auf dem Board selber geflasht. Also selbst bei einem Wechsel von SD / USB / NVMe bleibt er in seiner Version erhalten!
 +
 +  * ''sudo apt update -y && sudo apt upgrade -y && sudo apt install fio gparted piclone -y''
 +  * Version prüfen \\ ''sudo rpi-eeprom-update'' \\ <code bash>
 +pi@Pi5Test:~ $ sudo rpi-eeprom-update
 +*** UPDATE AVAILABLE ***
 +BOOTLOADER: update available
 +   CURRENT: Wed 13 Sep 10:37:06 UTC 2023 (1694601426)
 +    LATEST: Wed  6 Dec 18:29:25 UTC 2023 (1701887365)
 +   RELEASE: default (/lib/firmware/raspberrypi/bootloader-2712/default)
 +            Use raspi-config to change the release.
 +</code>
 +  * Update durchführen auf eine Version > 06.12.2023 \\ ''sudo rpi-eeprom-update -a'' \\ ''sudo reboot''
 +
 +**Alternativ** kann die Firmware auch über ''sudo raspi-config'' auf den aktuellen Stand gebracht werden: 
 +  * ''sudo raspi-config''
 +    * 6 Advanced Options
 +    * A5 Bootloader Version
 +    * E1 Latest  Use the latest version boot ROM software
 +    * Die Frage mit YES beantworten 
 +    * Und den Reboot durchführen lassen 
 +
 +===== Bootloader Konfig =====
 +> **Hinweise** \\ 1) Die Bootreihenfolge kann generell wie hier beschrieben eingestellt werden. Kann von NVMe nicht gebootet werden fällt der Pi auf SD-Karte oder USB-Stick zurück. \\ 2) Die Bootreihenfolge lässt sich auch mit ''sudo raspi-config'' (6 Advanced Options -> A4 Boot Order) anpassen. Allerdings wird dabei nicht der Eintrag ''PCIE_PROBE=1'' ergänzt was bei bestimmten NVMe SSD's zu Bootproblemen führen kann. \\ 3) Die Bootloader Konfig kann man sich auch mit ''sudo rpi-eeprom-config'' nur anzeigen lassen. 
 +
 +Um von NVMe booten zu können, müssen die Bootloader Parameter angepasst werden:
 +  * ''sudo rpi-eeprom-config %%--%%edit''
 +    * ''BOOT_ORDER'' muss auf 0xf416 geändert werden: \\ ''BOOT_ORDER=0xf416''
 +    * Folgender Eintrag muss ggf. hinzugefügt werden: \\ ''PCIE_PROBE=1''
 +  * Mit ''STRG+x'' dann ''Y'' und ''Enter'' das Editieren beenden
 +  * Es kommt dann folgende Ausgabe \\ <code>
 +Updating bootloader EEPROM
 +....
 +   CURRENT: Fri  5 Jan 15:57:40 UTC 2024 (1704470260)
 +    UPDATE: Fri  5 Jan 15:57:40 UTC 2024 (1704470260)
 +    BOOTFS: /boot/firmware
 +'/tmp/tmp.adUegKWjEM' -> '/boot/firmware/pieeprom.upd'
 +Copying recovery.bin to /boot/firmware for EEPROM update
 +
 +EEPROM updates pending. Please reboot to apply the update.
 +To cancel a pending update run "sudo rpi-eeprom-update -r".</code>
 +  * Neustart mittels \\ ''sudo reboot''
 +  * Sollten diese Settings flasch sein, kommt folgende Fehlermeldung beim Booten: \\ {{:sbcs:raspberry_pi:pasted:20240116-124529.png}} \\ In dem Fall muss man den Pi von SD-Karte bzw. USB-Stick booten und die Settings erneut kontrollieren! 
 +
 +
 +
 +===== Grundlegende Tests =====
 +
 +==== PCIe aktivieren ====
 +> **Hinweis** \\ Die NVMe wurde trotz fehlendem Eintrag erkannt mit der letzten Firmware. 
 +
 +  * ''sudo nano /boot/firmware/config.txt''
 +    * folgenden Eintrag in der Datei ergänzen \\ ''dtparam=pciex1''
 +    * Den Editor mit ''STRG+X'', dann ''Y'' und ''Enter'' verlassen 
 +  * ''sudo reboot''
 +
 +
 +==== PCIe checken ====
 +  * Prüfen kann man den aktivierten PCIe Port mittels ''dmesg'' \\ <code bash>
 +pi@Pi5Test:~ $ pi@Pi5Test:~ $ dmesg |grep brcm-pcie |grep 'PCI host bridge'
 +[    0.410070] brcm-pcie 1000110000.pcie: PCI host bridge to bus 0000:00
 +[    0.530924] brcm-pcie 1000120000.pcie: PCI host bridge to bus 0001:00
 +</code>
 +    * hier werden 2 Host Bridges gelistet. Ist der Port deaktiviert, liefert dmesg nur eine Bridge. 
 +
 +  * Eine weitere Möglichkeit besteht mit ''lspci'' \\ <code bash>
 +pi@Pi5Test:~ $ lspci
 +0000:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries Device 2712 (rev 21)
 +0000:01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller 980
 +0001:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries Device 2712 (rev 21)
 +0001:01:00.0 Ethernet controller: Device 1de4:0001
 +</code>
 +    * Auch hier werden 2 bridges gelistet wenn PCIe aktiviert ist. 
 +==== PCIe V3 Mode aktivieren ====
 +Offiziell unterstützt der Raspberry Pi 5 nur PCIe 2 - der Bus würde als mit 5GB/s arbeiten. Es ist allerdings möglich den PCIe Bus auf die Version 3 einzustellen. In dem Fall arbeitet der Bus mit 10GB/s. 
 +
 +  * ''sudo nano /boot/firmware/config.txt''
 +    * folgenden Eintrag in der Datei ergänzen \\ ''dtparam=pciex1_gen=3''
 +    * Den Editor mit ''STRG+X'', dann ''Y'' und ''Enter'' verlassen 
 +  * ''sudo reboot''
 +
 +==== PCIe V3 checken ====
 +  * Prüfen kann man den V3 Mode wieder mit dmesg \\ ''dmesg |grep brcm-pcie |grep link''
 +  * Wenn PICe V3 aktiviert ist, läuft ein PCIe Port mit 8.0 GT/s
 +    * PCIe V3 aktiviert \\ <code bash>
 +pi@Pi5Test:~ $ dmesg |grep brcm-pcie |grep link
 +[    0.613326] brcm-pcie 1000110000.pcie: link up, 8.0 GT/s PCIe x1 (!SSC)
 +[    0.733329] brcm-pcie 1000120000.pcie: link up, 5.0 GT/s PCIe x4 (!SSC)
 +</code>
 +    * PCIe V2 aktiviert \\ <code bash>
 +pi@Pi5Test:~ $ dmesg |grep brcm-pcie |grep link
 +[    0.517003] brcm-pcie 1000110000.pcie: link up, 5.0 GT/s PCIe x1 (!SSC)
 +[    0.637007] brcm-pcie 1000120000.pcie: link up, 5.0 GT/s PCIe x4 (!SSC)
 +</code>
 +
 +> **Was ist GT/s?** \\ Dazu gibt es hier ein paar Erklärungen : \\ https://de.wikipedia.org/wiki/Transfers_pro_Sekunde \\ https://3roam.com/pcie-bandwidth-calculator/ \\ https://forum.huawei.com/enterprise/en/pcie-transfer-rate-and-available-bandwidth/thread/667265205186478081-667213852955258880
 +
 +==== NVMe prüfen ====
 +  * ''dmesg |grep nvme'' \\ <code bash>
 +pi@Pi5Test:~ $ dmesg |grep nvme
 +[    0.633625] nvme nvme0: pci function 0000:01:00.0
 +[    0.633663] nvme 0000:01:00.0: enabling device (0000 -> 0002)
 +[    0.637575] nvme nvme0: Shutdown timeout set to 8 seconds
 +[    0.646457] nvme nvme0: allocated 64 MiB host memory buffer.
 +[    1.150493] nvme nvme0: 4/0/0 default/read/poll queues
 +[    1.581354]  nvme0n1: p1
 +[    4.906692] EXT4-fs (nvme0n1p1): mounted filesystem with ordered data mode. Quota mode: none.
 +</code>
 +  * ''lsblk'' \\ <code bash>
 +pi@Pi5Test:~ $ lsblk
 +NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
 +sdb           8:16    28.6G  0 disk
 +├─sdb1        8:17     512M  0 part /boot/firmware
 +└─sdb2        8:18    28.1G  0 part /
 +nvme0n1     259:   0 238.5G  0 disk
 +└─nvme0n1p1 259:1    0 238.5G  0 part /nvme
 +</code>
 +  * ''lspci -v''
 +    * -> Beispiel : ''0000:01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller 980 (prog-if 02 [NVM Express])''
 +  * grafische Tools
 +    * ''export XAUTHORITY=~/.Xauthority''
 +    * ''sudo gnome-disks''
 +    * ''sudo gparted''
 +
 +
 +
 +===== Verwendung =====
 +Es gibt durchaus verschiedene Szenarien zur Einrichtung und Verwendung einer NVMe SSD. 
 +
 +  * **Booten von einer NVMe SSD erstellt mit Raspberry Pi Imager**
 +    * Es ist ein [[sbcs:raspberry_pi:nvme_ssd_s_nutzen_pi_5#usb_auf_nvme_adapter|USB auf NVMe Adapter]] nötig!
 +    * [[sbcs:raspberry_pi:nvme_ssd_s_nutzen_pi_5#bootloader_update|Bootloader Update]]
 +    * [[sbcs:raspberry_pi:nvme_ssd_s_nutzen_pi_5#bootloader_konfig|Bootloader Konfiguration]] (erfordert Booten von SD-Karte oder USB-Stick)
 +    * [[sbcs:raspberry_pi:nvme_ssd_s_nutzen_pi_5#boot_raspberry_pi_imager|Raspberry Pi Image auf NVMe SSD spielen]] (mittels Raspberry Pi Imager)
 +    * Anpassen der config.txt
 +      * Die Anpassung erfolgt unter Windows mit einem Editor (z.B. Notepad)
 +      * Evtl. muss der USB Adapter 1x neu in den USB Port gesteckt werden weil der Pi Imager das Medium auswirft. 
 +      * Dann auf der Partition mit dem Namen "bootfs" die Datei ''config.txt'' editieren. Folgenden Inhalt einfügen: \\ ''dtparam=pciex1'' \\ ''dtparam=pciex1_gen=3''
 +    * Die NVMe über einen passenden Adapter am Pi einstecken, SD-Karte bzw. USB-Stick entfernen und den Pi booten.
 +  * **Booten von einer NVMe SSD geklont mittels piclone**
 +    * [[sbcs:raspberry_pi:nvme_ssd_s_nutzen_pi_5#bootloader_update|Bootloader Update]]
 +    * [[sbcs:raspberry_pi:nvme_ssd_s_nutzen_pi_5#bootloader_konfig|Bootloader Konfiguration]] (erfordert Booten von SD-Karte oder USB-Stick)
 +    * Anpassen der config.txt
 +      * Die Anpassung erfolgt unter Linux mit einem Editor (z.B. nano)
 +      * ''sudo nano /boot/config.txt'' und folgenden Inhalt einfügen: \\ ''dtparam=pciex1'' \\ ''dtparam=pciex1_gen=3''
 +      * Speichern mittels ''STRG+x'' dann ''Y'' und dann ''Enter''
 +    * [[sbcs:raspberry_pi:nvme_ssd_s_nutzen_pi_5#boot_piclone|Raspberry Pi Image auf NVMe SSD klonen]] (mittels der Pi Software ''piclone'')
 +  * **NVMe SSD als zuätzliche Platte verwenden**
 +    * [[sbcs:raspberry_pi:nvme_ssd_s_nutzen_pi_5#update_firmware|Update Firmware]]
 +    * Anpassen der config.txt
 +    * [[sbcs:raspberry_pi:nvme_ssd_s_nutzen_pi_5#ssd_mount|SSD Mount]]
 +
 +
 +
 +==== Boot (Raspberry Pi Imager) ====
 +  * Die NVMe in einen passenden [[sbcs:raspberry_pi:nvme_ssd_s_nutzen_pi_5#usb_auf_nvme_adapter|USB auf NVMe Adapter]] installieren.
 +  * Das "Konstrukt" in den Windows PC stecken und den Raspberry Pi Imager starten (ggf. Update machen!)
 +  * Als **Raspberry Pi Modell** den **RASPBERRY PI 5** wählen
 +  * Als **Betriebssystem** eine **64Bit Bookworm** Variante wählen (Sonst gibt es u.A. Probleme mit dem Bootloader Update)
 +  * Als **SD-Karte** sollte der USB auf NVMe mit der NVMe SSD angeboten werden
 +  * Schreiben lassen und fertig
 +  * Die NVMe "am" Pi installieren, Strom drauf und er sollte von der NVMe booten :-)
 +==== Boot (piclone) ====
 +  * Zunächst mal muss der Pi von einer SD-Karte oder einem USB-Stick booten (64Bit BookWorm Image)
 +  * Mit ''lsblk'' prüfen, ob die NVMe auch erkannt wurde (nvme0..): <code bash>
 +pi@Pi5Test:~ $ lsblk
 +NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
 +sda           8:   1  28.6G  0 disk
 +├─sda1        8:1    1   512M  0 part /boot/firmware
 +└─sda2        8:2    1  28.1G  0 part /
 +nvme0n1     259:   0 238.5G  0 disk
 +├─nvme0n1p1 259:1    0   512M  0 part
 +└─nvme0n1p2 259:2    0   238G  0 part</code>
 +  * Im Terminal ''piclone'' starten: \\ {{:sbcs:raspberry_pi:pasted:20240116-172139.png}}
 +  * Oben das aktuelle Bootmedium auswählen (in dem Fall ein USB-Stick) und unten die NVMe als Ziel: \\ {{:sbcs:raspberry_pi:pasted:20240116-172227.png}}
 +  * ''New Partition UUIDs'' kann man im Normalfall anhaken
 +  * Dann auf **Start** klicken, die Sicherheitsfrage mit ''Yes'' beantworten und warten. Wenn alles geklappt hat, kommt das \\ {{:sbcs:raspberry_pi:pasted:20240116-172912.png}}
 +  * piclone schließen
 +  * Das System herunter fahren mittels ''sudo poweroff''
 +  * Das System stromlos machen, den USB-Stick (oder die SD-Karte) entfernen 
 +  * Strom wieder dran und der Pi sollte von der NVMe booten :-)
 +==== SSD Mount ====
 +  * UUID ermitteln \\ ''sudo blkid'' \\ <code bash>
 +pi@Pi5Test:~ $ sudo blkid
 +/dev/nvme0n1p1: UUID="077d58d3-7ea8-4eba-88f6-49472da6ba98" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="a8380a80-01"
 +/dev/sda2: LABEL="rootfs" UUID="4aa56689-dcb4-4759-90e6-179beae559ac" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="6b2f5983-02"
 +/dev/sda1: LABEL_FATBOOT="bootfs" LABEL="bootfs" UUID="EF6E-C078" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="6b2f5983-01"
 +</code> Hier ist es dann aus der nvme Zeile das **a8380a80-01**
 +  * Einen Ordner erstellen in den die NVMe gemountet werden kann \\ ''sudo mkdir /nvme''
 +  * Die Zugriffsrechte auf den aktuellen User (hier pi) umbiegen \\ ''sudo chown pi:pi /nvme''
 +  * Die fstab Datei anpassen um das Dateisystem automatisch einzubinden \\ ''sudo nano /etc/fstab'' \\ eine Zeile einfügen mit der korrekten PARTUUID und dem richtigen Ordner \\ ''PARTUUID=a8380a80-01    /nvme   auto    rw,relatime,nofail      0       0''
 +    * Datei speichern mit ''STRG+x'' dann ''Y'' dann ''Enter''
 +  * ''sudo reboot''
 +  * Sollte die SSD nicht eingebunden werden unter ''/nvme'' kann man das folgendermaßen analysieren \\ ''sudo mount -a''
 +
 +===== Speedtest =====
 +
 +==== fio ====
 +  * ''sudo apt update -y && sudo apt upgrade -y && sudo apt install fio gparted -y''
 +  * Eine Datei anlegen \\ ''cd ~ && nano chkspeed.sh'' \\ und folgenden Inhalt reinkopieren: \\ <code bash>
 +#!/bin/bash
 +echo "Testing Sequential READ"
 +rm -rf $1/random_read.fio
 +fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=$1/random_read.fio --bs=64k --iodepth=64 --size=$2 --readwrite=read |grep READ
 +echo "Testing Random     READ"
 +rm -rf $1/random_read.fio
 +fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=$1/random_read.fio --bs=64k --iodepth=64 --size=$2 --readwrite=randread |grep READ
 +echo "Testing Sequential WRITE"
 +rm -rf $1/random_read.fio
 +fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=$1/random_read.fio --bs=64k --iodepth=64 --size=$2 --readwrite=write |grep WRITE
 +echo "Testing Random     WRITE"
 +rm -rf $1/random_read.fio
 +fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=$1/random_read.fio --bs=64k --iodepth=64 --size=$2 --readwrite=randwrite |grep WRITE
 +rm -rf $1/random_read.fio
 +</code>
 +  * Die Datei ausführbar machen \\ ''chmod +x chkspeed.sh''
 +  * Das zu testende Speichermedium sollte am Pi angeklemmt sein und als Dateisystem ext4 haben. Testen kann man das mit ''lsblk -f'' : \\ <code bash>
 +pi@Pi5Test:~ $ lsblk -f
 +NAME        FSTYPE FSVER LABEL  UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
 +nvme0n1
 +├─nvme0n1p1 vfat   FAT32 bootfs EF6E-C078                             438.1M    14% /boot/firmware
 +└─nvme0n1p2 ext4   1.0   rootfs 4aa56689-dcb4-4759-90e6-179beae559ac  209.5G     5% /
 +</code>
 +  * Hinweis: Normalerweise sollte man ein Laufwerk nicht testen, wenn es als Bootmedium verwendet wird. Aber für einen einfachen Test auf einem unbelasteten Pi 5 sollte es trotzdem klappen :-) 
 +  * Test starten mit ''sudo ~/chkspeed.sh ~ 1GB'' \\ <code>
 +pi@Pi5Test:~ $ sudo ~/chkspeed.sh ~ 1GB
 +Testing Sequential READ
 +   READ: bw=785MiB/s (823MB/s), 785MiB/s-785MiB/s (823MB/s-823MB/s), io=1024MiB (1074MB), run=1305-1305msec
 +Testing Random     READ
 +   READ: bw=799MiB/s (838MB/s), 799MiB/s-799MiB/s (838MB/s-838MB/s), io=1024MiB (1074MB), run=1281-1281msec
 +Testing Sequential WRITE
 +  WRITE: bw=671MiB/s (704MB/s), 671MiB/s-671MiB/s (704MB/s-704MB/s), io=1024MiB (1074MB), run=1526-1526msec
 +Testing Random     WRITE
 +  WRITE: bw=698MiB/s (731MB/s), 698MiB/s-698MiB/s (731MB/s-731MB/s), io=1024MiB (1074MB), run=1468-1468msec
 +</code>
 +  * USB-Sticks und SD-Karten werden normalerweise direkt als Laufwerke eingehängt: \\ <code bash>
 +pi@Pi5Test:~ $ lsblk -f
 +NAME        FSTYPE FSVER LABEL  UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
 +sda
 +├─sda1      vfat   FAT32 bootfs EF6E-C078                             437.6M    14% /media/pi/bootfs
 +└─sda2      ext4   1.0   rootfs 4aa56689-dcb4-4759-90e6-179beae559ac   14.9G    42% /media/pi/rootfs
 +mmcblk0
 +├─mmcblk0p1 vfat   FAT32 bootfs EF6E-C078                             435.5M    15% /media/pi/bootfs1
 +└─mmcblk0p2 ext4   1.0   rootfs 4aa56689-dcb4-4759-90e6-179beae559ac   50.2G     8% /media/pi/rootfs1
 +nvme0n1
 +├─nvme0n1p1 vfat   FAT32 bootfs EF6E-C078                             438.1M    14% /boot/firmware
 +└─nvme0n1p2 ext4   1.0   rootfs 4aa56689-dcb4-4759-90e6-179beae559ac  209.5G     5% /
 +</code>
 +    * Hier ein Beispiel mit USB-Stick (sda), SD-Karte (mmcblk0) und NVMe (nvme0n1). 
 +  * Sollte ein Laufwerk nicht gemountet werden, muss es wie folgt gemountet werden (dies ist nur ein Beispiel!): 
 +    * ''sudo mkdir /mountdir''
 +    * ''sudo mount /dev/nvme0n1p1 /mountdir/''
 +    * Anschließend kann das Medium mittels ''sudo ~/chkspeed.sh /mountdir 1GB'' getestet werden
 +    * Unmount mittels ''sudo umount /dev/nvme0n1p1''
 +
 +
 +==== LibreOffice ====
 +  * Das ist eine 500MB Installation ...
 +  * ''sudo apt install libreoffice''
 +  * ''libreoffice''
 +
 +===== SMART Test =====
 +  * ''sudo apt install smartmontools nvme-cli -y''
 +
 +==== nvme ====
 +  * Übersicht anzeigen \\ ''sudo smartctl -a /dev/nvme0'' 
 +  * Error Log ansehen \\ ''sudo smartctl -l error /dev/nvme0'' \\ <code bash>
 +pi@Pi5Test:~ $ sudo smartctl -l error /dev/nvme0
 +smartctl 7.3 2022-02-28 r5338 [aarch64-linux-6.1.0-rpi7-rpi-2712] (local build)
 +Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org
 +
 +=== START OF SMART DATA SECTION ===
 +Error Information (NVMe Log 0x01, 16 of 16 entries)
 +Num   ErrCount  SQId   CmdId  Status  PELoc          LBA  NSID    VS
 +  0       1358      0x1002  0x4213  0x028            0         -
 +  1       1357      0x1000  0x4213  0x028            0         -
 +  2       1356      0x3007  0x4005  0x028            0         -
 +</code>
 +  * Gesamtstatus ansehen \\ ''sudo  smartctl -H /dev/nvme0'' \\ <code bash>
 +pi@Pi5Test:~ $ sudo  smartctl -H /dev/nvme0
 +smartctl 7.3 2022-02-28 r5338 [aarch64-linux-6.1.0-rpi7-rpi-2712] (local build)
 +Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org
 +
 +=== START OF SMART DATA SECTION ===
 +SMART overall-health self-assessment test result: PASSED
 +</code>
 +
 +==== nvme ====
 +  * Geräteliste ausgeben \\ ''sudo nvme list'' \\ <code bash>
 +pi@Pi5Test:~ $ sudo nvme list
 +Node                  Generic               SN                   Model                                    Namespace Usage                      Format           FW Rev
 +--------------------- --------------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
 +/dev/nvme0n1          /dev/ng0n1            SN195108904273       GIGABYTE GP-GSM2NE3256GNTD                       256.06  GB / 256.06  GB    512   B +  0 B   EDFM00.2
 +</code>
 +  * Übersicht anzeigen \\ ''sudo nvme --smart-log /dev/nvme0n1'' \\ <code bash>
 +pi@Pi5Test:~ $ sudo nvme --smart-log /dev/nvme0n1
 +Smart Log for NVME device:nvme0n1 namespace-id:ffffffff
 +critical_warning                        : 0
 +temperature                             : 6°C (279 Kelvin)
 +available_spare                         : 100%
 +available_spare_threshold               : 5%
 +percentage_used                         : 1%
 +endurance group critical warning summary: 0
 +Data Units Read                         : 1,697,108 (868.92 GB)
 +Data Units Written                      : 3,901,500 (2.00 TB)
 +host_read_commands                      : 15,448,378
 +host_write_commands                     : 42,856,162
 +controller_busy_time                    : 1,107
 +power_cycles                            : 986
 +power_on_hours                          : 17,079
 +unsafe_shutdowns                        : 160
 +media_errors                            : 0
 +num_err_log_entries                     : 1,358
 +Warning Temperature Time                : 0
 +Critical Composite Temperature Time     : 0
 +Thermal Management T1 Trans Count       : 0
 +Thermal Management T2 Trans Count       : 0
 +Thermal Management T1 Total Time        : 0
 +Thermal Management T2 Total Time        : 0
 +</code>
 +  * Error Log ansehen \\ ''sudo nvme error-log /dev/nvme0n1''
 +
 +
 +
 +===== Sonstiges =====
 +Diese Punkte sind normal nicht Bestandteil vom YT Video!
 +==== Downgrade des Bootloaders ====
 +> **<color #ed1c24>Warnung</color>** \\ Nur wichtig für Tests!
 +
 +  * Update eeprom \\ ''sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader-2712/default/pieeprom-2023-12-06.bin''
 +  * Eine Liste mit älteren Bootloader Ständen findet man unter ''/lib/firmware/raspberrypi/bootloader-2712/default''
 +  * rpi-boot-eeprom Releases \\ https://github.com/raspberrypi/rpi-eeprom/releases
 +
 +===== Links =====
 +  * PCIe - PCI Express \\ https://www.elektronik-kompendium.de/sites/com/0904051.htm
 +  * https://www.raspberrypi.com/documentation/computers/raspberry-pi-5.html
 +  * https://www.raspberrypi.com/documentation/computers/raspberry-pi-5.html#enabling-pcie
 +  * Raspberry Pi Bootoptions \\ https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README
 +  * SMART Werte von NVMe SSDs auslesen \\https://www.thomas-krenn.com/de/wiki/SMART_Werte_von_NVMe_SSDs_auslesen
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki