diff options
Diffstat (limited to 'target/linux/ramips/base-files/lib')
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 } |