Amber led on WRT3200ACM when VPN is down possible?

I have a simple question, but don't know if the answer is :grinning:

I'm using a WRT3200ACM with the latest firmware (19.07.4) and LuCi (19.07)
The connection l.e.d. can be amber or white.

I'm using the router as a VPN Client (ExpressVPN)

Is it possible to change the white led to amber when my VPN connection is down? So I can see on the hardware that the VPN connection is down. The ExpressVPN firmware has this as default, so technical it must be possible, but I'm clueless on this one.. (and most other things according to my wife)

ls /sys/class/leds/
root@OpenWrt:~# ls /sys/class/leds/
mmc0::                      pca963x:0:68:15             pca963x:rango:white:usb2    rango:white:sata
pca963x:0:68:10             pca963x:0:68:2              pca963x:rango:white:usb3_1  rango:white:wlan_2g
pca963x:0:68:11             pca963x:0:68:3              pca963x:rango:white:usb3_2  rango:white:wlan_5g
pca963x:0:68:12             pca963x:0:68:4              pca963x:rango:white:wan
pca963x:0:68:13             pca963x:rango:amber:wan     pca963x:rango:white:wps
pca963x:0:68:14             pca963x:rango:amber:wps     rango:white:power

I asume I'll have to add something to /etc/config/system

I have the wps led (not used) on (amber) when my VPN is up and off when down. with the following added to /etc/config/system

config led
        option dev 'tun0'
        option sysfs 'pca963x:rango:amber:wps'
        option default '0'
        option trigger 'netdev'
        list mode 'link'
        list mode 'tx'
        list mode 'rx'
        option name 'VPN UP'

It works, but still curious how to get the connection led change color, when the VPN is up or down.

you need to use hotplug for led change on interface up/down, i use it for my 4g backup status on r7800. adjust for your needs (tun0 should be your interface and pca963x:rango:amber:wan pca963x:rango:white:wan or pca963x:rango:amber:wps pca963x:rango:white:wps)

/etc/hotplug.d/iface/50-wanstatus

[ ifup = "$ACTION" ] && [ "$INTERFACE" = "wwan0" ] && {

# none white:power
echo "none" > /sys/class/leds/r7800\:white\:power/trigger

# hb:on amber:power
echo "heartbeat" > /sys/class/leds/r7800\:amber\:power/trigger

# none white:wan
echo "none" > /sys/class/leds/r7800\:white\:wan/trigger

# netdev:wwan0:rx:tx amber:wan
echo "netdev" > /sys/class/leds/r7800\:amber\:wan/trigger
echo "wwan0" > /sys/class/leds/r7800\:amber\:wan/device_name
echo "1" > /sys/class/leds/r7800\:amber\:wan/link
echo "1" > /sys/class/leds/r7800\:amber\:wan/tx
echo "1" > /sys/class/leds/r7800\:amber\:wan/rx
    }

[ ifdown = "$ACTION" ] && [ "$INTERFACE" = "wwan0" ] && {

# none amber:power
echo "none" > /sys/class/leds/r7800\:amber\:power/trigger

# hb:on white:power
echo "heartbeat" > /sys/class/leds/r7800\:white\:power/trigger

# none amber:wan
echo "none" > /sys/class/leds/r7800\:amber\:wan/trigger

# netdev:eth0.2:rx:tx white:wan
echo "netdev" > /sys/class/leds/r7800\:white\:wan/trigger
echo "eth0.2" > /sys/class/leds/r7800\:white\:wan/device_name
echo "1" > /sys/class/leds/r7800\:white\:wan/link
echo "1" > /sys/class/leds/r7800\:white\:wan/tx
echo "1" > /sys/class/leds/r7800\:white\:wan/rx
  }

leds in /etc/config/system:

/etc/config/system

config led
        option default '0'
        option sysfs 'r7800:white:power'
        option trigger 'heartbeat'
        option name 'power_hb'

config led
        option default '0'
        option trigger 'none'
        option name 'power_amber'
        option sysfs 'r7800:amber:power'
        
config led
        option default '0'
        option trigger 'netdev'
        option dev 'eth0.2'
        option sysfs 'r7800:white:wan'
        option name 'wan_vdsl'
        list mode 'link'
        list mode 'tx'
        list mode 'rx'

config led
        option default '0'
        option sysfs 'r7800:amber:wan'
        option name 'wan_amber'
        option trigger 'none
1 Like

Hi, i just configured hotplug (thanks for that)
I have no power led I can edit, so left that out of the config.

