🛠 Overlays device tree sur Le Potato : activer I2C, PWM, SPI
Objetivos
Comprender por qué I2C, PWM y SPI del conector de 40 pines están inactivos por defecto en Le Potato, y activarlos correctamente mediante overlays del device tree: la placa es «mainline-first», todo pasa por el device tree del kernel upstream (meson-gxl-s905x-libretech-cc.dts).
Hardware
- Le Potato AML-S905X-CC con Armbian (kernel current/edge mainline)
- Conocimientos de device tree; paquete device-tree-compiler para overlays propios
Código completo
# 1) Voie recommandee : menus Armbian
sudo armbian-config # System > Options > HW interfaces : I2C / SPI / PWM
# ou edition directe du fichier de config :
sudo nano /boot/armbianEnv.txt
# overlays="i2c0 i2c1" # noms exacts : ls /boot/dtb/overlay/
sudo reboot
# 2) Verifier le device tree effectif
cat /proc/device-tree/compatible
# -> libretech,aml-s905x-cc amlogic,s905x amlogic,meson-gxl
ls /dev/i2c-* /dev/spidev* 2>/dev/null
sudo i2cdetect -l
# 3) Overlay maison minimal (exemple d'activation d'un bus I2C)
cat > i2c-ajout.dts <<'EOF'
/dts-v1/;
/plugin/;
&i2c_ao { status = "okay"; };
EOF
sudo dtc -@ -I dts -O dtb -o /boot/dtb/overlay/i2c-ajout.dtbo i2c-ajout.dts
Verificación esperada
Tras reiniciar, /dev/i2c-N aparece y i2cdetect -y N responde; /proc/device-tree refleja el nodo activado. Los overlays disponibles se listan en /boot/dtb/overlay/ y los cargados aparecen en armbianEnv.txt.
Errores frecuentes
- Buscar un config.txt al estilo Raspberry Pi: aquí se usa armbianEnv.txt/armbian-config, y el DTS mainline se llama meson-gxl-s905x-libretech-cc.dts (no «libre-tech-potato»).
- Compilar el overlay sin la opción
-@(tabla de símbolos): el plugin no se injerta en el nodo padre. - Inventar nombres de overlays: utilizar exactamente los archivos presentes en /boot/dtb/overlay/.
- Olvidar reiniciar: los overlays no se recargan en caliente.
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