There’s an embedded Linux board on my desk, where a LED is connected to some GPIO pin. Everything is set up properly through device tree and with a recent kernel 4.9.13 the usual LED trigger mechanisms work fine, so no problem using heartbeat or just switching the LED on and off.
Now I wanted to have the LED blink with certain patterns and it turns out, this is quite easy given you know how. You have to set LEDS_TRIGGER_TIMER
in your kernel config first. Now go to the sysfs folder of your LED, here it is:
cd /sys/class/leds/status
Have a look at the available triggers:
$ cat trigger [none] timer oneshot mtd nand-disk heartbeat gpio default-on panic
Switch to the timer trigger:
$ echo timer > trigger
Now two new files appear, delay_on
and delay_off
. Per default both contain the value 500 which lets the LED blink with 1 Hz. Without further looking into the trigger code or searching for documentation I assume those values are the on and off times in milliseconds. So have the LED blink with a certain frequency the following formular could be used:
f_LED = 1000 / ( delay_on + delay_off )
So to set my LEDs to blink at 2 Hz frequency, I set it up like this:
$ echo 250 > delay_on $ echo 250 > delay_off
Happy blinking!