iface file (in /etc/hotplug.d/iface/50-wanstatus

[ ifup = "$ACTION" ] && [ "$INTERFACE" = "tun0" ] && {

# none white:wan
echo "none" > /sys/class/leds/pca963x\:rango\:white\:wan/trigger

# netdev:tun0:rx:tx amber:wan
echo "netdev" > /sys/class/leds/pca963x\:rango\:amber\:wan/trigger
echo "tun0" > /sys/class/leds/pca963x\:rango\:amber\:wan/device_name
echo "1" > /sys/class/leds/pca963x\:rango\:amber\:wan/link
echo "1" > /sys/class/leds/pca963x\:rango\:amber\:wan/tx
echo "1" > /sys/class/leds/pca963x\:rango\:amber\:wan/rx
    }

[ ifdown = "$ACTION" ] && [ "$INTERFACE" = "tun0" ] && {

# none amber:wan
echo "none" > /sys/class/leds/pca963x\:rango\:amber\:wan/trigger

# netdev:eth1.2:rx:tx white:wan
echo "netdev" > /sys/class/leds/pca963x\:rango\:white\:wan/trigger
echo "eth1.2" > /sys/class/leds/pca963x\:rango\:white\:wan/device_name
echo "1" > /sys/class/leds/pca963x\:rango\:white\:wan/link
echo "1" > /sys/class/leds/pca963x\:rango\:white\:wan/tx
echo "1" > /sys/class/leds/pca963x\:rango\:white\:wan/rx
  }

And my /etc/config/system file

config led
        option default '0'
        option trigger 'netdev'
        option sysfs 'pca963x:rango:amber:wan'
        option name 'wan_amber'
        list mode 'link'
        list mode 'tx'
        list mode 'rx'
        option dev 'tun0'

config led
        option default '0'
        option sysfs 'pca963x:rango:white:wan'
        option name 'wan_white'
        option trigger 'netdev'
        list mode 'link'
        list mode 'tx'
        list mode 'rx'
        option dev 'eth1.2'

So now, when my vpn is up, the led is amber and when my vpn is down the led is white. It works, but I want this the other way around (white when vpn is up and amber when it's down)

I thought just change al the white to amber and al the amber to white right?

Then the led stays white in both states. Any ideas?

Little update;
I changed INTERFACE to DEVICE as shown in your added link. and changed white into amber en visa versa.

Now the white led is on if vpn is up and off when the vpn is down. So when the vpn (tun0) is down, it does stop the white led, but doesn't start the amber option.

[ ifup = "$ACTION" ] && [ "$DEVICE" = "tun0" ] && {

echo "none" > /sys/class/leds/pca963x\:rango\:amber\:wan/trigger

# netdev:tun0:rx:tx white:wan
echo "netdev" > /sys/class/leds/pca963x\:rango\:white\:wan/trigger
echo "tun0" > /sys/class/leds/pca963x\:rango\:white\:wan/device_name
echo "1" > /sys/class/leds/pca963x\:rango\:white\:wan/link
echo "1" > /sys/class/leds/pca963x\:rango\:white\:wan/tx
echo "1" > /sys/class/leds/pca963x\:rango\:white\:wan/rx
    }

[ ifdown = "$ACTION" ] && [ "$DEVICE" = "tun0" ] && {

echo "none" > /sys/class/leds/pca963x\:rango\:white\:wan/trigger

# netdev:eth1.2:rx:tx amber:wan
echo "netdev" > /sys/class/leds/pca963x\:rango\:amber\:wan/trigger
echo "eth1.2" > /sys/class/leds/pca963x\:rango\:amber\:wan/device_name
echo "1" > /sys/class/leds/pca963x\:rango\:amber\:wan/link
echo "1" > /sys/class/leds/pca963x\:rango\:amber\:wan/tx
echo "1" > /sys/class/leds/pca963x\:rango\:amber\:wan/rx
  }
config led
        option default '0'
        option sysfs 'pca963x:rango:white:wan'
        option trigger 'netdev'
        list mode 'link'
        list mode 'tx'
        list mode 'rx'
        option dev 'tun0'
        option name 'wan vpn up'

config led
        option default '0'
        option trigger 'netdev'
        option sysfs 'pca963x:rango:amber:wan'
        list mode 'link'
        list mode 'tx'
        list mode 'rx'
        option name 'wan vpn down'
        option dev 'eth1.2'

Where eth1.2 is my WAN

well my post was a bit messy, should be more clear now..

first let's define leds:

  1. wan_amber netdev trigger for eth1.2 for main ISP connectivity

  2. wan_white trigger none no interface (just a dummy definition so we can change it later)

config led
        option default '0'
        option trigger 'netdev'
        option sysfs 'pca963x:rango:amber:wan'
        option name 'wan_amber'
        list mode 'link'
        list mode 'tx'
        list mode 'rx'
        option dev 'eth1.2'

config led
        option default '0'
        option sysfs 'pca963x:rango:white:wan'
        option name 'wan_white'
        option trigger 'none'

then set up hotplug script vpn up white, vpn down amber:

[ ifup = "$ACTION" ] && [ "$DEVICE" = "tun0" ] && {

# tun0 goes up trigger none to wan_amber
echo "none" > /sys/class/leds/pca963x\:rango\:amber\:wan/trigger

# and set trigger netdev:tun0:rx:tx to wan_white
echo "netdev" > /sys/class/leds/pca963x\:rango\:white\:wan/trigger
echo "tun0" > /sys/class/leds/pca963x\:rango\:white\:wan/device_name
echo "1" > /sys/class/leds/pca963x\:rango\:white\:wan/link
echo "1" > /sys/class/leds/pca963x\:rango\:white\:wan/tx
echo "1" > /sys/class/leds/pca963x\:rango\:white\:wan/rx
    }

[ ifdown = "$ACTION" ] && [ "$DEVICE" = "tun0" ] && {

# tun0 goes down trigger none to wan_white
echo "none" > /sys/class/leds/pca963x\:rango\:white\:wan/trigger

# and trigger netdev:eth1.2:rx:tx to wan_amber
echo "netdev" > /sys/class/leds/pca963x\:rango\:amber\:wan/trigger
echo "eth1.2" > /sys/class/leds/pca963x\:rango\:amber\:wan/device_name
echo "1" > /sys/class/leds/pca963x\:rango\:amber\:wan/link
echo "1" > /sys/class/leds/pca963x\:rango\:amber\:wan/tx
echo "1" > /sys/class/leds/pca963x\:rango\:amber\:wan/rx
  }

edit: try INTERFACE instead of DEVICE if you have problems.

2 Likes

Thanks for your reply, suddenly something maked sense to me :wink:

With INTERFACE or DEVICE = "tun0" it didn't work, but when I changed it with INTERFACE = "vpnclient" (the name of my interface) it workt. I was convinced that I already tried that yesterday, but nevertheless is works!

:+1:

please mark as solved after some testing if it works correctly.

@jesanor thanks for your help :wink:

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