smart home circle
Smart Home Circle

How to Control Armbian Status LEDs Through sysfs (Turn Off / Heartbeat on Radxa Rock 5)

4 min read
How to Control Armbian Status LEDs Through sysfs (Turn Off / Heartbeat on Radxa Rock 5)

Written by

Amrut Prabhu avatar
Amrut Prabhu
@smarthomecircle
Table of Contents

Armbian exposes the board’s status LEDs through the Linux LED class sysfs interface: every available indicator lives under /sys/class/leds/, and you can change its behavior at runtime with simple echo commands. On the Radxa Rock 5, the most commonly adjusted LED is blue:status; however, the same approach works for any sysfs-exposed LED.

If you want to turn off a bright status LED at night, set it to none, or map it to system activity, the sysfs trigger interface is the cleanest way—no daemon, no Python script, no extra package.


1) List the LEDs exported by your board

Check which LEDs the kernel exposes:

ls /sys/class/leds/

On Radxa Rock 5 you should typically see entries such as:

blue:status

Each LED directory contains:

brightness
max_brightness
trigger

2) Read the current trigger and available modes

View what the LED is currently doing:

cat /sys/class/leds/blue\:status/trigger

To list every mode this LED supports, cat the same file. You’ll see something like:

[none] kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock timer heartbeat ...

The square brackets indicate the current default trigger.


3) Turn the LED off

To switch the blue status LED off:

echo none | sudo tee /sys/class/leds/blue\:status/trigger
sudo tee /sys/class/leds/blue\:status/brightness <<< 0

The first command changes the trigger so the kernel stops driving it automatically; the second forces the brightness to 0 for immediate silence.


4) Set the LED to heartbeat mode

To make the status LED blink like a heartbeat:

echo heartbeat | sudo tee /sys/class/leds/blue\:status/trigger

This is a common compromise: you still get activity indication, but the LED is no longer solid and attention-grabbing.


5) Common LED triggers (Linux LED class)

Typical triggers you’ll see for blue:status include:

TriggerBehavior
noneLED stays in its current state
timerPulse on/off with configurable delay
heartbeatCPU load heartbeat blink
default-onTurned on
mtdLED updated by userspace

Note: Some LEDs are hardwired to a specific function; if a trigger is missing from your trigger listing, the driver does not export it.


6) Make the LED mode persistent across reboots

Sysfs changes are temporary and reset on reboot. To make them permanent on Armbian without adding extra services:

Option A: systemd-tmpfiles

Create /etc/tmpfiles.d/led-control.conf:

f /sys/class/leds/blue:status/trigger 0644 root root heartbeat

This sets the trigger at boot. If you want none instead, replace heartbeat with none.

Option B: Armbian boot environment script

Append to /boot/armbianEnv.txt only if you prefer boot-time overlay behavior; otherwise, the tmpfiles method above is simpler because the LED path is created before systemd reaches that boot stage.

Option C: a user systemd service

Create /etc/systemd/system/led-control.service:

[Unit]
Description=Set status LED mode at boot
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo heartbeat > /sys/class/leds/blue:status/trigger'

[Install]
WantedBy=multi-user.target

Then enable it:

sudo systemctl daemon-reload
sudo systemctl enable --now led-control.service

If you prefer the LED off, replace heartbeat with none in the command.


7) Why sysfs-level control is often enough

Using /sys/class/leds/ avoids writing custom C overlays, kernel modules, or userspace daemons. The kernel already maintains every exposed LED there; you just flip a trigger file. This is ideal for:

  • nighttime server/SBC setups
  • desks with reflection-sensitive monitors
  • field/RV/RPi-like deployments where blinking clocks eat attention
  • drop-in OpenWrt / Armbian tweaks behind a config-management bootstrap

8) Troubleshooting LED triggers

If a trigger is missing:

grep -r "CONFIG_LEDS_GPIO" /boot/config-*

Ensure the board config enables LED GPIO, PWM LED, or Multi-Function LED support for the platform. On Radxa Rock 5, LED support is typically built-in already; missing triggers usually mean the LED node is constrained by the board’s device-tree binding rather than by missing sysfs entries.

If your cat /sys/class/leds/.../brightness shows only 0 or 1, the lower driver may only expose two brightness levels.


9) Next steps

Once the LED behavior is stable, you can pair it with other tweaks:

  • Disable HDMI CEC if HDMI-connected displays keep the board awake
  • Tune the Armbian PWM fan curve after adjusting LEDs if thermal behavior changes
  • Disable rfkill LED wakeups if the WiFi indicator is unwanted

If you are looking for a similar guide on Armbian fan control instead, see our earlier post: How to Tune CPU FAN Speed With PWM on Armbian.

Share this article: