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