diff options
author | James <> | 2015-09-26 12:29:31 +0100 |
---|---|---|
committer | James <> | 2015-09-26 12:29:31 +0100 |
commit | 626d9efa74685720020e816f3a917b7591d3cf7a (patch) | |
tree | d22eef73ae82287b30a1140decb4fc806d39d621 /target/linux/ramips/base-files/lib | |
download | trunk-47048-626d9efa74685720020e816f3a917b7591d3cf7a.tar.gz trunk-47048-626d9efa74685720020e816f3a917b7591d3cf7a.tar.bz2 trunk-47048-626d9efa74685720020e816f3a917b7591d3cf7a.zip |
trunk-47048
Diffstat (limited to 'target/linux/ramips/base-files/lib')
5 files changed, 760 insertions, 0 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 new file mode 100644 index 0000000..31ef5f8 --- /dev/null +++ b/target/linux/ramips/base-files/lib/preinit/03_preinit_do_ramips.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +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_handle_checksumming b/target/linux/ramips/base-files/lib/preinit/04_handle_checksumming new file mode 100644 index 0000000..057fe45 --- /dev/null +++ b/target/linux/ramips/base-files/lib/preinit/04_handle_checksumming @@ -0,0 +1,56 @@ +#!/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_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 + ;; + rt-n56u) + echo "Board is ASUS RT-N56U, replacing uImage header..." + local firmware_mtd=$(find_mtd_part firmware) + local rootfs_mtd=$(find_mtd_part rootfs) + local rootfs_data_mtd=$(find_mtd_part rootfs_data) + local rootfs_len=$(grep \"rootfs\" /proc/mtd | awk -F' ' '{print "0x"$2}') + local rootfs_data_len=$(grep \"rootfs_data\" /proc/mtd | awk -F' ' '{print "0x"$2}') + local offset=$(echo "$rootfs_len $rootfs_data_len 0x40" | awk -F' ' '{printf "%i",$1-$2-$3}') + local signature=$(dd if=$rootfs_mtd skip=$offset bs=1 count=4 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"') + if [ "$signature" = "27051956" ]; then + dd conv=notrunc if=$rootfs_mtd skip=$offset of=$firmware_mtd bs=1 count=64 2>/dev/null + fi + ;; + esac + + return 0 +} + +boot_hook_add preinit_main do_checksumming_disable 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 0000000..90b6d15 --- /dev/null +++ b/target/linux/ramips/base-files/lib/preinit/07_set_preinit_iface_ramips @@ -0,0 +1,34 @@ +#!/bin/sh +# +# Copyright (C) 2013 OpenWrt.org +# + +. /lib/ramips.sh + +ramips_set_preinit_iface() { + RT3X5X=`cat /proc/cpuinfo | egrep "(RT3.5|RT5350|MT7628|MT7688)"` + if [ -n "${RT3X5X}" ]; then + swconfig dev rt305x set reset 1 + fi + + if echo $RT3X5X | egrep -q "(RT5350|MT7628|MT7688)"; then + # This is a dirty hack to get by while the switch + # problem is investigated. When VLAN is disabled, ICMP + # pings work as expected, but TCP connections time + # out, so telnetting in failsafe is impossible. The + # likely reason is TCP checksumming hardware getting + # disabled: + # https://www.mail-archive.com/openwrt-devel@lists.openwrt.org/msg19870.html + swconfig dev rt305x set enable_vlan 1 + swconfig dev rt305x vlan 1 set ports "0 6" + swconfig dev rt305x port 6 set untag 0 + swconfig dev rt305x set apply 1 + vconfig add eth0 1 + ifconfig eth0 up + ifname=eth0.1 + else + ifname=eth0 + fi +} + +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 new file mode 100755 index 0000000..d242235 --- /dev/null +++ b/target/linux/ramips/base-files/lib/ramips.sh @@ -0,0 +1,460 @@ +#!/bin/sh +# +# Copyright (C) 2010-2013 OpenWrt.org +# + +RAMIPS_BOARD_NAME= +RAMIPS_MODEL= + +ramips_board_detect() { + local machine + local name + + machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /proc/cpuinfo) + + case "$machine" in + *"3G150B") + name="3g150b" + ;; + *"3G300M") + name="3g300m" + ;; + *"3g-6200n") + name="3g-6200n" + ;; + *"3g-6200nl") + name="3g-6200nl" + ;; + *"A5-V11") + name="a5-v11" + ;; + *"Ai-BR100") + name="ai-br100" + ;; + *"Air3GII") + name="air3gii" + ;; + *"ALL0239-3G") + name="all0239-3g" + ;; + *"ALL0256N") + name="all0256n" + ;; + *"ALL5002") + name="all5002" + ;; + *"ALL5003") + name="all5003" + ;; + *"AR670W") + name="ar670w" + ;; + *"AR725W") + name="ar725w" + ;; + *"ASL26555") + name="asl26555" + ;; + *"ATP-52B") + name="atp-52b" + ;; + *"AWAPN2403") + name="awapn2403" + ;; + *"AWM002 EVB") + name="awm002-evb" + ;; + *"AWM003 EVB") + name="awm003-evb" + ;; + *"BC2") + name="bc2" + ;; + *"BR-6425") + name="br-6425" + ;; + *"BR-6475nD") + name="br-6475nd" + ;; + *"Broadway") + name="broadway" + ;; + *"C20i") + name="c20i" + ;; + *"Carambola") + name="carambola" + ;; + *"CF-WR800N") + name="cf-wr800n" + ;; + *"CY-SWR1100") + name="cy-swr1100" + ;; + *"D105") + name="d105" + ;; + *"DAP-1350") + name="dap-1350" + ;; + *"DB-WRT01") + name="db-wrt01" + ;; + *"DCS-930") + name="dcs-930" + ;; + *"DCS-930L B1") + name="dcs-930l-b1" + ;; + *"DIR-300 B1") + name="dir-300-b1" + ;; + *"DIR-300 B7") + name="dir-300-b7" + ;; + *"DIR-320 B1") + name="dir-320-b1" + ;; + *"DIR-600 B1") + name="dir-600-b1" + ;; + *"DIR-600 B2") + name="dir-600-b2" + ;; + *"DIR-610 A1") + name="dir-610-a1" + ;; + *"DIR-615 D") + name="dir-615-d" + ;; + *"DIR-615 H1") + name="dir-615-h1" + ;; + *"DIR-620 A1") + name="dir-620-a1" + ;; + *"DIR-620 D1") + name="dir-620-d1" + ;; + *"DIR-645") + name="dir-645" + ;; + *"DIR-810L") + name="dir-810l" + ;; + *"DIR-860L B1") + name="dir-860l-b1" + ;; + *"E1700") + name="e1700" + ;; + *"ESR-9753") + name="esr-9753" + ;; + *"F5D8235 v1") + name="f5d8235-v1" + ;; + *"F5D8235 v2") + name="f5d8235-v2" + ;; + *"F7C027") + name="f7c027" + ;; + *"FireWRT") + name="firewrt" + ;; + *"Fonera 2.0N") + name="fonera20n" + ;; + *"FreeStation5") + name="freestation5" + ;; + *"HG255D") + name="hg255d" + ;; + *"HLK-RM04") + name="hlk-rm04" + ;; + *"HPM") + name="hpm" + ;; + *"HT-TM02") + name="ht-tm02" + ;; + *"HW550-3G") + name="hw550-3g" + ;; + *"IP2202") + name="ip2202" + ;; + *"M3") + name="m3" + ;; + *"M4") + name="m4" + ;; + *"Memory 2 Move") + name="m2m" + ;; + *"MicroWRT") + name="microwrt" + ;; + *"MiniEMBPlug") + name="miniembplug" + ;; + *"MiniEMBWiFi") + name="miniembwifi" + ;; + *"MiWiFi Mini") + name="miwifi-mini" + ;; + *"MLW221") + name="mlw221" + ;; + *"MLWG2") + name="mlwg2" + ;; + *"MOFI3500-3GN") + name="mofi3500-3gn" + ;; + *"MPR-A1") + name="mpr-a1" + ;; + *"MPR-A2") + name="mpr-a2" + ;; + *"MR-102N") + name="mr-102n" + ;; + *"MT7620a + MT7530 evaluation"*) + name="mt7620a_mt7530" + ;; + *"MT7620a V22SG"*) + name="mt7620a_v22sg" + ;; + *"MT7621 evaluation"*) + name="mt7621" + ;; + *"MT7628AN evaluation"*) + name="mt7628" + ;; + *"MT7688 evaluation"*) + name="mt7688" + ;; + *"MZK-750DHP") + name="mzk-750dhp" + ;; + *"MZK-DP150N") + name="mzk-dp150n" + ;; + *"MZK-W300NH2"*) + name="mzk-w300nh2" + ;; + *"NA930") + name="na930" + ;; + *"NBG-419N") + name="nbg-419n" + ;; + *"NCS601W") + name="ncs601w" + ;; + *"NW718") + name="nw718" + ;; + *"OY-0001") + name="oy-0001" + ;; + *"PBR-M1") + name="pbr-m1" + ;; + *"PSR-680W"*) + name="psr-680w" + ;; + *"PWH2004") + name="pwh2004" + ;; + *"PX-4885") + name="px-4885" + ;; + *"Q7") + name="zte-q7" + ;; + *"RE6500") + name="re6500" + ;; + *"RN502J") + name="xdxrn502j" + ;; + *"RP-N53") + name="rp-n53" + ;; + *"RT5350F-OLinuXino") + name="rt5350f-olinuxino" + ;; + *"RT5350F-OLinuXino-EVB") + name="rt5350f-olinuxino-evb" + ;; + *"RT-G32 B1") + name="rt-g32-b1" + ;; + *"RT-N10+") + name="rt-n10-plus" + ;; + *"RT-N13U") + name="rt-n13u" + ;; + *"RT-N14U") + name="rt-n14u" + ;; + *"RT-N15") + name="rt-n15" + ;; + *"RT-N56U") + name="rt-n56u" + ;; + *"RUT5XX") + name="rut5xx" + ;; + *"SAP-G3200U3") + name="sap-g3200u3" + ;; + *"SL-R7205"*) + name="sl-r7205" + ;; + *"TEW-691GR") + name="tew-691gr" + ;; + *"TEW-692GR") + name="tew-692gr" + ;; + *"UR-326N4G") + name="ur-326n4g" + ;; + *"UR-336UN") + name="ur-336un" + ;; + *"V11ST-FE") + name="v11st-fe" + ;; + *"V22RW-2X2") + name="v22rw-2x2" + ;; + *"VoCore") + name="vocore" + ;; + *"W150M") + name="w150m" + ;; + *"W306R V2.0") + name="w306r-v20" + ;; + *"W502U") + name="w502u" + ;; + *"WCR-150GN") + name="wcr-150gn" + ;; + *"WHR-1166D") + name="whr-1166d" + ;; + *"WHR-300HP2") + name="whr-300hp2" + ;; + *"WHR-600D") + name="whr-600d" + ;; + *"WHR-G300N") + name="whr-g300n" + ;; + *"WIZARD 8800") + name="wizard8800" + ;; + *"WizFi630A") + name="wizfi630a" + ;; + *"WL-330N") + name="wl-330n" + ;; + *"WL-330N3G") + name="wl-330n3g" + ;; + *"WL-341 v3") + name="wl-341v3" + ;; + *"WL-351 v1 002") + name="wl-351" + ;; + *"WLI-TX4-AG300N") + name="wli-tx4-ag300n" + ;; + *"WMR-300") + name="wmr-300" + ;; + *"WNCE2001") + name="wnce2001" + ;; + *"WR512-3GN-like"*) + name="wr512-3gn" + ;; + *"WR6202") + name="wr6202" + ;; + *"WRTNODE") + name="wrtnode" + ;; + *"WSR-1166DHP") + name="wsr-1166" + ;; + *"WSR-600DHP") + name="wsr-600" + ;; + *"WT1520") + name="wt1520" + ;; + *"WT3020") + name="wt3020" + ;; + *"WZR-AGL300NH") + name="wzr-agl300nh" + ;; + *"X5") + name="x5" + ;; + *"X8") + name="x8" + ;; + *"Y1") + name="y1" + ;; + *"Y1S") + name="y1s" + ;; + *"ZBT-WA05") + name="zbt-wa05" + ;; + *"ZBT-WR8305RT") + name="zbt-wr8305rt" + ;; + *) + name="generic" + ;; + esac + + [ -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 new file mode 100755 index 0000000..2f6c624 --- /dev/null +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh @@ -0,0 +1,201 @@ +# +# Copyright (C) 2010 OpenWrt.org +# + +. /lib/ramips.sh + +PART_NAME=firmware +RAMFS_COPY_DATA=/lib/ramips.sh + +platform_check_image() { + local board=$(ramips_board_name) + local magic="$(get_magic_long "$1")" + + [ "$#" -gt 1 ] && return 1 + + case "$board" in + 3g150b|\ + 3g300m|\ + 3g-6200n|\ + 3g-6200nl|\ + a5-v11|\ + ai-br100|\ + air3gii|\ + all0239-3g|\ + all0256n|\ + all5002|\ + all5003|\ + ar725w|\ + asl26555|\ + awapn2403|\ + awm002-evb|\ + awm003-evb|\ + bc2|\ + broadway|\ + carambola|\ + cf-wr800n|\ + d105|\ + dap-1350|\ + db-wrt01|\ + dcs-930|\ + dcs-930l-b1|\ + dir-300-b1|\ + dir-300-b7|\ + dir-320-b1|\ + dir-600-b1|\ + dir-600-b2|\ + dir-615-d|\ + dir-615-h1|\ + dir-620-a1|\ + dir-620-d1|\ + dir-810l|\ + e1700|\ + esr-9753|\ + f7c027|\ + firewrt|\ + fonera20n|\ + freestation5|\ + hg255d|\ + hlk-rm04|\ + hpm|\ + ht-tm02|\ + hw550-3g|\ + ip2202|\ + m2m|\ + m3|\ + m4|\ + microwrt|\ + miniembplug|\ + miniembwifi|\ + miwifi-mini|\ + mlw221|\ + mlwg2|\ + mofi3500-3gn|\ + mpr-a1|\ + mpr-a2|\ + mr-102n|\ + mzk-dp150n|\ + mzk-w300nh2|\ + nbg-419n|\ + nw718|\ + oy-0001|\ + pbr-m1|\ + psr-680w|\ + px-4885|\ + re6500|\ + rp-n53|\ + rt5350f-olinuxino|\ + rt5350f-olinuxino-evb|\ + rt-g32-b1|\ + rt-n10-plus|\ + rt-n13u|\ + rt-n14u|\ + rt-n15|\ + rt-n56u|\ + rut5xx|\ + sap-g3200u3|\ + sl-r7205|\ + tew-691gr|\ + tew-692gr|\ + ur-326n4g|\ + ur-336un|\ + v22rw-2x2|\ + vocore|\ + w150m|\ + w306r-v20|\ + w502u|\ + whr-1166d|\ + whr-300hp2|\ + whr-600d|\ + whr-g300n|\ + wizfi630a|\ + wl-330n|\ + wl-330n3g|\ + wl-341v3|\ + wl-351|\ + wli-tx4-ag300n|\ + wmr-300|\ + wnce2001|\ + wr512-3gn|\ + wr6202|\ + wrtnode|\ + wsr-600|\ + wt1520|\ + wt3020|\ + wzr-agl300nh|\ + x5|\ + x8|\ + y1|\ + y1s|\ + zbt-wa05|\ + zbt-wr8305rt|\ + zte-q7) + [ "$magic" != "27051956" ] && { + echo "Invalid image type." + return 1 + } + return 0 + ;; + ar670w) + [ "$magic" != "6d000080" ] && { + echo "Invalid image type." + return 1 + } + return 0 + ;; + br-6475nd) + [ "$magic" != "43535953" ] && { + echo "Invalid image type." + return 1 + } + return 0 + ;; + c20i) + [ "$magic" != "03000000" ] && { + echo "Invalid image type." + return 1 + } + return 0 + ;; + cy-swr1100|\ + dir-610-a1|\ + dir-645|\ + dir-860l-b1) + [ "$magic" != "5ea3a417" ] && { + echo "Invalid image type." + return 1 + } + return 0 + ;; + wsr-1166) + [ "$magic" != "48445230" ] && { + echo "Invalid image type." + return 1 + } + return 0 + ;; + esac + + echo "Sysupgrade is not yet supported on $board." + return 1 +} + +platform_do_upgrade() { + local board=$(ramips_board_name) + + case "$board" in + *) + default_do_upgrade "$ARGV" + ;; + esac +} + +disable_watchdog() { + killall watchdog + ( ps | grep -v 'grep' | grep '/dev/watchdog' ) && { + echo 'Could not disable watchdog' + return 1 + } +} + +append sysupgrade_pre_upgrade disable_watchdog |