[solved] Change LED configuration without writing to flash

I'm changing the LED configuration to reduce their flashing in the night while still providing their normal functionality at day. To do this I have written a short script which is run twice a day and I want to improve it to avoid writing the settings to flash to reduce wear on the ROM-chip.

#!/bin/sh

if [ "$1" == "on" ]; then
    uci set system.led_wlan.trigger='phy0tpt'
    uci set system.led_wan.trigger='netdev'
    uci set system.led_lan.trigger='netdev'

    uci set system.@led[3].sysfs='amber:info'
    uci set system.@led[3].trigger='heartbeat'

    uci set system.@led[4].trigger='none'
    uci set system.@led[4].default='1'
 
    uci commit
    /etc/init.d/led restart
    echo "Switch on"
elif [ "$1" == "off" ]; then
    leds='led_wan led_wlan led_lan @led[3] @led[4]'

    for i in $leds ;
    do
        uci set "system.$i.trigger"="none"
        uci set "system.$i.default"="0"
    done

    uci set system.@led[3].sysfs='red:info'
    uci set system.@led[3].default='1'

    uci commit
    /etc/init.d/led restart
    echo "Switch off"
else
    echo "Unknown parameter"
fi

Now I know that I can do some modifications in /sys/class/leds/, but I haven't figured out how those uci-commands map to those files (and whether they will still write to flash). I can switch leds on or off by setting brightness, but if then the trigger gets reset and I cannot find a way to write to trigger.

Is there some way to apply those changes (or similar) without a need to write to flash?

Hi

maybe

cat /sys/class/leds/green:user/device_name
switch.1

cat /sys/class/leds/green:user/trigger 
none timer heartbeat default-on [netdev] phy0rx phy0tx phy0assoc phy0radio phy0tpt phy1rx phy1tx phy1assoc phy1radio phy1tpt

so, you could see that green:user led is triggerred with netdev named "switch.1"

this way, you could restore triggers when you want to turn on leds

there is a command order which you must respect

#turn off
echo none > /sys/class/leds/green:user/trigger 

#turn on
echo netdev > /sys/class/leds/green:user/trigger 
echo switch.1 > /sys/class/leds/green:user/device_name 
echo 1 > /sys/class/leds/green:user/rx
echo 1 > /sys/class/leds/green:user/tx

Nice this works now except for writing 1 to link when using netdev (which exists normally and could be enabled in the GUI). But it still works for me fine and for anyone interested here is the resulting file:

#!/bin/sh

if [ "$1" == "on" ]; then
	echo default-on > /sys/class/leds/green:power/trigger

    echo netdev > /sys/class/leds/green:wan/trigger 
    echo eth1 > /sys/class/leds/green:wan/device_name 
    echo 1 > /sys/class/leds/green:wan/rx
    echo 1 > /sys/class/leds/green:wan/tx

	echo phy0tpt > /sys/class/leds/green:wlan/trigger

    echo netdev > /sys/class/leds/green:lan/trigger 
    echo br-lan > /sys/class/leds/green:lan/device_name 
    echo 1 > /sys/class/leds/green:lan/rx
    echo 1 > /sys/class/leds/green:lan/tx

    echo heartbeat > /sys/class/leds/amber:info/trigger
	
	echo none > /sys/class/leds/red:info/trigger

    echo "Switch on"
elif [ "$1" == "off" ]; then
	echo none > /sys/class/leds/green:power/trigger
    echo none > /sys/class/leds/green:wan/trigger
	echo none > /sys/class/leds/green:wlan/trigger
    echo none > /sys/class/leds/green:lan/trigger
    echo none > /sys/class/leds/amber:info/trigger
	
	echo default-on > /sys/class/leds/red:info/trigger

    echo "Switch off"
else
    echo "Unknown parameter"
fi

Although now as the settings don't get overwritten I could simplify the script by just restarting the led-service when enabling:

#!/bin/sh

if [ "$1" == "on" ]; then
	/etc/init.d/led restart

    echo "Switch on"
elif [ "$1" == "off" ]; then
	echo none > /sys/class/leds/green:power/trigger
    echo none > /sys/class/leds/green:wan/trigger
	echo none > /sys/class/leds/green:wlan/trigger
    echo none > /sys/class/leds/green:lan/trigger
    echo none > /sys/class/leds/amber:info/trigger
	
	echo default-on > /sys/class/leds/red:info/trigger

    echo "Switch off"
else
    echo "Unknown parameter"
fi
1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.