🛠 Booter sur NVMe (M.2 PCIe 3.0 x4) et récupérer une carte brique via MaskROM
Objectifs
Installer le système root sur un SSD NVMe dans le slot M.2 M-Key (2280, PCIe 3.0 x4, débit officiel jusqu'à 2 000 Mo/s), laisser le chargeur dans la SPI NOR pour un boot sans carte SD, puis savoir remettre la carte en état de service via le bouton MaskROM (mode Recovery du RK3588) si l'amorçage est cassé. Ordre de boot RK3588 : SPI NOR → eMMC → microSD → USB ; le MaskROM force la reprise par USB.
Matériel
- Orange Pi 5 Plus + SSD M.2 2280 NVMe + alimentation 5 V / 4 A (le NVMe en charge ajoute au budget courant)
- Carte microSD d'installation, ou image vendor + RKDevTool sous Windows pour la voie officielle
- Câble USB-C data (port Type-C data, pas celui de l'alimentation) ; boutons MaskROM/Recovery/On-Off
Code complet
# 1. Depuis le système sur microSD : détecter le SSD et vérifier le lien PCIe Gen3
sudo fdisk -l | grep nvme # attendre /dev/nvme0n1
sudo dmesg | grep -i "pci.*link.*GT/s" # attendre « 8.0 GT/s PCIe » sur le port M-Key
sudo apt install -y fio
sudo mkfs.ext4 /dev/nvme0n1p1 2>/dev/null || sudo fdisk /dev/nvme0n1
sudo mkdir -p /mnt/nvme && sudo mount /dev/nvme0n1p1 /mnt/nvme
fio --name=nvme --rw=write --bs=1M --size=512M --direct=1 --runtime=30 \
--filename=/mnt/nvme/testfile --group_reporting # ~1500-2000 Mo/s attendus
# 2. Copier le système sur le SSD (méthode Armbian)
sudo apt install -y armbian-config
sudo armbian-install # cible NVMe/SCSI, puis flash SPI-NOR du loader
# (variante vendor wiki §2.6 : dd / RKDevTool ; variante classique : rsync + /etc/fstab)
sudo reboot
# 3. Récupération MaskROM (boot cassé) : carte hors tension,
# maintenir MaskROM, brancher USB-C data vers le PC, relâcher, puis :
sudo apt install -y rkdeveloptool
lsusb | grep -i '2207' # le RK3588 apparaît en « Rockchip USB RAM »
sudo rkdeveloptool ld # liste le périphérique en MaskROM
sudo rkdeveloptool wl 0x0 image-sdcard.img # réécrit la SPI NOR/eMMC selon la cible
sudo rkdeveloptool rd # redémarrage
Vérification attendue
Après armbian-install et redémarrage sans carte SD, lsblk montre la racine sur /dev/nvme0n1 et dmesg confirme le lien 8.0 GT/s. fio atteint 1 500–2 000 Mo/s sur un bon SSD Gen3. En mode MaskROM, lsusb montre un périphérique Rockchip (vendor 0x2207) et rkdeveloptool ld le liste.
Erreurs fréquentes
- Télécharger la mauvaise image OpenWrt : le wiki distingue l'image « SPI flash » de l'image « TF card, eMMC and NVME SSD boot » — prendre celle du bon média.
- SSD non détecté : vérifier le montage du module (vis 2280), refaire un réveil MaskROM/Power pour re-négocier le lien PCIe, tester un autre SSD.
- Confondre les deux Type-C : le flashing RKDevTool/rkdeveloptool passe par le port data, pas par le port d'alimentation.
- >
Autres tutoriels pour cette carte
- Allumer une LED via le GPIO 40 broches (libgpiod)
- Lire un bouton poussoir et afficher dans la console
- Premier script Python : fiche signalétique de la carte et LED
- Variation d'intensité d'une LED avec PWM (sysfs pwm)
- Lire un capteur I2C (BMP280) depuis le bus du connecteur
- Exploiter le double Ethernet 2,5 GbE et sécuriser le SSH
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash