🛠 Boot SD/eMMC et récupération (pyamlboot) sur Amlogic S905X
Objectifs
Comprendre la chaîne de boot Amlogic (blobs propriétaires BL2/BL30/BL31 + U-Boot mainline signé en FIP), installer Armbian sur microSD, flasher l'eMMC depuis un système démarré, et récupérer une carte qui ne boote plus via le bootrom USB et pyamlboot. Les pannes de boot (« boucle de redémarrage », « rouge + bleu seulement ») sont le sujet de support n°1 de la carte : mauvaise SD, alimentation faible ou mélange image/bootloader incohérent.
Matériel
- Le Potato AML-S905X-CC (v1 : micro-USB 5 V/2,5 A ; alimentation faible = hangs silencieux)
- microSD de qualité, image Armbian « lepotato » (dl.armbian.com/lepotato/)
- Module eMMC optionnel (pas de chemin de boot eMMC autonome : flash obligatoire depuis un système vivant, outil LEFT)
- Câble USB pour la récupération, PC Linux
Code complet
# 1) Écrire l'image Armbian sur la SD (bootloader U-Boot deja integre)
xzcat Armbian_*_Lepotato_*.img.xz | sudo dd of=/dev/sdX bs=4M status=progress conv=fsync
# Bootloader U-Boot construit a la main (doc officielle) : deux passes dd, offset 8 Ko
# dd if=u-boot.bin.sd.bin of=/dev/sdX conv=fsync,notrunc bs=512 skip=1 seek=1
# dd if=u-boot.bin.sd.bin of=/dev/sdX conv=fsync,notrunc bs=1 count=440
# 2) Depuis le système démarre : flasher l'eMMC puis installer
sudo apt install git && git clone https://github.com/libre-computer-project/libretech-emmc-flash-tool
cd libretech-emmc-flash-tool && sudo ./emmc-flash-tool # outil LEFT
sudo armbian-install
# 3) Recuperation : maintenir le bouton de boot puis brancher l'USB,
# le bootrom Amlogic apparait sur le bus USB :
sudo pip install pyamlboot
lsusb # appareil Amlogic visible = bootrom accessible
sudo ./boot-aarch64.sh # script pyamlboot : démarrer un noyau en RAM
Vérification attendue
cat /proc/device-tree/compatible contient libretech,aml-s905x-cc amlogic,s905x amlogic,meson-gxl ; en mode récupération, lsusb montre l'appareil bootrom Amlogic avant toute action, et pyamlboot peut charger un noyau en mémoire.
Erreurs fréquentes
- Image « box » legacy (Android 3.14/4.9) mélangée avec du mainline : incompatibles, pas de mise à jour en place ; les scripts installtointernal cassent le boot mainline.
- SD bon marché ou alimentation 5 V marginale : boucle de redémarrage sans message d'erreur.
- Tenter de booter directement l'eMMC : sans flash préalable via LEFT, l'eMMC n'a pas de chemin de boot autonome.
- Surchauffe : le S905X devient brûlant sans dissipateur — ajoutez un heatsink.
Autres tutoriels pour cette carte
- Faire clignoter une LED en C avec libgpiod sur Le Potato
- Lire un bouton poussoir avec libgpiod (pull-up interne)
- GPIO en Python avec python3-libgpiod sur Le Potato
- Fondu LED progressif avec PWM sous sysfs (meson)
- Capteur BME280 (I2C) sur Le Potato : overlay et lecture
- Console série (ttyAML0) et SSH sur Le Potato
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash