#!/bin/sh /etc/rc.common # /etc/init.d/nvram - NVRAM setup # # This file handles the NVRAM quirks of various hardware. # Modified by me (see start() section) to set the LEDs early on to prevent # inadvertent cat feeder operation during a (re)boot! # Also see /etc/init.d/defaultled (symlinked from etc/rc.d/S96defaultled when # enabled with /etc/init.d/defaultled enable) which will set the LEDs back to # a default state ready for accepting feeding commands right at the end of # the boot process. # Prior to this script running there is around 4 seconds where white/orange # are off (5v) (feeding requested) and DMZ on (0v) (feeding allowed) thus # the feeder mechanism will be churning for this period! START=02 alias debug=${DEBUG:-:} nvram_default() { [ -z "$(nvram get $1)" ] && nvram set "$1=$2" } nvram_set() { # for the linksys fixup part [ "$(nvram get "$1")" = "$2" -a "$2" != "" ] || { COMMIT=1 /usr/sbin/nvram set "$1=$2" } } fixup_linksys() { # work around braindead CFE defaults in linksys routers boardtype=$(nvram get boardtype) boardnum=$(nvram get boardnum) boardflags=$(($(nvram get boardflags))) adm_switch="$(( ($boardflags & 0x80) >> 7 ))" [ -n "$(nvram get vxkilled)" ] && boardtype=0 # don't mess with the ram settings on the hacked cfe case "$(( $boardtype ))" in "1800") #0x708 if [ "$adm_switch" = 0 ]; then nvram_set sdram_init "$(printf 0x%04x $(( $(/usr/sbin/nvram get sdram_init) | 0x0100 )))" [ "$COMMIT" = 1 ] && { nvram_set clkfreq 216 nvram_set sdram_ncdl 0x0 nvram_set pa0itssit 62 nvram_set pa0b0 0x15eb nvram_set pa0b1 0xfa82 nvram_set pa0b2 0xfe66 nvram_set pa0maxpwr 0x4e } fi ;; "1127") #0x467 nvram_set sdram_init "$(printf 0x%04x $(( $(/usr/sbin/nvram get sdram_init) | 0x0100 )))" [ "$COMMIT" = 1 ] && { nvram_set sdram_ncdl 0x0 nvram_set pa0itssit 62 nvram_set pa0b0 0x168b nvram_set pa0b1 0xfabf nvram_set pa0b2 0xfeaf nvram_set pa0maxpwr 0x4e } ;; "1071") #0x042f nvram_set sdram_init "$(printf 0x%04x $(( $(/usr/sbin/nvram get sdram_init) | 0x0009 )))" [ "$COMMIT" = 1 ] && { nvram_set sdram_ncdl 0x0 } esac [ "$COMMIT" = "1" ] && nvram commit } start() { # --- Start of my modifications --- # These few lines added by me to set the LEDs early in the boot process # Remember: '1' = LED on = 0v # '0' = LED off = 5v # Turn white/orange LEDs on (0v) so as not to trigger feeding echo '1' > /proc/diag/led/ses_white echo '1' > /proc/diag/led/ses_orange # Turn DMZ LED off (3.3v) to activate the cutout # Note: It'll turn on again as per /etc/rc.d/S96defaultled # thus enabling feeding when requested echo '0' > /proc/diag/led/dmz # --- End of my modifications --- fixup_linksys # OFDM Power Offset is set incorrectly on many boards. # Setting it to 0 will increase the tx power to normal levels. nvram_set opo 0x0 [ "$(nvram get il0macaddr)" = "00:90:4c:5f:00:2a" ] && { # if default wifi mac, set two higher than the lan mac nvram set il0macaddr=$(nvram get et0macaddr| awk '{OFS=FS=":";for(x=7,y=2;--x;){$x=sprintf("%02x",(y+="0x"$x)%256);y/=256}print}') } }