🛠 Comprendre les triggers en pilotant les 4 LED utilisateur
Objectives
Discover the Linux LED subsystem without soldering anything: the BeagleBone Black has 4 user LEDs defined in the mainline device tree (am335x-bone-common.dtsi) under the names beaglebone:green:heartbeat, mmc0, usr2, and usr3. Each LED exposes a "trigger": an activation source managed by the kernel (heartbeat, SD card activity, timer...). This is the gateway to hardware control under Debian.
Hardware
- 1 powered BeagleBone Black (a simple mini-USB cable is sufficient)
- SSH access or serial console (the 6-pin 3.3 V TTL debug connector is available if no screen is present)
Complete code
# Lister les LED exposées par le device tree
ls /sys/class/leds/
# beaglebone:green:heartbeat beaglebone:green:mmc0
# beaglebone:green:usr2 beaglebone:green:usr3
# Voir les triggers disponibles ; l'actif est entre crochets [ ]
cat /sys/class/leds/beaglebone:green:usr2/trigger
# Chaque LED prend son rôle métier :
echo heartbeat > /sys/class/leds/beaglebone:green:heartbeat/trigger
echo mmc0 > /sys/class/leds/beaglebone:green:mmc0/trigger
# usr2 en minuteur 250 ms allumée / 500 ms éteinte
echo timer > /sys/class/leds/beaglebone:green:usr2/trigger
echo 250 > /sys/class/leds/beaglebone:green:usr2/delay_on
echo 500 > /sys/class/leds/beaglebone:green:usr2/delay_off
# Reprise la main : retirer le trigger puis piloter la luminosité
echo none > /sys/class/leds/beaglebone:green:usr3/trigger
echo 255 > /sys/class/leds/beaglebone:green:usr3/brightness
echo 0 > /sys/class/leds/beaglebone:green:usr3/brightness
Expected verification
The heartbeat LED pulses at the kernel's rhythm, mmc0 blinks during writes to the SD card (test with dd if a microSD is inserted), usr2 blinks at the configured rate. With the none trigger, usr3 instantly obeys echo commands.
Common errors
- Forgetting the colons in path names (beaglebone:green:usr2): tab completion is your friend.
- Writing to brightness without setting the trigger to none: the active trigger constantly overwrites your value.
- Confusing the LEDs: heartbeat is a programmable user LED, it is not the Ethernet port LED nor the power LED.
- On very old A5B revisions, the LEDs were intentionally made dimmer (resistance changed from 820 Ω to 4.75 kΩ): a dim LED is not a dead LED.
- The heartbeat trigger slows down when the system is heavily loaded: this is intended (it reflects kernel load).
- Expecting these LEDs on the P8/P9 pins: they are soldered onto the board, the cape pins are a different exercise.
Other tutorials for this board
- Premier boot de la BeagleBone Black avec un seul câble mini-USB
- Bouton et LED avec Adafruit_BBIO, la bibliothèque historique
- Lire l'ADC 12 bits sans griller le SoC : la règle des 1,8 V
- Ajouter une horloge temps réel sur le bus I2C des capes
- Micro-HDMI : exploiter les limites d'affichage de la BBB
- Capes historiques : capemanager, EEPROM d'identification et pièges des broches
Code examples for this board
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash