🛠 LEDs du Lichee RV Dock : LED verte et RGB WS2812 pilotée par le LEDC du D1

Sipeed Lichee RV Dock (Allwinner D1 / T-Head XuanTie C906) · debutant · Schéma : IMG-sipeed-lichee-rv-dock-debutant-1-licheerv-leds-ws2812.svg — Lichee RV Dock avec la LED verte du module sur la broche PC1 et la LED RGB WS2812 du Dock sur PC0 reliée au contrôleur matériel LEDC du SoC D1, plus la LED d'alimentation

Objectifs

Le Lichee RV Dock possède DEUX LED pilotables sous Linux mainline : la LED verte « status » du module (broche PC1, pilote LED class classique) et la LED RGB WS2812 (NeoPixel) du Dock sur la broche PC0 — particularité rare, elle est pilotée par le périphérique matériel LEDC du D1, déclaré dans le device tree mainline comme LED multicolore (classe multicolor), sans bit-banging. Ce tutoriel vous fait découvrir /sys/class/leds, les triggers (timer, heartbeat) et l'API multicolor multi_intensity.

Matériel

Code complet

# 1) Lister les LED visibles par le noyau
ls /sys/class/leds/
#   mainline : « green:status » (PC1, module) + une LED multicolore « status » (PC0, WS2812)

# 2) LED verte PC1 : trigger timer (clignotement 1 Hz)
echo timer | sudo tee '/sys/class/leds/green:status/trigger'
#   rythme cardiaque :
echo heartbeat | sudo tee '/sys/class/leds/green:status/trigger'
#   contrôle manuel :
echo none | sudo tee '/sys/class/leds/green:status/trigger'
echo 1 | sudo tee '/sys/class/leds/green:status/brightness'
echo 0 | sudo tee '/sys/class/leds/green:status/brightness'

# 3) RGB WS2812 (PC0) via le LEDC — LED multicolore, canaux R G B 0-255
RGB=$(ls -d /sys/class/leds/*status/multi_intensity 2>/dev/null | head -1)
echo "255 0 0"   | sudo tee "$RGB"     # rouge
echo "0 255 128" | sudo tee "$RGB"     # vert menthe
echo 64 | sudo tee "$(dirname $RGB)/brightness"   # luminosité globale

# 4) Petit script d'ambiance
while :; do for c in "255 0 0" "0 255 0" "0 0 255"; do
  echo "$c" | sudo tee "$RGB" >/dev/null; sleep 1; done; done

Vérification attendue

ls /sys/class/leds/ liste au moins la LED verte green:status et, avec un kernel assez récent, un device multicolor *::status contenant multi_intensity. Le trigger timer fait clignoter la LED verte à 1 Hz ; echo 1/0 sur brightness l'allume et l'éteint visiblement. La WS2812 du Dock change réellement de couleur avec multi_intensity (R G B séparés par des espaces) — si le device multicolor est absent, votre kernel n'a pas encore le nœud LEDC du Dock. Le cat de trigger montre la valeur active entre crochets.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels