Hi everybody

I've found that some routers are not turning on and off their LEDs
properly. I've tested it on Edimax br-610k.
The problem is that their LED is not switching on if brightness is not set
to 255 (their max_brightness level) in sysfs.
Values <255 are ignored.

I've made simple patch for led management scripts.
It now checks the max_brightness value from sysfs and sets LED to maximum
brightness when it should be turned on.

Hope you find it useful!

Best regards,

Diff below:

diff -cNrB --exclude .svn
attitude_adjustment_12.09.orig/package/base-files/files/etc/init.d/led
attitude_adjustment_12.09.new/package/base-files/files/etc/init.d/led
*** attitude_adjustment_12.09.orig/package/base-files/files/etc/init.d/led
2014-05-25
14:42:48.378219406 +0200
--- attitude_adjustment_12.09.new/package/base-files/files/etc/init.d/led
2014-05-25
15:01:16.599714779 +0200
***************
*** 13,18 ****
--- 13,19 ----
  local delayon
  local delayoff
  local interval
+ local max_brightness

  config_get sysfs $1 sysfs
  config_get name $1 name "$sysfs"
***************
*** 25,35 ****
  config_get interval $1 interval "50"
  config_get port_state $1 port_state

  [ -e /sys/class/leds/${sysfs}/brightness ] && {
  echo "setting up led ${name}"
  [ "$default" != nil ] && {
  [ $default -eq 1 ] &&
! echo 1 >/sys/class/leds/${sysfs}/brightness
  [ $default -eq 1 ] ||
  echo 0 >/sys/class/leds/${sysfs}/brightness
  }
--- 26,38 ----
  config_get interval $1 interval "50"
  config_get port_state $1 port_state

+ max_brightness = `cat /sys/class/leds/${sysfs}/max_brightness`
+
  [ -e /sys/class/leds/${sysfs}/brightness ] && {
  echo "setting up led ${name}"
  [ "$default" != nil ] && {
  [ $default -eq 1 ] &&
! echo $max_brightness >/sys/class/leds/${sysfs}/brightness
  [ $default -eq 1 ] ||
  echo 0 >/sys/class/leds/${sysfs}/brightness
  }
diff -cNrB --exclude .svn
attitude_adjustment_12.09.orig/package/base-files/files/sbin/led.sh
attitude_adjustment_12.09.new/package/base-files/files/sbin/led.sh
*** attitude_adjustment_12.09.orig/package/base-files/files/sbin/led.sh
2014-05-25
14:42:48.398219505 +0200
--- attitude_adjustment_12.09.new/package/base-files/files/sbin/led.sh
2014-05-25
15:01:38.711824427 +0200
***************
*** 7,17 ****
  do_led() {
  local name
  local sysfs
  config_get name $1 name
  config_get sysfs $1 sysfs
  [ "$name" == "$NAME" -o "$sysfs" = "$NAME" -a -e
"/sys/class/leds/${sysfs}" ] && {
  [ "$ACTION" == "set" ] &&
! echo 1 >/sys/class/leds/${sysfs}/brightness \
  || echo 0 >/sys/class/leds/${sysfs}/brightness
  exit 0
  }
--- 7,19 ----
  do_led() {
  local name
  local sysfs
+ local max_brightness
  config_get name $1 name
  config_get sysfs $1 sysfs
+ max_brightness = `cat /sys/class/leds/${sysfs}/max_brightness`
  [ "$name" == "$NAME" -o "$sysfs" = "$NAME" -a -e
"/sys/class/leds/${sysfs}" ] && {
  [ "$ACTION" == "set" ] &&
! echo $max_brightness >/sys/class/leds/${sysfs}/brightness \
  || echo 0 >/sys/class/leds/${sysfs}/brightness
  exit 0

-- 
Karol Pucyński
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to