🛠 Sauver une PINE A64 briquée : console série EXP et mode FEL
Objectifs
Une PINE A64 qui ne démarre plus n'est pas morte : le BROM d'Allwinner expose un mode de récupération FEL sur le port micro-USB OTG, standard de la famille sunxi. Combiné à la console série sur le connecteur EXP 2×5 (UART0, broches PB8/PB9, 115200 8N1 — le stdout-path = "serial0:115200n8" du device tree mainline), tu peux observer chaque étape de la chaîne de boot (BROM → U-Boot → noyau + DTB depuis la microSD), charger un U-Boot en RAM par FEL sans toucher à la carte SD, et reconstruire une carte de secours. À noter : la carte n'a pas de SPI NOR ni de boot eMMC par défaut — tout se rejoue depuis la microSD, ce qui rend la récupération simple mais le FEL indispensable quand le bootloader de la SD est cassé.
Matériel
- 1 × PINE A64/A64+ (micro-USB OTG : en mode FEL, c'est le port de service)
- 1 × adaptateur USB-TTL 3,3 V sur l'EXP (RX/TX croisés, GND commun) — jamais de niveau 5 V
- 1 × câble micro-USB data vers le PC
- PC Linux avec
sunxi-tools(sudo apt install sunxi-tools) etpicocom
Code complet
# 1) Observer le boot réel (la carte SD est-elle seulement lue ?)
sudo picocom -b 115200 /dev/ttyUSB0 # console EXP = UART0 PB8/PB9
# rien du tout -> alim/SD en cause ; U-Boot qui boucle -> bootloader HS
# 2) Entrer en FEL : retirer la microSD, carte hors tension,
# brancher le micro-USB OTG vers le PC (et alimenter).
# Le BROM attend sur l'USB ; vérifier :
sudo sunxi-fel version # doit répondre (ID sun50iw1p1)
# 3) Charger un U-Boot mainline en RAM et démarrer dessus (sans SD) :
sudo sunxi-fel -p write 0x4a000000 u-boot-sunxi-with-spl.bin
sudo sunxi-fel exec 0x4a000000
# 4) Une fois la console série vivante, graver une SD saine ou
# réécrire le bootloader sur la carte via un lecteur USB.
Vérification attendue
Avec la console série branchée, le silence total signifie que la carte n'amorce pas du tout (alimentation, microSD absente/illisible) — déjà une réponse. Un U-Boot qui affiche son banner puis boucle indique un kernel/DTB introuvable sur la SD. En mode FEL, sunxi-fel version répond avec l'identifiant du SoC, et après write + exec, la console série voit démarrer le U-Boot chargé en RAM : la carte est sauvée, il ne reste qu'à regraver une microSD saine. C'est exactement la chaîne documentée en mainline : BROM Allwinner → U-Boot (pine64_plus_defconfig) → noyau + DTB, tout depuis la SD.
Erreurs fréquentes
- Adapter USB-TTL en niveau 5 V : les broches du connecteur sont en 3,3 V (standard I/O Allwinner) — un module 5 V peut abîmer la broche RX.
- Oublier le GND commun entre l'adaptateur et la carte : console muette, puis on accuse l'UART.
- Chercher le port série sur le connecteur 40 broches : la console de service est sur l'EXP 2×5 (UART0, PB8/PB9) ; l'UART2 du Pi-2 (PB0/PB1) est désactivé par défaut dans le device tree.
- Laisser une microSD insérée en tentant le FEL : le BROM amorce la SD et n'entre pas en mode FEL — retirer la carte, puis brancher.
- Croir à un port OTG en périphérique « normal » : le device tree mainline configure
usb_otgendr_mode = "host"— le FEL vient du BROM avant le noyau ; une fois le noyau lancé, l'OTG est en hôte (voir le tuto override DT pour le mode gadget). - Écraser la SD de secours : en récupération, travailler sur une image fichier (
dddepuis un fichier) et vérifierlsblkavant chaquedd of=/dev/sdX.
Autres tutoriels pour cette carte
- Premier boot d'Armbian sur la PINE A64 (microSD, console série, rootfs)
- PINE A64 ou PINE A64+ ? Le pièg du réseau gigabit dès le premier regard
- Faire clignoter une LED avec libgpiod (numérotation GPIO du A64 : PB0 = 32)
- Benchmark Ethernet iperf3 : mesurer le piège 10/100 vs gigabit
- Lire un capteur I²C (BME280) sur le bus i2c-1 du connecteur Pi-2
- Un serveur maison qui consomme 2,5 W : Docker léger sur la PINE A64
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash