🛠 Console série UART2 à 1,5 Mbaud : debugger U-Boot et récupérer une carte briquée
Objectifs
Quand la carte ne démarre plus (overlay raté, mise à jour interrompue, eMMC corrompue), la console série est le fil d'Ariane. Sur la ZERO 3W, elle siège sur UART2_M0, broches 8 (TX) / 10 (RX) du connecteur 40 broches, à 1500000 bauds 8N1 — et c'est AUSSI la console U-Boot par défaut. Ce tuto couvre le câblage USB-TTL, l'observation de la chaîne de boot, l'interruption d'U-Boot, le piège documenté de l'activation d'UART2 en UART applicatif (une entrée parasite peut empêcher le boot !) avec son contournement officiel, et la récupération finale via MaskROM + Rockusb.
Matériel
- 1 Radxa ZERO 3W avec connecteur 40 broches SOUDÉ (les SKUs de base ne l'ont pas — prévoir le fer à souder)
- 1 adaptateur USB-TTL réglé sur 3,3 V (FT232/CP210x avec sélecteur 1,8/3,3 V)
- 3 fils : adaptateur TX -> broche 10 (RX carte), adaptateur RX -> broche 8 (TX carte), GND -> GND
- Ne JAMAIS relier le Vcc de l'adaptateur à la carte (elle s'alimente par USB-C 1)
- PC Linux avec picocom/minicom et rkdeveloptool pour le recovery
1) Écouter le boot
sudo picocom -b 1500000 /dev/ttyUSB0 # ou : sudo minicom -D /dev/ttyUSB0 -b 1500000
Branchez l'alimentation : vous devez voir BootROM puis U-Boot (console par défaut sur UART2_M0 à 1,5 Mbaud), le noyau, puis le login. Un écran de caractères bizarres = mauvais débit (le réflexe n°1 est le 115200 hérité d'autres cartes — ici c'est 1 500 000).
2) Interrompre U-Boot
Pressez une touche pendant le countdown : vous atterrissez dans la console U-Boot (=>). Commandes de diagnostic sans risque : version, mmc info, mmc list, printenv. Évitez toute écriture (mmc write, mw) sans savoir exactement ce que vous faites.
3) Le piège documenté : UART2 en UART applicatif
Radxa avertit (page hardware-interface) : activer UART2_M0 comme port série normal via les overlays rsetup expose la broche d'entrée à des signaux qui peuvent être interprétés par la console U-Boot — des entrées parasites peuvent interrompre le boot et l'appareil peut ne plus démarrer. Le contournement officiel passe par la configuration U-Boot :
sudo nano /etc/default/u-boot # retirer la console série de la ligne de boot U-Boot
sudo u-boot-update # regenre extlinux/uEnv avec la nouvelle config
sudo reboot
4) Dernier recours : MaskROM + Rockusb
# Carte eteinte : maintenir le bouton MaskROM, brancher USB-C 1 vers le PC, relacher
lsusb | grep -i 2207 # le RK3566 est en mode Rockusb (vendor 2207)
sudo rkdeveloptool ld # detection BootROM/eMMC
sudo rkdeveloptool wl 0 system.img # reecrit l'image complete sur l'eMMC
sudo rkdeveloptool rd # redemarre
Vérification attendue
La chaîne complète BootROM -> U-Boot -> kernel -> login défile à l'écran série. Après le workaround UART2, le boot n'est plus jamais interrompu par un fil qui traîne sur la broche 10. Après recovery Rockusb, la carte reboote sur une image neuve.
Erreurs fréquentes
- Débit 115200 par réflexe : ici la console est à 1 500 000 8N1 — tout le reste est du bruit.
- TX/RX non croisés : rien ne s'affiche alors que la masse est bonne — inversez les deux fils de données.
- Adaptateur en 5 V ou Vcc relié à la carte : logique 3,3 V (max absolu 3,63 V) — risque de dommage réel.
- Activer l'overlay UART2 sans appliquer le workaround U-Boot : c'est exactement le scénario de carte « briquée par un fil » décrit par la doc.
- Se fier uniquement au LED : sans console série, un échec de boot early (DTB invalide) est invisible — gardez le câble USB-TTL dans la trousse.
- Oublier que le connecteur n'est pas soudé sur les SKUs de base : vérifier avant de commander les fils.
- Écrire sur le mauvais périphérique mmc dans U-Boot : un
mmc writemal ciblé peut écraser la bootloader — diagnostiquez d'abord avec mmc info.
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
- Installer le système sur l'eMMC : rkdeveloptool, MaskROM et gain de fiabilité
- 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
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash