diff options
Diffstat (limited to 'target/linux/ramips/base-files/lib/preinit')
4 files changed, 88 insertions, 11 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 |