diff --git a/packages/bsp/common/lib/systemd/system/armbian-led-state.service b/packages/bsp/common/lib/systemd/system/armbian-led-state.service index 550eebbc1..d64960c66 100644 --- a/packages/bsp/common/lib/systemd/system/armbian-led-state.service +++ b/packages/bsp/common/lib/systemd/system/armbian-led-state.service @@ -4,7 +4,7 @@ [Unit] Description=Armbian leds state -After=timers.target +After=sysinit.target Conflicts=shutdown.target DefaultDependencies=no diff --git a/packages/bsp/common/usr/lib/armbian/armbian-led-state-save.sh b/packages/bsp/common/usr/lib/armbian/armbian-led-state-save.sh index 040842735..871ce5368 100755 --- a/packages/bsp/common/usr/lib/armbian/armbian-led-state-save.sh +++ b/packages/bsp/common/usr/lib/armbian/armbian-led-state-save.sh @@ -35,18 +35,25 @@ function store_led() { # In case the trigger is any of the kbd-*, don't store any other parameter # This avoids num/scroll/capslock from being restored at startup - # In case trigger is representing link-state for any network, don't store its previous state - # This avoids ghost wan/lan/etc (led up while cable unplugged) - [[ "$TRIGGER_VALUE" =~ kbd-* || "$TRIGGER_VALUE" == *":link" ]] && return + [[ "$TRIGGER_VALUE" =~ kbd-* ]] && return COMMAND_PARAMS="$CMD_FIND $PATH/ -maxdepth 1 -type f ! -iname uevent ! -iname trigger -perm /u+w -printf %f\\n" PARAMS=$($COMMAND_PARAMS) + # In case trigger is representing link-state for any network, use + # bash substitution to remove the brightness parameter and avoid + # ghost wan/lan/etc (led up while cable unplugged) + [[ "$TRIGGER_VALUE" == *":link" ]] && PARAMS=${PARAMS//"brightness"/} + for PARAM in $PARAMS; do PARAM_PATH="$PATH/$PARAM" VALUE=$(<$PARAM_PATH) + # If the variable contains non-printable characters + # suppose it contains binary and skip it + [[ "$VALUE" =~ [[:cntrl:]] ]] && continue + echo "$PARAM=$VALUE" >> $DESTINATION done @@ -60,9 +67,7 @@ for LED in /sys/class/leds/*; do [[ -d "$LED" ]] || continue # Skip saving state for directories starting with enP e.g. enP1p1s0-0::lan enP2p1s0-2::lan etc. etc. - if [[ "$(/usr/bin/basename "$LED")" == enP* ]]; then - continue - fi + [[ "$(/usr/bin/basename "$LED")" == enP* ]] && continue store_led $LED $STATE_PATH echo >> $STATE_PATH