summaryrefslogtreecommitdiffstats
path: root/target/linux/ramips/base-files/lib
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ramips/base-files/lib')
-rw-r--r--target/linux/ramips/base-files/lib/preinit/03_preinit_do_ramips.sh2
-rw-r--r--target/linux/ramips/base-files/lib/preinit/04_disable_wnce2001_flash_checksumming43
-rw-r--r--target/linux/ramips/base-files/lib/preinit/06_set_iface_mac42
-rw-r--r--target/linux/ramips/base-files/lib/preinit/07_set_preinit_iface_ramips12
-rwxr-xr-xtarget/linux/ramips/base-files/lib/ramips.sh125
-rwxr-xr-xtarget/linux/ramips/base-files/lib/upgrade/platform.sh28
6 files changed, 197 insertions, 55 deletions
diff --git a/target/linux/ramips/base-files/lib/preinit/03_preinit_do_ramips.sh b/target/linux/ramips/base-files/lib/preinit/03_preinit_do_ramips.sh
index e76418dad..31ef5f814 100644
--- a/target/linux/ramips/base-files/lib/preinit/03_preinit_do_ramips.sh
+++ b/target/linux/ramips/base-files/lib/preinit/03_preinit_do_ramips.sh
@@ -2,6 +2,8 @@
do_ramips() {
. /lib/ramips.sh
+
+ ramips_board_detect
}
boot_hook_add preinit_main do_ramips
diff --git a/target/linux/ramips/base-files/lib/preinit/04_disable_wnce2001_flash_checksumming b/target/linux/ramips/base-files/lib/preinit/04_disable_wnce2001_flash_checksumming
new file mode 100644
index 000000000..67a1746f1
--- /dev/null
+++ b/target/linux/ramips/base-files/lib/preinit/04_disable_wnce2001_flash_checksumming
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+# Netgear WNCE2001 has does a checksum check on boot and goes into recovery
+# tftp mode when the check fails. Initializing the JFFS2 partition triggers
+# this, so we make sure to zero checksum and size to be checksummed before
+# that happens, so this needs to run very early during boot.
+
+do_wnce2001_checksumming_disable() {
+ . /lib/ramips.sh
+
+ local board=$(ramips_board_name)
+
+ case "$board" in
+ wnce2001)
+ echo "Board is WNCE2001, updating checksum partition..."
+ local zeroes=/dev/zero
+ local tmpfile=/tmp/wnce2001_checksum
+ local partname=checksum
+ local mtd=$(find_mtd_part $partname)
+ dd if=$mtd of=$tmpfile bs=80 count=1 2>/dev/null
+ signature=$(dd if=$tmpfile bs=1 skip=24 count=20 2>/dev/null)
+ checksum=$(dd if=$tmpfile bs=1 count=4 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"')
+ if [ "$signature" != "RT3052-AP-WNCE2001-3" ]; then
+ echo "Signature of checksum partition is wrong, bailing."
+ return 0
+ fi
+ if [ "$checksum" != "00000000" ]; then
+ echo "Checksum is set, zeroing."
+ # zero out checksum
+ dd if=$zeroes of=$tmpfile conv=notrunc bs=1 seek=0 count=4 2>/dev/null
+ # zero out bytecount to be checksummed
+ dd if=$zeroes of=$tmpfile conv=notrunc bs=1 seek=60 count=4 2>/dev/null
+ mtd write $tmpfile $partname
+ else
+ echo "Checksum is already zero, nothing to do."
+ fi
+ ;;
+ esac
+
+ return 0
+}
+
+boot_hook_add preinit_main do_wnce2001_checksumming_disable
diff --git a/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac b/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
index 591c549d1..022f72e24 100644
--- a/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
+++ b/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
@@ -5,14 +5,24 @@
preinit_set_mac_address() {
local mac
+ . /lib/functions.sh
. /lib/ramips.sh
case $(ramips_board_name) in
- 3g-6200n)
- mac=$(ramips_get_mac_binary factory 4)
+ 3g-6200n |\
+ 3g-6200nl |\
+ 3g300m | \
+ dir-620-d1 |\
+ w150m | \
+ mzk-w300nh2 |\
+ wl-330n |\
+ wl-330n3g)
+ mac=$(mtd_get_mac_binary factory 4)
ifconfig eth0 hw ether $mac 2>/dev/null
;;
bc2 |\
+ broadway |\
+ d105 |\
dir-620-a1 |\
esr-9753 |\
freestation5 |\
@@ -20,44 +30,54 @@ preinit_set_mac_address() {
psr-680w |\
rt-n56u |\
sl-r7205)
- mac=$(ramips_get_mac_binary factory 4)
- mac=$(maccalc or "$mac" "02:00:00:00:00:00")
+ mac=$(mtd_get_mac_binary factory 4)
+ mac=$(macaddr_setbit_la "$mac")
ifconfig eth0 hw ether $mac 2>/dev/null
;;
+ asl26555 |\
dir-300-b1 |\
dir-300-b2 |\
dir-600-b1)
- mac=$(ramips_get_mac_binary devdata 16388)
+ mac=$(mtd_get_mac_binary devdata 16388)
ifconfig eth0 hw ether $mac 2>/dev/null
;;
+ dir-645)
+ mac=$(mtd_get_mac_ascii nvram lanmac)
+ mac=$(macaddr_setbit_la "$mac")
+ ifconfig eth0 hw ether $mac 2>/dev/null
+ ;;
dap-1350)
- mac=$(ramips_get_mac_binary devdata 46)
+ mac=$(mtd_get_mac_binary devdata 46)
ifconfig eth0 hw ether $mac 2>/dev/null
;;
all0239-3g |\
all0256n |\
all5002 |\
+ all5003 |\
carambola |\
dir-615-h1 |\
fonera20n |\
+ rt-n13u |\
hw550-3g |\
nbg-419n |\
omni-emb |\
+ omni-emb-hpm |\
+ tew-691gr |\
+ tew-692gr |\
w306r-v20 |\
w502u |\
- wl-330n |\
- wl-330n3g |\
wr6202 |\
+ wnce2001 |\
xdxrn502j)
- mac=$(ramips_get_mac_binary factory 40)
+ mac=$(mtd_get_mac_binary factory 40)
ifconfig eth0 hw ether $mac 2>/dev/null
;;
wl341v3)
- mac=$(ramips_get_mac_binary board-nvram 65440)
+ mac=$(mtd_get_mac_binary board-nvram 65440)
ifconfig eth0 hw ether $mac 2>/dev/null
;;
rt-n10-plus)
- mac=$(ramips_get_mac_binary devconf 4)
+ mac=$(mtd_get_mac_binary devconf 4)
ifconfig eth0 hw ether $mac 2>/dev/null
;;
esac
diff --git a/target/linux/ramips/base-files/lib/preinit/07_set_preinit_iface_ramips b/target/linux/ramips/base-files/lib/preinit/07_set_preinit_iface_ramips
new file mode 100644
index 000000000..c8b7f2ad3
--- /dev/null
+++ b/target/linux/ramips/base-files/lib/preinit/07_set_preinit_iface_ramips
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+# Copyright (C) 2013 OpenWrt.org
+#
+
+. /lib/ramips.sh
+
+ramips_set_preinit_iface() {
+ ifname=eth0
+}
+
+boot_hook_add preinit_main ramips_set_preinit_iface
diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
index 90c28b7ab..63af00d03 100755
--- a/target/linux/ramips/base-files/lib/ramips.sh
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -1,46 +1,12 @@
#!/bin/sh
#
-# Copyright (C) 2010 OpenWrt.org
+# Copyright (C) 2010-2013 OpenWrt.org
#
-ramips_get_mac_binary()
-{
- local mtdname="$1"
- local seek="$2"
- local part
+RAMIPS_BOARD_NAME=
+RAMIPS_MODEL=
- . /lib/functions.sh
-
- part=$(find_mtd_part "$mtdname")
- if [ -z "$part" ]; then
- echo "ramips_get_mac_binary: partition $mtdname not found!" >&2
- return
- fi
-
- dd bs=1 skip=$seek count=6 if=$part 2>/dev/null | /usr/sbin/maccalc bin2mac
-}
-
-ramips_get_mac_nvram()
-{
- local mtdname="$1"
- local key="$2"
- local part
- local mac_dirty
-
- . /lib/functions.sh
-
- part=$(find_mtd_part "$mtdname")
- if [ -z "$part" ]; then
- echo "ramips_get_mac_nvram: partition $mtdname not found!" >&2
- return
- fi
-
- mac_dirty=$(strings "$part" | sed -n 's/'"$key"'=//p')
- # "canonicalize" mac
- /usr/sbin/maccalc add "$mac_dirty" 0
-}
-
-ramips_board_name() {
+ramips_board_detect() {
local machine
local name
@@ -53,6 +19,15 @@ ramips_board_name() {
*"Edimax 3g-6200n")
name="3g-6200n"
;;
+ *"Edimax 3g-6200nl")
+ name="3g-6200nl"
+ ;;
+ *"AirLive Air3GII")
+ name="air3gii"
+ ;;
+ *"Edimax BR-6425")
+ name="br6425"
+ ;;
*"Allnet ALL0239-3G")
name="all0239-3g"
;;
@@ -62,18 +37,27 @@ ramips_board_name() {
*"Allnet ALL5002")
name="all5002"
;;
+ *"Allnet ALL5003")
+ name="all5003"
+ ;;
*"ARC FreeStation5")
name="freestation5"
;;
*"Argus ATP-52B")
name="argus-atp52b"
;;
+ *"BR6524N")
+ name="br6524n"
+ ;;
*"Asus WL-330N")
name="wl-330n"
;;
*"Asus WL-330N3G")
name="wl-330n3g"
;;
+ *"Alpha ASL26555")
+ name="asl26555"
+ ;;
*"Aztech HW550-3G")
name="hw550-3g"
;;
@@ -89,12 +73,21 @@ ramips_board_name() {
*"DIR-620 A1")
name="dir-620-a1"
;;
+ *"DIR-620 D1")
+ name="dir-620-d1"
+ ;;
*"DIR-615 H1")
name="dir-615-h1"
;;
- *"DAP-1350")
- name="dap-1350"
- ;;
+ *"DIR-615 D")
+ name="dir-615-d"
+ ;;
+ *"DIR-645")
+ name="dir-645"
+ ;;
+ *"DAP-1350")
+ name="dap-1350"
+ ;;
*"ESR-9753")
name="esr-9753"
;;
@@ -104,27 +97,45 @@ ramips_board_name() {
*"F5D8235 v2")
name="f5d8235-v2"
;;
+ *"Hauppauge Broadway")
+ name="broadway"
+ ;;
+ *"Huawei D105")
+ name="d105"
+ ;;
*"La Fonera 2.0N")
name="fonera20n"
;;
+ *"Asus RT-N13U")
+ name="rt-n13u"
+ ;;
*"MoFi Network MOFI3500-3GN")
name="mofi3500-3gn"
;;
*"NBG-419N")
name="nbg-419n"
;;
+ *"Netgear WNCE2001")
+ name="wnce2001"
+ ;;
*"NexAira BC2")
name="bc2"
;;
*"NW718")
name="nw718"
;;
+ *"Omnima EMB HPM")
+ name="omni-emb-hpm"
+ ;;
*"Omnima MiniEMBWiFi")
name="omni-emb"
;;
*"Petatel PSR-680W"*)
name="psr-680w"
;;
+ *"Planex MZK-W300NH2"*)
+ name="mzk-w300nh2"
+ ;;
*"PWH2004")
name="pwh2004"
;;
@@ -161,9 +172,21 @@ ramips_board_name() {
*"Sitecom WL-351 v1 002")
name="wl-351"
;;
+ *"Tenda 3G300M")
+ name="3g300m"
+ ;;
*"Tenda W306R V2.0")
name="w306r-v20"
;;
+ *"Tenda W150M")
+ name="w150m"
+ ;;
+ *"TEW-691GR")
+ name="tew-691gr"
+ ;;
+ *"TEW-692GR")
+ name="tew-692gr"
+ ;;
*"Ralink V11ST-FE")
name="v11st-fe"
;;
@@ -176,6 +199,9 @@ ramips_board_name() {
*"WR512-3GN-like router")
name="wr512-3gn"
;;
+ *"UR-326N4G Wireless N router")
+ name="ur-326n4g"
+ ;;
*"UR-336UN Wireless N router")
name="ur-336un"
;;
@@ -190,5 +216,20 @@ ramips_board_name() {
;;
esac
- echo $name
+ [ -z "$RAMIPS_BOARD_NAME" ] && RAMIPS_BOARD_NAME="$name"
+ [ -z "$RAMIPS_MODEL" ] && RAMIPS_MODEL="$machine"
+
+ [ -e "/tmp/sysinfo/" ] || mkdir -p "/tmp/sysinfo/"
+
+ echo "$RAMIPS_BOARD_NAME" > /tmp/sysinfo/board_name
+ echo "$RAMIPS_MODEL" > /tmp/sysinfo/model
+}
+
+ramips_board_name() {
+ local name
+
+ [ -f /tmp/sysinfo/board_name ] && name=$(cat /tmp/sysinfo/board_name)
+ [ -z "$name" ] && name="unknown"
+
+ echo "$name"
}
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index 5ebf42a85..b2fa0bd95 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -9,37 +9,52 @@ RAMFS_COPY_DATA=/lib/ramips.sh
platform_check_image() {
local board=$(ramips_board_name)
- local magic="$(get_magic_word "$1")"
+ local magic="$(get_magic_long "$1")"
[ "$ARGC" -gt 1 ] && return 1
case "$board" in
3g-6200n | \
+ 3g-6200nl | \
+ 3g300m | \
+ w150m | \
+ air3gii | \
all0239-3g | \
all0256n | \
all5002 | \
+ all5003 | \
+ asl26555 | \
bc2 | \
+ broadway | \
carambola | \
+ d105 | \
dir-300-b1 | \
dir-600-b1 | \
dir-600-b2 | \
dir-615-h1 | \
+ dir-615-d | \
dir-620-a1 | \
+ dir-620-d1 | \
dap-1350 | \
esr-9753 | \
fonera20n | \
+ rt-n13u | \
freestation5 | \
hw550-3g | \
mofi3500-3gn | \
+ mzk-w300nh2 | \
nbg-419n | \
nw718 | \
omni-emb | \
+ omni-emb-hpm | \
psr-680w | \
rt-g32-b1 | \
rt-n10-plus | \
rt-n15 | \
rt-n56u | \
sl-r7205 | \
+ tew-691gr | \
+ tew-692gr | \
w306r-v20 |\
w502u |\
wr6202 |\
@@ -47,11 +62,20 @@ platform_check_image() {
wl341v3 | \
wl-330n | \
wl-351 | \
+ wnce2001 | \
wli-tx4-ag300n | \
whr-g300n |\
+ ur-326n4g |\
ur-336un |\
wr512-3gn)
- [ "$magic" != "2705" ] && {
+ [ "$magic" != "27051956" ] && {
+ echo "Invalid image type."
+ return 1
+ }
+ return 0
+ ;;
+ dir-645)
+ [ "$magic" != "5ea3a417" ] && {
echo "Invalid image type."
return 1
}