aboutsummaryrefslogtreecommitdiffstats
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.sh9
-rw-r--r--target/linux/ramips/base-files/lib/preinit/04_handle_checksumming56
-rw-r--r--target/linux/ramips/base-files/lib/preinit/07_set_preinit_iface_ramips34
-rwxr-xr-xtarget/linux/ramips/base-files/lib/ramips.sh484
-rwxr-xr-xtarget/linux/ramips/base-files/lib/upgrade/platform.sh211
5 files changed, 794 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..3dce1b6
--- /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
+ ip link add link eth0 name eth0.1 type vlan id 1
+ ip link set 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..62a79c5
--- /dev/null
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -0,0 +1,484 @@
+#!/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"
+ ;;
+ *"Dovado Tiny AC")
+ name="tiny-ac"
+ ;;
+ *"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"
+ ;;
+ *"HC5661")
+ name="hc5661"
+ ;;
+ *"HC5761")
+ name="hc5761"
+ ;;
+ *"HC5861")
+ name="hc5861"
+ ;;
+ *"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"
+ ;;
+ *"MediaTek LinkIt Smart7688")
+ linkit="$(dd bs=1 skip=1024 count=12 if=/dev/mtd2 2> /dev/null)"
+ if [ "${linkit}" = "LINKITS7688D" ]; then
+ name="linkits7688d"
+ RAMIPS_MODEL="${machine} DUO"
+ else
+ name="linkits7688"
+ fi
+ ;;
+ *"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-WG2626")
+ name="zbt-wg2626"
+ ;;
+ *"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..0e8d619
--- /dev/null
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -0,0 +1,211 @@
+#
+# 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|\
+ hc5*61|\
+ hg255d|\
+ hlk-rm04|\
+ hpm|\
+ ht-tm02|\
+ hw550-3g|\
+ ip2202|\
+ linkits7688|\
+ linkits7688d|\
+ 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|\
+ tiny-ac|\
+ 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-wg2626|\
+ 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
+ }
+}
+
+blink_led() {
+ . /etc/diag.sh; set_state upgrade
+}
+
+append sysupgrade_pre_upgrade disable_watchdog
+append sysupgrade_pre_upgrade blink_led