Raspberry Pi: Onboard-LEDs

Prof. Jürgen Plate

Raspberry Pi: Onboard-LEDs

Auf der Platine des Raspberry Pi befinden sich auch fünf LEDs, die verschiedene Aktivitäten des Computers anzeigen.

ACT leuchtet beim Zugriff auf die SD-Karte
PWR leuchtet, sobald die Versorgungsspannung anliegt
FDX (Netzwerk) leuchtet bei Fullduplex-Mode
LNK (Netzwerk) leuchtet bei einem Link zum Netzwerk (Switch, Router etc.)
100 (Netzwerk) leuchtet bei Übertragungsrate 100 MBit/s

Die PWR-LED ist fest verdrahtet und die Netzwerk-LED haben feste Aufgaben und lassen sich nicht so einfach für andere Zwecke verwenden. Lediglich die ACT-LED kann recht einfach auch für andere Zwecke verwendet werden. Gerade wenn der RasPi ohne Tastatur und Monitor läuft, ist es oft beruhigend, wenn sich trotzden etwas tut. Wie so viele systemnahe Aufgaben, können auch diese nur vom Superuser root ausgeführt werden.

Angesprochen wird die ACT-LED über ein Pseudoverzeichnis unterhalb von /sys. Zum Testen wechseln Sie (als root-User) in das Verzeichnis der LED:

cd /sys/class/leds/led0
Im Verzeichnis befinden sich sieben Dateien, wovon Sie nur mit zwei arbeiten:

Sie haben es also nur mit brightness und trigger zu tun. Da der Raspberry Pi die LED-Helligkeit nicht einstellen kann, sind für brightness nur die Werte 0 (dunkel) und 1 (hell) sinnvoll (jeder Wert ungleich 0 schaltet die LED ein). Die Datei trigger legt fest, wer die LED-Aktivität steuert. Es sind folgende Werte möglich:

Standardmäßig ist wie gesagt der Trigger mmc0 eingeschaltet, der die LED bei SD-Karten-Zugriffen blinkern läßt. Mit dem Kommando cat trigger kann die Einstellung ausgelesen werden.

Mit dem Kommando

echo "none" >/sys/class/leds/led0/trigger
stellen Sie die LED auf manuellen Betrieb um. Nun entscheidet der Inhalt der Datei brightness, ob die LED leuchtet oder nicht.
# Einschalten der LED
echo 1 >/sys/class/leds/led0/brightness

# Ausschalten der LED
echo 0 >/sys/class/leds/led0/brightness
Im Prinzip könnten Sie die LED mit Hilfe eines kleinen Shellskripts blinken lassen:
while :
do
  # Einschalten der LED fuer 1 Sekunde
  echo 1 >/sys/class/leds/led0/brightness
  sleep 1

  # Ausschalten der LED fuer 1 Sekunde
  echo 0 >/sys/class/leds/led0/brightness
  sleep 1
done

Auf diese Idee sind die Entwickler des RasPi natürlich auch schon gekommen und deshalb gibt es dafür schon eine Lösung in Form eines Kernel-Moduls namens "ledtrig_timer". Beim Einbinden (und Initialisieren) des Moduls entstehen auch zwei neue Pseudo-Dateien im Verzeichnis der LED, über die Ein- und Ausschaltzeit in Millisekunden einstellbar sind. Laden wir mal das Modul und stellen den trigger ein:

modprobe ledtrig_timer
echo "timer" >/sys/class/leds/led0/trigger
Die zeitbestimmenden Dateien heißen "delay_off" und "delay_on". Per Default enthalten beide den Wert 500 (500 ms = 1/2 s). Und schon blinkt die LED mit einer Frequenz von 2 Hz. Um die Frequenz auf 4 Hz (250 ms) einzustellen, geben Sie ein:
echo 250 >/sys/class/leds/led0/delay_on
echo 250 >/sys/class/leds/led0/delay_off
Man kann jedoch die Zeiten nicht beliebig niedrig einstellen, da die Steuerung per Software erfolgt; der Versuch, Pulsweitenmodulation zu realisieren, scheitert also.

Bleibt noch eine Triggermöglichkeit übrig: heartbeat. Mit dieser Möglichkeit kann die Funktion des Boards kontinuierlich überwacht werden. Solange das System (genauer: der Kernel) einwandfrei arbeitet, wird der "Herzschlag" getriggert und die LED blinkt. Hängt sich das System auf (der Ami sagt dazu "freeze"), blinkt auch nichts mehr. Die Anzeige kann auch sehr gut mit dem an anderer Stelle erwähnten Watchdog kombiniert werden. Um den Heartbeat zu setzen, wird wieder ein Kernel-Modul benötigt:

modprobe ledtrig_heartbeat
echo "heartbeat" >/sys/class/leds/led0/trigger

Anmerkungen:
Setzen von brightness auf 0 schaltet die LED in jedem Fall aus (wichtig bei timer und heartbeat).
Im Modus none kann die LED auch über GPIO16 gesteuert werden. Da sie active-low ist, muss GPIO16 auf 0 gesetzt werden, um die LED anzuschalten und umgekehrt.

Beim Raspberry Pi 2 mit dem neueren Raspbian ist alles viel einfacher. Es genügt, die folgende Zeile in der Datei /boot/config.txt einzutragen:

dtparam=act_led_trigger=heartbeat


Copyright © Hochschule München, FK 04, Prof. Jürgen Plate
Letzte Aktualisierung: