🛠 Overlays device tree sur Le Potato : activer I2C, PWM, SPI
Objectifs
Comprendre pourquoi l'I2C, le PWM et le SPI du connecteur 40 broches sont inactifs par défaut sur Le Potato, et les activer proprement par overlays device tree — la carte est « mainline-first » : tout passe par le device tree amont (meson-gxl-s905x-libretech-cc.dts dans le noyau).
Matériel
- Le Potato AML-S905X-CC sous Armbian (kernel current/edge mainline)
- Notions de device tree ; paquet device-tree-compiler pour les overlays maison
Code complet
# 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
Vérification attendue
Après redémarrage, /dev/i2c-N apparaît et i2cdetect -y N répond ; /proc/device-tree reflète le nœud activé. Les overlays disponibles se listent dans /boot/dtb/overlay/ et ceux chargés dans armbianEnv.txt.
Erreurs fréquentes
- Chercher un config.txt façon Raspberry Pi : ici c'est armbianEnv.txt/armbian-config, et le DTS mainline s'appelle meson-gxl-s905x-libretech-cc.dts (pas « libre-tech-potato »).
- Overlay compilé sans l'option
-@(table de symboles) : le plugin ne se greffe pas sur le nœud parent. - Noms d'overlays inventés : utiliser exactement les fichiers présents dans /boot/dtb/overlay/.
- Oublier le reboot : les overlays ne se rechargent pas à chaud.
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