🛠 Installer le système sur l'eMMC : rkdeveloptool, MaskROM et gain de fiabilité
Objectifs
Les SKUs avec eMMC embarquent une mémoire 5.1 soudée (8/16/32/64 GB, pas de socket : la capacité est figée à l'achat) configurée en 8-bit HS200 (mmc-hs200-1_8v, non-removable dans le device tree mainline). Y installer le système plutôt qu'une microSD apporte robustesse (pas de contact qui bouge) et souvent de la vitesse. Deux méthodes au programme : depuis un système qui boote sur SD avec rkdeveloptool, et via le mode Rockusb (bouton MaskROM + USB-C 1) depuis un PC.
Matériel
- 1 Radxa ZERO 3W avec eMMC (vérifiez votre SKU !)
- 1 microSD avec Radxa OS fonctionnelle (méthode 1)
- 1 PC Linux avec rkdeveloptool installé (
sudo apt install rkdeveloptool) (méthode 2) - 1 câble USB-C data (pas un câble de charge seul)
- L'image
.imgà installer (même fichier qu'un tuto flash SD)
Méthode 1 — depuis le système bootté sur SD
# La carte voit-elle son eMMC ?
lsblk # sda/mmcblk1 pour la SD, mmcblk2 (ou mmcblk1) pour l'eMMC
sudo fdisk -l # identifiez bien le périphérique eMMC AVANT d'écrire
# Copie directe image -> eMMC (ATTENTION : efface tout l'eMMC)
sudo unxz -k radxa-zero3_bookworm_kde_b1.img.xz
sudo dd if=radxa-zero3_bookworm_kde_b1.img of=/dev/mmcblk2 bs=4M status=progress conv=fsync
sudo sync && sudo poweroff
Puis retirez la microSD : l'ordre de boot microSD → eMMC → USB bascule automatiquement sur l'eMMC.
Méthode 2 — Rockusb depuis le PC (carte « vide »)
# 1. Carte éteinte : maintenir le bouton MaskROM, brancher USB-C 1 vers le PC,
# relâcher. Le contrôleur RK3566 apparaît en mode téléchargement.
lsusb | grep -i rockchip # id 2207:350x
sudo rkdeveloptool ld # liste la mémoire (BootROM/eMMC détectés)
sudo rkdeveloptool wl 0 radxa-zero3_bookworm_kde_b1.img # écrit l'image à 0
sudo rkdeveloptool rd # redémarre la carte
Radxa documente aussi le « factory upgrade tool » Rockchip (Rockchip Batch/Android Tool) comme alternative graphique ; le flux officiel low-level-dev décrit rkdeveloptool.
Vérification attendue
lsblk -o NAME,MODEL,SIZE,ROTA montre le système racine sur le périphérique eMMC (root=PARTUUID... sur mmcblk2). Test de vitesse grossier : sudo hdparm -Tt /dev/mmcblk2 ou dd if=/dev/zero of=test bs=1M count=512 oflag=direct — l'eMMC HS200 écrase typiquement une SD classe 10 en accès séquentiels/4K. dmesg | grep mmc confirme la négociation HS200 8-bit.
Erreurs fréquentes
- Écrire sur le mauvais périphérique : avec SD + eMMC simultanés, les index mmcblk peuvent permuter selon les noyaux — vérifiez la taille (
lsblk) avant chaque dd. - Croire à un eMMC amovible : il est soudé sur les cartes de production ; on ne peut pas « changer de carte OS » en échangeant une puce.
- Câble USB-C de charge seule en mode MaskROM :
lsusbne montre rien — testez avec un câble data connu. - Oublier de relâcher/maintenir le bon timing MaskROM : brancher sans maintenir le bouton laisse la carte booter normalement au lieu d'entrer en Rockusb.
- Alimenter la carte par une autre source pendant l'écriture eMMC : laissez-la alimentée uniquement par le port USB du PC pour éviter les coupures à mi-écriture.
- Ne pas sync avant d'éteindre : système eMMC corrompu ; le dd ci-dessus inclut conv=fsync, puis un sync explicite.
- eMMC pleine : 8 GB sur les petits SKUs — une image desktop complète + apt full-upgrade peut saturer ; prévoyez l'image server ou un SKU plus généreux.
Autres tutoriels pour cette carte
- Premiers pas avec la Radxa ZERO 3W : flasher Radxa OS et démarrer
- Wi-Fi 6 et Bluetooth 5.4 : se connecter, choisir l'antenne, connaître sa révision
- GPIO avec libgpiod : faire clignoter une LED et lire un bouton
- Caméra MIPI CSI : brancher une Raspberry Pi Camera (OV5647/IMX219) sur la ZERO 3W
- Noyau mainline avec Armbian : vérifier le device tree, ajouter un overlay, lire le SARADC
- NPU 0,8 TOPS : inférence RKNN (YOLO, Whisper) sur la ZERO 3W
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash