Controling Raspberry Pi Power and Status Light

One thing that has been irritating me for a while on the Pi serving the bedroom television is the red glow cast on the wall emitted by the power light. During the day it is unnoticeable but at night the flickering of the SD card activity LED and the glow of the power light can prove to be quite annoying.

Instead of resorting to taping over the lights to block them out, it is possible to disable them using software as they are connected to GPIO pins.

Activity LED

The green LED (ACT) is accessible via
/sys/class/leds/led0/ and is normally tied to activity on the SD card.

This link to activity is established by something called a trigger and can be modified by altering the contents of the trigger file associated with the LED. It can be disabled by changing its value to “none” (
echo none>/sys/class/leds/led0/trigger) and restored by echoing the memory card to the file (
echo mmc0>/sys/class/leds/led0/trigger).

The LED can be turned off (
echo0>/sys/class/leds/led0/brightness) or on (
echo1>/sys/class/leds/led0/brightness) by altering the value stored in the brightness file. Strictly speaking the brightness can be a value between 0 and 255, however the LEDs are on digital pins, so a value of 1 or higher is interpreted as on.

Power LED (Excludes RPi3)

The red LED (PWR) is accessible via
/sys/class/leds/led1/ .

Similarly this can be turned on and off by modifying the brightness value stored in the brightness file.

echo0>/sys/class/leds/led1/brightness and
echo1>/sys/class/leds/led1/brightness

OpenELEC

Adding the below lines to the autostart file (
/storage/.config/autostart.sh) on OpenELEC will automatically disable to two LEDs on startup

1

2

echo0>/sys/class/leds/led0/brightness

echo0>/sys/class/leds/led1/brightness

Other Triggers

As mentioned above, it’s possible to do a few fancy bits using triggers. Two examples are the “heartbeat” and “timer” based triggers.

Interchange
led0 and
led1 as desired in the following examples.

Heartbeat Trigger – The higher the system load the faster the LED blinks

The heartbeat module first needs to be loaded using
modprobe ledtrig-heartbeat . It can now be added to the LED’s trigger file
echo heartbeat>/sys/class/leds/led0/trigger .

Timer Trigger – Control the blink rate of the LED

Load the timer kernel module using
modprobe ledtrig-timer and add it to the LED’s trigger file
echo timer>/sys/class/leds/led0/trigger .

In this example to turn the LED on for 1 second and then off for 3 seconds:

1

2

echo1000>/sys/class/leds/led0/delay_on

echo3000>/sys/class/leds/led0/delay_off

Ethernet LED’s

For completeness it is also possible to disable or modify the actions of the Ethernet port’s LED’s. This topic on the Raspberry Pi forums contains the instructions on how to do just that.