#
# This file handles the NVRAM quirks of various hardware.
-. /etc/nvram.overrides
alias debug=${DEBUG:-:}
remap () {
}
}
+fixup_lan() { # fix for wrong lan_ifnames default
+ lan_ifnames="$(nvram get lan_ifnames)"
+ [ "${lan_ifnames%% *}" = "$1" ] || \
+ nvram set lan_ifnames="$2"
+}
+
# work around braindead CFE defaults in linksys routers
boardtype=$(nvram get boardtype)
+boardnum=$(nvram get boardnum)
boardflags=$(($(nvram get boardflags)))
-[ "$boardtype" = "bcm4710dev" ] && boardtype="0xdeadbeef"
adm_switch="$(( ($boardflags & 0x80) >> 7 ))"
+
case "$(( $boardtype ))" in
- "$((0x708))")
+ "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 sdram_config 0x0062
nvram_set clkfreq 216
nvram_set sdram_ncdl 0x0
nvram_set pa0itssit 62
}
fi
;;
- "$((0x467))")
+ "1127") #0x467
nvram_set sdram_init "$(printf 0x%04x $(( $(/usr/sbin/nvram get sdram_init) | 0x0100 )))"
[ "$COMMIT" = 1 ] && {
- nvram_set sdram_config 0x0062
nvram_set sdram_ncdl 0x0
nvram_set pa0itssit 62
nvram_set pa0b0 0x168b
esac
[ "$COMMIT" = "1" ] && nvram commit
-
-# linksys bug; remove when not using static configuration for lan
-nvram set lan_proto="static"
+# linksys bug; use 'dhcpclient' or similar as lan_proto if you want to use dhcp
+[ "$(nvram get lan_proto)" = "dhcp" ] && nvram set lan_proto="static"
# hacks for wrt54g 1.x hardware
-[ "$(nvram get boardnum)" = "42" \
--a "$(nvram get boardtype)" = "bcm94710dev" ] && {
+[ "$boardnum" = "42" \
+-a "$boardtype" = "bcm94710dev" ] && {
debug "### wrt54g 1.x hack ###"
- nvram set vlan1hwname="et0"
- nvram set vlan2hwname="et0"
remap eth0 vlan2
remap eth1 vlan1
+ nvram_default vlan1hwname "et0"
+ nvram_default vlan2hwname "et0"
+ nvram_default lan_ifnames "vlan2 eth2"
}
# hacks for asus wl-500g deluxe
-[ "$(nvram get boardtype)" = "bcm95365r" \
--a "$(nvram get boardnum)" = "45" ] && {
+[ "$boardnum" = "45" \
+-a "$boardtype" = "bcm95365r" ] && {
debug "### wl-500g deluxe hacks ###"
- nvram set vlan0hwname="et0"
- nvram set vlan1hwname="et0"
remap eth0.1 vlan0
remap eth0 vlan1
+ nvram_default vlan0hwname "et0"
+ nvram_default vlan1hwname "et0"
+ nvram_default lan_ifnames "vlan0 eth1"
# set up the vlan*ports variables for the asus wl-500g deluxe
# if they don't already exist
}
# hacks for asus
-case "$(nvram get productid)" in
- WL300g)
- debug "### wl-300g hacks ###"
- nvram set lan_ifnames="eth0 eth2"
- nvram set wan_ifname="none"
- ;;
- WLHDD)
- debug "### wl-hdd hacks ###"
- nvram set lan_ifnames="eth1 eth2"
- nvram set wan_ifname="none"
- ;;
-esac
+[ "$boardnum" = "asusX" ] && {
+ debug "### asus hacks ###"
+ case "$(($(nvram get et1phyaddr)))" in
+ 1) # WL-HDD
+ lan=eth1
+ wan=none
+ ;;
+ *)
+ lan=eth0
+ [ "$boardtype" = "bcm94710dev" ] && wan=eth1 || wan=none
+ ;;
+ esac
+
+ fixup_lan "$lan" "$lan eth2"
+ nvram_default wan_ifname "$wan"
+}
# hacks for wap54g hardware
-[ "$(nvram get boardnum)" = "2" \
--o "$(nvram get boardnum)" = "1024" ] && {
+[ "$boardnum" = "2" \
+-o "$boardnum" = "1024" ] && {
debug "### wap54g hack ###"
- nvram set wan_ifname="none"
+ nvram_default wan_ifname "none"
+ nvram_default lan_ifnames "eth0 eth1"
}
# hacks for buffalo wla2-g54l
-[ "$(nvram get boardnum)" = "00" \
--a "$(nvram get product_name)" = "Product_name" \
--o "$(nvram get product_name)" = "WLA2-G54L" ] && {
+[ "$boardnum" = "00" \
+-a "$product_name" = "Product_name" \
+-o "$product_name" = "WLA2-G54L" ] && {
debug "### wla2-g54l hacks ###"
- nvram set wan_ifname="none"
- nvram set lan_ifnames="vlan0"
+ nvram_default wan_ifname "none"
+ fixup_lan "vlan0" "vlan0 eth1"
+}
+
+# wrtsl54gs vlan defaults
+[ "$boardtype" = "0x042f" \
+-a "$boardnum" = "42" \
+-a "$boardflags" = "24" ] && {
+ nvram_default vlan0hwname "et0"
+ nvram_default vlan0ports "0 1 2 3 5u"
+ nvram_default vlan1hwname "et0"
+ nvram_default vlan1ports "4 5"
}
# needed at least for wrt54gs v1.1 and wrt54g v2.0, v2.2
nvram_default wl0id 0x4320
}
-WAN_PROTO="$(nvram get wan_proto)"
-[ "$WAN_PROTO" = "pptp" \
--o "$WAN_PROTO" = "pppoe" ] && {
- WAN_IFNAME="$(nvram get wan_ifname)"
- [ "${WAN_IFNAME%%[0-9]*}" = "ppp" ] || {
- nvram set wan_ifname=ppp0
- nvram set ${WAN_PROTO}_ifname="$WAN_IFNAME"
- }
-}
+# hack for some motorola routers
+nvram unset wl0gpio0
-# defaults
+# defaults, can be overridden by hardware-specific nvram_default commands
nvram_default lan_ifname "br0"
-nvram_default lan_ifnames "$FAILSAFE_ifnames"
+nvram_default lan_ifnames "vlan0 eth1 eth2"
nvram_default wan_ifname "vlan1"
+nvram_default wan_device "vlan1"
nvram_default wan_proto "dhcp"
nvram_default wl0_ssid OpenWrt
nvram_default wl0_infra 1
nvram_default wl0_radio 1
+WAN_PROTO="$(nvram get wan_proto)"
+WAN_IFNAME="$(nvram get wan_ifname)"
+case "$WAN_PROTO" in
+ pp*) [ "${WAN_IFNAME%%[0-9]*}" = "ppp" ] || nvram set wan_ifname=ppp0;;
+ *) [ "${WAN_IFNAME%%[0-9]*}" = "ppp" ] && nvram set wan_ifname="$(nvram get wan_device)";;
+esac
+
[ "$(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}')
}
-