🛠 Booter sur un SSD NVMe et récupérer une carte bloquée (MaskROM)
Objetivos
Instalar el sistema en un SSD NVMe en la ranura M.2 M-Key (el RK3566 arranca mediante un pequeño cargador escrito en la SPI NOR de 16/32 MB, mientras que el rootfs permanece en el SSD) y saber cómo restaurar la placa a su estado original en modo MaskROM si el gestor de arranque está dañado.
Material
- Orange Pi 3B (2/4/8 GB), SSD M.2 2280/2242 — la ranura es eléctricamente PCIe 2.0/2.1 x1, limitada a ~500 MB/s teóricos: un SSD de gama de entrada es suficiente
- Fuente de alimentación de 5 V / 3 A, microSD para el arranque inicial, cable USB-C de datos
- PC con Windows con RKDevTool (o
rkdeveloptoolen Linux) para el modo MaskROM (el botón MaskROM está presente en la placa)
Código completo
# 1. Depuis Armbian sur microSD : vérifier que le kernel voit le SSD (slot &pcie2x1 activé)
sudo fdisk -l | grep nvme # attendu : /dev/nvme0n1
sudo dmesg | grep -i "pci.*link.*Gen" # attendu : "2.5 GT/s PCIe" (Gen2 x1)
# 2. Benchmark de cohérence (attendu ~300-450 MB/s, pas 3000+)
sudo apt install fio
fio --name=nvme --rw=write --bs=1M --size=256M --numjobs=1 --direct=1 \
--filename=/mnt/ssd/testfile --runtime=30 --group_reporting
# 3. Copier le système en cours sur le SSD (écrit le chargeur en SPI NOR puis le rootfs en NVMe)
sudo apt install armbian-config
sudo armbian-install # cible "NVMe", puis redémarrer sans la microSD
# 4. Recouvrement : carte qui ne boote plus
# Éteindre -> maintenir la touche MaskROM -> brancher l'USB-C vers le PC -> RKDevTool
# détecte « Found OneDevice » (USB 2.0 device) : réécrire mini-loader / uboot puis
# effacer la SPI NOR, ou reflasher eMMC, puis rebooter sur microSD propre.
Verificación esperada
Después de armbian-install y reiniciar sin la microSD: lsblk muestra / en /dev/nvme0n1, uname -a arranca, y el proceso de arranque sigue el orden ROM RK3566 SPI flash → eMMC → microSD → USB. En modo MaskROM, lsusb (Linux) lista un dispositivo «Rockchip USB Peripheral».
Errores frecuentes
- Esperar 3 GB/s: la ranura está limitada a PCIe 2.1 x1 (~500 MB/s teóricos, wiki oficial §2.6).
- Imágenes antiguas de Armbian: se necesitaban U-Boot separados para NVMe/SATA y un error de prefijo de overlay rompía uno u otro (armbian/build#10896) — actualice.
- Confundir las revisiones v1.1/v2.1 para el device tree: Ethernet/Wi-Fi pueden dejar de funcionar después de la clonación.
- Usar un SSD SATA en una ranura cableada para NVMe (la ranura es conmutable SATA/PCIe, verifique la configuración) o la ausencia de tornillos de fijación: contacto intermitente en Gen2.
- Olvidar el botón MaskROM: sin él, un gestor de arranque dañado en la SPI NOR no se puede reescribir mediante USB.
Otros tutoriales para esta placa
- Faire clignoter une LED via le GPIO avec libgpiod
- Lire un bouton poussoir et afficher l'état dans la console
- Premier script Python : bouton + LED avec python3-libgpiod
- Variation d'intensité d'une LED avec un signal PWM
- Interroger un capteur I2C sur les broches 3/5 du connecteur
- Configurer Ethernet gigabit et Wi-Fi puis se connecter en SSH
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash