🛠 Boot SD/eMMC et récupération (pyamlboot) sur Amlogic S905X
Objetivos
Comprender la cadena de arranque de Amlogic (blobs propietarios BL2/BL30/BL31 + U-Boot mainline firmado en FIP), instalar Armbian en una microSD, flashear la eMMC desde un sistema iniciado y recuperar una tarjeta que ya no arranca mediante el bootrom USB y pyamlboot. Los fallos de arranque («bucle de reinicio», «solo rojo + azul») son el tema de soporte n.º 1 de la tarjeta: SD defectuosa, alimentación insuficiente o mezcla inconsistente de imagen/bootloader.
Hardware
- Le Potato AML-S905X-CC (v1: micro-USB 5 V/2,5 A; alimentación insuficiente = cuelgues silenciosos)
- microSD de calidad, imagen Armbian «lepotato» (dl.armbian.com/lepotato/)
- Módulo eMMC opcional (no hay ruta de arranque eMMC autónoma: es obligatorio flashear desde un sistema vivo, herramienta LEFT)
- Cable USB para la recuperación, PC con Linux
Código completo
# 1) Ecrire 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 systeme demarre : 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 : demarrer un noyau en RAM
Verificación esperada
cat /proc/device-tree/compatible contiene libretech,aml-s905x-cc amlogic,s905x amlogic,meson-gxl; en modo de recuperación, lsusb muestra el dispositivo bootrom de Amlogic antes de cualquier acción, y pyamlboot puede cargar un kernel en la memoria.
Errores frecuentes
- Mezclar una imagen «box» heredada (Android 3.14/4.9) con mainline: son incompatibles, no hay actualización in situ; los scripts installtointernal rompen el arranque mainline.
- SD barata o alimentación de 5 V marginal: bucle de reinicio sin mensajes de error.
- Intentar arrancar directamente desde la eMMC: sin un flasheo previo mediante LEFT, la eMMC no tiene una ruta de arranque autónoma.
- Sobrecalentamiento: el S905X se vuelve muy caliente sin disipador — añada un heatsink.
Otros tutoriales para esta placa
- 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
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash