summaryrefslogtreecommitdiffstats
path: root/target/linux/package/base-files/files/brcm-2.4/etc/init.d/S05nvram
blob: b985948d78f1ba1372ca505fe3a900766b18f52a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#!/bin/sh
# NVRAM setup
#
# This file handles the NVRAM quirks of various hardware.

. /etc/network.overrides
alias debug=${DEBUG:-:}

# WGT634u
grep 'mtd0: 00060000' /proc/mtd 2>&- >&- && exit

remap () {
	for type in lan wifi wan pppoe
	do
		for s in '' s
		do
			eval nvram set ${type}_ifname$s=\"$(nvram get ${type}_ifname$s|sed s/$1/$2/g)\" 
		done
	done
}

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"
	}
}

# work around braindead CFE defaults in linksys routers
boardtype=$(nvram get boardtype)
boardflags=$(($(nvram get boardflags)))
[ "$boardtype" = "bcm94710dev" ] && boardtype="0xdeadbeef"
adm_switch="$(( ($boardflags & 0x80) >> 7 ))"
case "$(( $boardtype ))" in
	"$((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
				nvram_set pa0b0 0x15eb
				nvram_set pa0b1 0xfa82
				nvram_set pa0b2 0xfe66
				nvram_set pa0maxpwr 0x4e
			}
		fi
	;;
	"$((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
			nvram_set pa0b1 0xfabf
			nvram_set pa0b2 0xfeaf
			nvram_set pa0maxpwr 0x4e
		}
	;;
esac
[ "$COMMIT" = "1" ] && nvram commit


# linksys bug; remove when not using static configuration for lan
nvram set lan_proto="static"

# hacks for wrt54g 1.x hardware
[  "$(nvram get boardnum)"  = "42" \
-a "$(nvram get boardtype)" = "bcm94710dev" ] && {
	debug "### wrt54g 1.x hack ###"
	nvram set vlan1hwname="et0"
	nvram set vlan2hwname="et0"
	remap eth0 vlan2
	remap eth1 vlan1
}

# hacks for asus wl-500g deluxe
[  "$(nvram get boardtype)" = "bcm95365r" \
-a "$(nvram get boardnum)" = "45" ] && {
	debug "### wl-500g deluxe hacks ###"
	nvram set vlan0hwname="et0"
	nvram set vlan1hwname="et0"
	remap eth0.1 vlan0
	remap eth0 vlan1

	# set up the vlan*ports variables for the asus wl-500g deluxe
	# if they don't already exist 
	nvram_default vlan0ports "1 2 3 4 5*"
	nvram_default vlan1ports "0 5"
}

# 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"
	;;
	*)
		# wl-500g defaults. these are placed here, because WL-HDD and WL-300g
		# might have the same nvram settings.
		[ "$(nvram get boardnum)" = "asusX" \
		-a "$(nvram get boardtype)" = "bcm94710dev" ] && {
			nvram_default wan_device "eth1"
		}
	;;
esac

# hacks for wap54g hardware
[  "$(nvram get boardnum)" = "2" \
-o "$(nvram get boardnum)" = "1024" ] && {
	debug "### wap54g hack ###"
	nvram set wan_ifname="none"
}

# hacks for buffalo wla2-g54l
[  "$(nvram get boardnum)" = "00" \
-a "$(nvram get product_name)" = "Product_name" \
-o "$(nvram get product_name)" = "WLA2-G54L" ] && {
	debug "### wla2-g54l hacks ###"
	nvram set wan_ifname="none"
	nvram set lan_ifnames="vlan0"
}

# needed at least for wrt54gs v1.1 and wrt54g v2.0, v2.2
[ \! -z "$(nvram get boardrev)" ] && {
	nvram_default wl0id 0x4320
}

# defaults
nvram_default lan_ifname "br0"
nvram_default lan_ifnames "$FAILSAFE_ifnames"

nvram_default wan_ifname "vlan1"
nvram_default wan_device "vlan1"
nvram_default wan_proto "dhcp"

nvram_default wl0_ssid OpenWrt
nvram_default wl0_mode ap
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}')
}