From 716ca530e1c4515d8683c9d5be3d56b301758b66 Mon Sep 17 00:00:00 2001 From: James <> Date: Wed, 4 Nov 2015 11:49:21 +0000 Subject: trunk-47381 --- target/linux/ar71xx/base-files/etc/diag.sh | 397 ++++++++ .../etc/hotplug.d/firmware/10-ath9k-eeprom | 65 ++ .../etc/hotplug.d/firmware/11-ath10k-caldata | 98 ++ .../base-files/etc/hotplug.d/net/10-ar922x-led-fix | 51 + target/linux/ar71xx/base-files/etc/inittab | 3 + .../base-files/etc/uci-defaults/01_gpio-switches | 25 + .../ar71xx/base-files/etc/uci-defaults/01_leds | 635 +++++++++++++ .../ar71xx/base-files/etc/uci-defaults/02_network | 529 +++++++++++ .../etc/uci-defaults/03_network-switchX-migration | 110 +++ .../etc/uci-defaults/03_network-vlan-migration | 13 + .../base-files/etc/uci-defaults/04_led_migration | 90 ++ .../etc/uci-defaults/09_fix-seama-header | 21 + .../base-files/etc/uci-defaults/09_fix-trx-header | 19 + target/linux/ar71xx/base-files/lib/ar71xx.sh | 1002 ++++++++++++++++++++ .../base-files/lib/preinit/03_preinit_do_ar71xx.sh | 9 + .../base-files/lib/preinit/05_set_iface_mac_ar71xx | 48 + .../lib/preinit/05_set_preinit_iface_ar71xx | 55 ++ .../ar71xx/base-files/lib/preinit/82_patch_ath10k | 51 + .../linux/ar71xx/base-files/lib/upgrade/allnet.sh | 162 ++++ .../linux/ar71xx/base-files/lib/upgrade/dir825.sh | 165 ++++ .../ar71xx/base-files/lib/upgrade/openmesh.sh | 218 +++++ .../ar71xx/base-files/lib/upgrade/platform.sh | 559 +++++++++++ target/linux/ar71xx/base-files/sbin/wget2nand | 85 ++ 23 files changed, 4410 insertions(+) create mode 100644 target/linux/ar71xx/base-files/etc/diag.sh create mode 100644 target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom create mode 100644 target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata create mode 100644 target/linux/ar71xx/base-files/etc/hotplug.d/net/10-ar922x-led-fix create mode 100644 target/linux/ar71xx/base-files/etc/inittab create mode 100644 target/linux/ar71xx/base-files/etc/uci-defaults/01_gpio-switches create mode 100644 target/linux/ar71xx/base-files/etc/uci-defaults/01_leds create mode 100644 target/linux/ar71xx/base-files/etc/uci-defaults/02_network create mode 100644 target/linux/ar71xx/base-files/etc/uci-defaults/03_network-switchX-migration create mode 100644 target/linux/ar71xx/base-files/etc/uci-defaults/03_network-vlan-migration create mode 100644 target/linux/ar71xx/base-files/etc/uci-defaults/04_led_migration create mode 100644 target/linux/ar71xx/base-files/etc/uci-defaults/09_fix-seama-header create mode 100644 target/linux/ar71xx/base-files/etc/uci-defaults/09_fix-trx-header create mode 100755 target/linux/ar71xx/base-files/lib/ar71xx.sh create mode 100644 target/linux/ar71xx/base-files/lib/preinit/03_preinit_do_ar71xx.sh create mode 100644 target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx create mode 100644 target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx create mode 100644 target/linux/ar71xx/base-files/lib/preinit/82_patch_ath10k create mode 100644 target/linux/ar71xx/base-files/lib/upgrade/allnet.sh create mode 100644 target/linux/ar71xx/base-files/lib/upgrade/dir825.sh create mode 100644 target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh create mode 100755 target/linux/ar71xx/base-files/lib/upgrade/platform.sh create mode 100755 target/linux/ar71xx/base-files/sbin/wget2nand (limited to 'target/linux/ar71xx/base-files') diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh new file mode 100644 index 0000000..1375f38 --- /dev/null +++ b/target/linux/ar71xx/base-files/etc/diag.sh @@ -0,0 +1,397 @@ +#!/bin/sh +# Copyright (C) 2009-2013 OpenWrt.org + +. /lib/functions/leds.sh +. /lib/ar71xx.sh + +get_status_led() { + case $(ar71xx_board_name) in + alfa-nx) + status_led="alfa:green:led_8" + ;; + all0305) + status_led="eap7660d:green:ds4" + ;; + antminer-s1) + status_led="antminer-s1:green:system" + ;; + antminer-s3) + status_led="antminer-s3:green:system" + ;; + ap132) + status_led="ap132:green:status" + ;; + ap136-010|\ + ap136-020) + status_led="ap136:green:status" + ;; + ap147-010) + status_led="ap147:green:status" + ;; + ap135-020) + status_led="ap135:green:status" + ;; + ap81) + status_led="ap81:green:status" + ;; + ap83) + status_led="ap83:green:power" + ;; + ap96) + status_led="ap96:green:led2" + ;; + aw-nr580) + status_led="aw-nr580:green:ready" + ;; + bsb) + status_led="bsb:red:sys" + ;; + bullet-m | rocket-m | rocket-m-xw | nano-m | nanostation-m | nanostation-m-xw | loco-m-xw) + status_led="ubnt:green:link4" + ;; + rocket-m-ti) + status_led="ubnt:green:link6" + ;; + bxu2000n-2-a1) + status_led="bhu:green:status" + ;; + cap4200ag) + status_led="senao:green:pwr" + ;; + cf-e316n-v2) + status_led="$(ar71xx_board_name):blue:wan" + ;; + cpe510) + status_led="tp-link:green:link4" + ;; + db120) + status_led="db120:green:status" + ;; + dgl-5500-a1 |\ + dhp-1565-a1|\ + dir-505-a1 |\ + dir-600-a1 |\ + dir-615-e1 |\ + dir-615-i1 |\ + dir-615-e4) + status_led="d-link:green:power" + ;; + dir-615-c1) + status_led="d-link:green:status" + ;; + dir-825-b1) + status_led="d-link:orange:power" + ;; + dir-825-c1 |\ + dir-835-a1) + status_led="d-link:amber:power" + ;; + dlan-pro-500-wp) + status_led="devolo:green:wlan-2g" + ;; + dlan-pro-1200-ac) + status_led="devolo:status:wlan" + ;; + dragino2) + status_led="dragino2:red:system" + ;; + eap300v2) + status_led="engenius:blue:power" + ;; + eap7660d) + status_led="eap7660d:green:ds4" + ;; + el-mini | \ + el-m150) + status_led="easylink:green:system" + ;; + ew-dorin | ew-dorin-router) + status_led="dorin:green:status" + ;; + f9k1115v2) + status_led="belkin:blue:status" + ;; + gl-inet) + status_led="gl-connect:green:lan" + ;; + epg5000) + status_led="epg5000:amber:power" + ;; + esr1750) + status_led="esr1750:amber:power" + ;; + esr900) + status_led="engenius:amber:power" + ;; + hiwifi-hc6361) + status_led="hiwifi:blue:system" + ;; + hornet-ub | \ + hornet-ub-x2) + status_led="alfa:blue:wps" + ;; + ja76pf | \ + ja76pf2) + status_led="jjplus:green:led1" + ;; + ls-sr71) + status_led="ubnt:green:d22" + ;; + mc-mac1200r) + status_led="mercury:green:system" + ;; + mr12) + status_led="mr12:green:power" + ;; + mr16) + status_led="mr16:green:power" + ;; + mr600) + status_led="mr600:orange:power" + ;; + mr600v2) + status_led="mr600:blue:power" + ;; + mr1750) + status_led="mr1750:blue:power" + ;; + mr900 | \ + mr900v2) + status_led="mr900:blue:power" + ;; + mynet-n600 | \ + mynet-n750) + status_led="wd:blue:power" + ;; + mynet-rext) + status_led="wd:blue:power" + ;; + mzk-w04nu | \ + mzk-w300nh) + status_led="planex:green:status" + ;; + nbg460n_550n_550nh) + status_led="nbg460n:green:power" + ;; + nbg6716) + status_led="zyxel:white:power" + ;; + om2p | \ + om2pv2 | \ + om2p-hs | \ + om2p-hsv2 | \ + om2p-lc) + status_led="om2p:blue:power" + ;; + om5p | \ + om5p-an) + status_led="om5p:blue:power" + ;; + onion-omega) + status_led="onion:amber:system" + ;; + pb44) + status_led="pb44:amber:jump1" + ;; + rb-2011l|\ + rb-2011uas|\ + rb-2011uas-2hnd) + status_led="rb:green:usr" + ;; + rb-411 | rb-411u | rb-433 | rb-433u | rb-450 | rb-450g | rb-493) + status_led="rb4xx:yellow:user" + ;; + rb-750) + status_led="rb750:green:act" + ;; + rb-911g-2hpnd|\ + rb-911g-5hpacd|\ + rb-911g-5hpnd|\ + rb-912uag-2hpnd|\ + rb-912uag-5hpnd) + status_led="rb:green:user" + ;; + rb-951ui-2hnd) + status_led="rb:green:act" + ;; + rb-sxt2n|\ + rb-sxt5n) + status_led="rb:green:power" + ;; + routerstation | routerstation-pro) + status_led="ubnt:green:rf" + ;; + rw2458n) + status_led="rw2458n:green:d3" + ;; + smart-300) + status_led="nc-link:green:system" + ;; + minibox-v1) + status_led="minibox-v1:green:system" + ;; + oolite) + status_led="oolite:red:system" + ;; + qihoo-c301) + status_led="qihoo:green:status" + ;; + tew-632brp) + status_led="tew-632brp:green:status" + ;; + tew-673gru) + status_led="trendnet:blue:wps" + ;; + tew-712br|\ + tew-732br) + status_led="trendnet:green:power" + ;; + tl-mr3020) + status_led="tp-link:green:wps" + ;; + tl-wa750re) + status_led="tp-link:orange:re" + ;; + tl-wa850re) + status_led="tp-link:blue:re" + ;; + tl-wa860re) + status_led="tp-link:green:power" + ;; + tl-mr3220 | \ + tl-mr3220-v2 | \ + tl-mr3420 | \ + tl-mr3420-v2 | \ + tl-wa701nd-v2 | \ + tl-wa801nd-v2 | \ + tl-wa901nd | \ + tl-wa901nd-v2 | \ + tl-wa901nd-v3 | \ + tl-wdr3320-v2 | \ + tl-wdr3500 | \ + tl-wr1041n-v2 | \ + tl-wr1043nd | \ + tl-wr1043nd-v2 | \ + tl-wr741nd | \ + tl-wr741nd-v4 | \ + tl-wr841n-v1 | \ + tl-wr841n-v7 | \ + tl-wr841n-v8 | \ + tl-wa830re-v2 | \ + tl-wr842n-v2 | \ + tl-wr941nd | \ + tl-wr941nd-v5) + status_led="tp-link:green:system" + ;; + archer-c5 | \ + archer-c7 | \ + tl-wdr4900-v2 | \ + tl-mr10u | \ + tl-mr12u | \ + tl-mr13u | \ + tl-wdr4300 | \ + tl-wr703n | \ + tl-wr710n | \ + tl-wr720n-v3) + status_led="tp-link:blue:system" + ;; + tl-wr841n-v9) + status_led="tp-link:green:qss" + ;; + tl-wr2543n) + status_led="tp-link:green:wps" + ;; + tl-wdr6500-v2) + status_led="tp-link:white:system" + ;; + tube2h) + status_led="alfa:green:signal4" + ;; + unifi) + status_led="ubnt:green:dome" + ;; + uap-pro) + status_led="ubnt:white:dome" + ;; + unifi-outdoor-plus) + status_led="ubnt:white:front" + ;; + airgateway | \ + airgatewaypro) + status_led="ubnt:white:status" + ;; + whr-g301n | \ + whr-hp-g300n | \ + whr-hp-gn | \ + wzr-hp-g300nh) + status_led="buffalo:green:router" + ;; + wlae-ag300n) + status_led="buffalo:green:status" + ;; + wzr-hp-ag300h | \ + wzr-hp-g300nh2) + status_led="buffalo:red:diag" + ;; + r6100 | \ + wndap360 | \ + wndr3700 | \ + wndr3700v4 | \ + wndr4300 | \ + wnr2000 | \ + wnr2200 |\ + wnr612-v2 |\ + wnr1000-v2) + status_led="netgear:green:power" + ;; + wp543) + status_led="wp543:green:diag" + ;; + wpj344) + status_led="wpj344:green:status" + ;; + wpj531) + status_led="wpj531:green:sig3" + ;; + wpj558) + status_led="wpj558:green:sig3" + ;; + wrt400n) + status_led="wrt400n:blue:wps" + ;; + wrt160nl) + status_led="wrt160nl:blue:wps" + ;; + zcn-1523h-2 | zcn-1523h-5) + status_led="zcn-1523h:amber:init" + ;; + wlr8100) + status_led="sitecom:amber:status" + ;; + esac +} + +set_state() { + get_status_led + + case "$1" in + preinit) + status_led_blink_preinit + ;; + failsafe) + status_led_blink_failsafe + ;; + preinit_regular) + status_led_blink_preinit_regular + ;; + done) + status_led_on + case $(ar71xx_board_name) in + qihoo-c301) + local n=$(fw_printenv activeregion | cut -d = -f 2) + fw_setenv "image${n}trynum" 0 + ;; + esac + ;; + esac +} diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom new file mode 100644 index 0000000..b5f0588 --- /dev/null +++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -0,0 +1,65 @@ +#!/bin/sh + +ath9k_eeprom_die() { + echo "ath9k eeprom: " "$*" + exit 1 +} + +ath9k_eeprom_extract() { + local part=$1 + local offset=$2 + local count=$3 + local mtd + + mtd=$(find_mtd_chardev $part) + [ -n "$mtd" ] || \ + ath9k_eeprom_die "no mtd device found for partition $part" + + dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \ + ath9k_eeprom_die "failed to extract from $mtd" +} + +ath9k_patch_firmware_mac() { + local mac=$1 + + [ -z "$mac" ] && return + + macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=2 count=6 +} + +[ -e /lib/firmware/$FIRMWARE ] && exit 0 + +. /lib/ar71xx.sh +. /lib/functions.sh +. /lib/functions/system.sh + +board=$(ar71xx_board_name) + +case "$FIRMWARE" in +"soc_wmac.eeprom") + case $board in + r6100 | \ + wndr3700v4 | \ + wndr4300) + ath9k_eeprom_extract "caldata" 4096 2048 + ath9k_patch_firmware_mac $(mtd_get_mac_binary caldata 0) + ;; + *) + ath9k_eeprom_die "board $board is not supported yet" + ;; + esac + ;; + +"pci_wmac0.eeprom") + case $board in + wndr3700v4 | \ + wndr4300) + ath9k_eeprom_extract "caldata" 20480 2048 + ath9k_patch_firmware_mac $(mtd_get_mac_binary caldata 12) + ;; + *) + ath9k_eeprom_die "board $board is not supported yet" + ;; + esac + ;; +esac diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata new file mode 100644 index 0000000..f53c853 --- /dev/null +++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -0,0 +1,98 @@ +#!/bin/sh + +ath10kcal_die() { + echo "ath10cal: " "$*" + exit 1 +} + +ath10kcal_from_file() { + local source=$1 + local offset=$2 + local count=$3 + + dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \ + ath10kcal_die "failed to extract calibration data from $source" +} + +ath10kcal_extract() { + local part=$1 + local offset=$2 + local count=$3 + local mtd + + mtd=$(find_mtd_chardev $part) + [ -n "$mtd" ] || \ + ath10kcal_die "no mtd device found for partition $part" + + dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \ + ath10kcal_die "failed to extract calibration data from $mtd" +} + +ath10kcal_patch_mac() { + local mac=$1 + + [ -z "$mac" ] && return + + macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=6 count=6 +} + +[ -e /lib/firmware/$FIRMWARE ] && exit 0 + +. /lib/ar71xx.sh +. /lib/functions.sh +. /lib/functions/system.sh + +board=$(ar71xx_board_name) + +case "$FIRMWARE" in +"ath10k/cal-pci-0000:00:00.0.bin") + case $board in + dlan-pro-1200-ac) + ath10kcal_extract "art" 20480 2116 + ;; + mc-mac1200r) + ath10kcal_extract "art" 20480 2116 + ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1) + ;; + tl-wdr6500-v2) + ath10kcal_extract "art" 20480 2116 + ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2) + ;; + r6100) + ath10kcal_extract "caldata" 20480 2116 + ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) +2) + ;; + qihoo-c301) + ath10kcal_extract "radiocfg" 20480 2116 + ath10kcal_patch_mac $(mtd_get_mac_ascii devdata wlan5mac) + ;; + esr1750 | \ + epg5000) + ath10kcal_extract "caldata" 20480 2116 + ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1) + ;; + mr1750) + ath10kcal_extract "ART" 20480 2116 + ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16) + ;; + esac + ;; +"ath10k/cal-pci-0000:01:00.0.bin") + case $board in + archer-c5 | \ + archer-c7) + ath10kcal_extract "art" 20480 2116 + ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2) + ;; + nbg6716) + ath10kcal_extract "RFdata" 20480 2116 + ;; + rb-911g-5hpacd) + ath10kcal_from_file "/sys/firmware/routerboot/ext_wlan_data" 20480 2116 + ;; + esac + ;; +*) + exit 1 + ;; +esac diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/net/10-ar922x-led-fix b/target/linux/ar71xx/base-files/etc/hotplug.d/net/10-ar922x-led-fix new file mode 100644 index 0000000..1024150 --- /dev/null +++ b/target/linux/ar71xx/base-files/etc/hotplug.d/net/10-ar922x-led-fix @@ -0,0 +1,51 @@ +#!/bin/sh + +# For AR9220 and AR9223, GPIO JTAG must explicit be disabled +# before LEDs start working. Do this when wifi device is +# detected. + +# +# $DEVPATH is not valid for some boards (including WZR-HP-AG300H). +# Manipulate the $DEVPATH to reach the corresponding phyN. +# + +devdir=`dirname $DEVPATH` +devdir=`dirname $devdir` +phydir=/sys$devdir/ieee80211 +phyname=`cat $phydir/phy*/name` + +if [ -z $phyname -o $ACTION != "add" ]; then exit 0; fi + +# +# ar922x_disable_gpio_jtag(): +# +# Emulate +# REG_SET_BIT(ah, AR_GPIO_INPUT_EN_VAL, AR_GPIO_JTAG_DISABLE); +# for AR9220 and AR9223. +# + +ar922x_disable_gpio_jtag() +{ + local regidx=0x4054 + + [ -f /sys/kernel/debug/ieee80211/$1/ath9k/regidx ] && { + echo $regidx > /sys/kernel/debug/ieee80211/$1/ath9k/regidx + regval=`cat /sys/kernel/debug/ieee80211/$1/ath9k/regval` + regval=$((regval | 0x20000)) + echo regval $regval + echo $regval > /sys/kernel/debug/ieee80211/$1/ath9k/regval + } +} + +if [ $phyname -a $ACTION = "add" ]; then + + . /lib/ar71xx.sh + + case $(ar71xx_board_name) in + wzr-hp-ag300h) + ar922x_disable_gpio_jtag $phyname + ;; + esac; +fi + +exit 0 diff --git a/target/linux/ar71xx/base-files/etc/inittab b/target/linux/ar71xx/base-files/etc/inittab new file mode 100644 index 0000000..7817185 --- /dev/null +++ b/target/linux/ar71xx/base-files/etc/inittab @@ -0,0 +1,3 @@ +::sysinit:/etc/init.d/rcS S boot +::shutdown:/etc/init.d/rcS K shutdown +::askconsole:/bin/ash --login diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/01_gpio-switches b/target/linux/ar71xx/base-files/etc/uci-defaults/01_gpio-switches new file mode 100644 index 0000000..b41f275 --- /dev/null +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/01_gpio-switches @@ -0,0 +1,25 @@ +#!/bin/sh +# +# Copyright (C) 2015 OpenWrt.org +# + +. /lib/functions/uci-defaults.sh +. /lib/ar71xx.sh + +board=$(ar71xx_board_name) + +case "$board" in +nanostation-m) + ucidef_set_gpio_switch "poe_passthrough" "PoE Passthrough" "8" + ;; +nanostation-m-xw) + ucidef_set_gpio_switch "poe_passthrough" "PoE Passthrough" "2" + ;; +cpe510) + ucidef_set_gpio_switch "poe_passthrough" "PoE Passthrough" "20" + ;; +esac + +ucidef_commit_gpio_switches + +exit 0 diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds new file mode 100644 index 0000000..abed456 --- /dev/null +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds @@ -0,0 +1,635 @@ +#!/bin/sh +# +# Copyright (C) 2011 OpenWrt.org +# + +. /lib/functions/uci-defaults.sh +. /lib/ar71xx.sh + +board=$(ar71xx_board_name) + +case "$board" in +airgateway | \ +airgatewaypro) + ucidef_set_led_wlan "wlan" "WLAN" "ubnt:blue:wlan" "phy0tpt" + ;; +alfa-nx) + ucidef_set_led_netdev "wan" "WAN" "alfa:green:led_2" "eth0" + ucidef_set_led_netdev "lan" "LAN" "alfa:green:led_3" "eth1" + ;; + +all0258n) + ucidef_set_rssimon "wlan0" "40000" "1" + ucidef_set_led_rssi "rssilow" "RSSILOW" "all0258n:red:rssilow" "wlan0" "1" "40" "0" "6" + ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "all0258n:yellow:rssimedium" "wlan0" "30" "80" "-29" "5" + ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "all0258n:green:rssihigh" "wlan0" "70" "100" "-69" "8" + ;; + +all0315n) + ucidef_set_rssimon "wlan0" "40000" "1" + ucidef_set_led_rssi "rssilow" "RSSILOW" "all0315n:red:rssilow" "wlan0" "1" "40" "0" "6" + ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "all0315n:yellow:rssimedium" "wlan0" "30" "80" "-29" "5" + ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "all0315n:green:rssihigh" "wlan0" "70" "100" "-69" "8" + ;; + +antminer-s1) + ucidef_set_led_default "sys" "SYS" "antminer-s1:green:sys" "0" + ucidef_set_led_wlan "wlan" "WLAN" "antminer-s1:green:wlan" "phy0tpt" + ;; + +antminer-s3) + ucidef_set_led_wlan "wlan" "WLAN" "antminer-s3:green:wlan" "phy0tpt" + ucidef_set_led_default "sys" "SYS" "antminer-s3:green:sys" "0" + ucidef_set_led_default "lan" "LAN" "antminer-s3:yellow:lan" "0" + ;; + +ap113) + ucidef_set_led_usbdev "usb" "USB" "ap113:green:usb" "1-1" + ;; + +ap147-010) + ucidef_set_led_netdev "wan" "WAN" "ap147:green:wan" "eth1" + ucidef_set_led_switch "lan1" "LAN1" "ap147:green:lan1" "switch0" "0x10" + ucidef_set_led_switch "lan2" "LAN2" "ap147:green:lan2" "switch0" "0x08" + ucidef_set_led_switch "lan3" "LAN3" "ap147:green:lan3" "switch0" "0x04" + ucidef_set_led_switch "lan4" "LAN4" "ap147:green:lan4" "switch0" "0x02" + ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "ap147:green:wlan-2g" "phy0tpt" + ;; + +bsb) + ucidef_set_led_default "sys" "SYS" "bsb:red:sys" "1" + ;; + +bullet-m | \ +nanostation-m | \ +rocket-m | \ +rocket-m-xw | \ +nanostation-m-xw | \ +loco-m-xw) + ucidef_set_led_rssi "rssilow" "RSSILOW" "ubnt:red:link1" "wlan0" "1" "100" "0" "13" + ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "ubnt:orange:link2" "wlan0" "26" "100" "-25" "13" + ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "ubnt:green:link3" "wlan0" "51" "100" "-50" "13" + ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "ubnt:green:link4" "wlan0" "76" "100" "-75" "13" + ;; + +rocket-m-ti) + ucidef_set_led_rssi "rssiverylow" "RSSIVERYLOW" "ubnt:green:link1" "wlan0" "1" "100" "0" "13" + ucidef_set_led_rssi "rssilow" "RSSILOW" "ubnt:green:link2" "wlan0" "26" "100" "-25" "13" + ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "ubnt:green:link3" "wlan0" "51" "100" "-50" "13" + ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "ubnt:green:link4" "wlan0" "76" "100" "-75" "13" + ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "ubnt:green:link5" "wlan0" "76" "100" "-75" "13" + ucidef_set_led_rssi "rssiveryhigh" "RSSIVERYHIGH" "ubnt:green:link4" "wlan0" "76" "100" "-75" "13" + ;; + +bxu2000n-2-a1) + ucidef_set_led_wlan "wlan" "WLAN" "bhu:green:wlan" "phy0tpt" + ;; + +cap4200ag) + ucidef_set_led_default "lan_green" "LAN_GREEN" "senao:green:lan" "1" + ucidef_set_led_wlan "wlan_amber" "WLAN_AMBER" "senao:amber:wlan" "phy0tpt" + ucidef_set_led_wlan "wlan_green" "WLAN_GREEN" "senao:green:wlan" "phy1tpt" + ;; + +carambola2) + ucidef_set_led_netdev "lan" "LAN" "carambola2:orange:eth0" "eth0" + ucidef_set_led_netdev "wan" "WAN" "carambola2:orange:eth1" "eth1" + ucidef_set_led_wlan "wlan" "WLAN" "carambola2:green:wlan" "phy0tpt" + ;; + +cf-e316n-v2) + ucidef_set_led_netdev "lan" "LAN" "$board:blue:lan" "eth0" + ucidef_set_led_netdev "wan" "WAN" "$board:blue:wan" "eth1" + ucidef_set_led_wlan "wlan" "WLAN" "$board:blue:wlan" "phy0tpt" + ;; + +cpe510) + ucidef_set_led_switch "lan0" "LAN0" "tp-link:green:lan0" "switch0" "0x20" + ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x10" + ucidef_set_rssimon "wlan0" "40000" "1" + ucidef_set_led_rssi "rssilow" "RSSILOW" "tp-link:green:link1" "wlan0" "1" "100" "0" "13" + ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "tp-link:green:link2" "wlan0" "26" "100" "-25" "13" + ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "tp-link:green:link3" "wlan0" "51" "100" "-50" "13" + ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "tp-link:green:link4" "wlan0" "76" "100" "-75" "13" + ;; + +db120) + ucidef_set_led_usbdev "usb" "USB" "db120:green:usb" "1-1" + ;; + +dragino2) + ucidef_set_led_wlan "wlan" "WLAN" "dragino2:red:wlan" "phy0tpt" + ucidef_set_led_netdev "lan" "LAN" "dragino2:red:lan" "eth0" + ucidef_set_led_netdev "wan" "WAN" "dragino2:red:wan" "eth1" + ;; + +eap300v2) + ucidef_set_led_netdev "lan" "LAN" "engenius:blue:lan" "eth0" + ucidef_set_led_wlan "wlan" "WLAN" "engenius:blue:wlan" "phy0tpt" + ;; + +f9k1115v2) + ucidef_set_led_usbdev "usb2" "USB2" "belkin:green:usb2" "1-1" + ;; + +rb-750) + ucidef_set_led_default "act" "act" "rb750:green:act" "1" + ucidef_set_led_netdev "port1" "port1" "rb750:green:port1" "eth1" + ucidef_set_led_switch "port2" "port2" "rb750:green:port2" "switch0" "0x10" + ucidef_set_led_switch "port3" "port3" "rb750:green:port3" "switch0" "0x08" + ucidef_set_led_switch "port4" "port4" "rb750:green:port4" "switch0" "0x04" + ucidef_set_led_switch "port5" "port5" "rb750:green:port5" "switch0" "0x02" + ;; + +rb-2011l|\ +rb-2011uas|\ +rb-2011uias|\ +rb-2011uas-2hnd|\ +rb-2011uias-2hnd) + ucidef_set_led_switch "eth6" "ETH6" "rb:green:eth6" "switch1" "0x20" + ucidef_set_led_switch "eth7" "ETH7" "rb:green:eth7" "switch1" "0x10" + ucidef_set_led_switch "eth8" "ETH8" "rb:green:eth8" "switch1" "0x08" + ucidef_set_led_switch "eth9" "ETH9" "rb:green:eth9" "switch1" "0x04" + ucidef_set_led_switch "eth10" "ETH10" "rb:green:eth10" "switch1" "0x02" + ;; + +dhp-1565-a1) + ucidef_set_led_switch "wan" "WAN" "d-link:green:planet" "switch0" "0x20" + ;; + +dir-505-a1) + ucidef_set_led_netdev "lan" "LAN" "d-link:green:power" "eth1" + ;; + +dir-600-a1|\ +dir-615-e1|\ +dir-615-e4) + ucidef_set_led_netdev "wan" "WAN" "d-link:green:wan" "eth1" + ucidef_set_led_switch "lan1" "LAN1" "d-link:green:lan1" "switch0" "0x02" + ucidef_set_led_switch "lan2" "LAN2" "d-link:green:lan2" "switch0" "0x04" + ucidef_set_led_switch "lan3" "LAN3" "d-link:green:lan3" "switch0" "0x08" + ucidef_set_led_switch "lan4" "LAN4" "d-link:green:lan4" "switch0" "0x10" + ;; + +dir-615-c1) + ucidef_set_led_netdev "wan" "WAN" "d-link:green:wan" "eth1" + ucidef_set_led_wlan "wlan" "WLAN" "d-link:green:wlan" "phy0tpt" + ;; + +dir-825-b1) + ucidef_set_led_usbdev "usb" "USB" "d-link:blue:usb" "1-1" + ;; + +dir-615-i1) + ucidef_set_led_default "power" "POWER" "d-link:green:power" "1" + ucidef_set_led_default "diag" "DIAG" "d-link:amber:power" "0" + ucidef_set_led_default "wps" "WPS" "d-link:blue:wps" "0" + ucidef_set_led_netdev "wan" "WAN" "d-link:green:wan" "eth0" + ucidef_set_led_wlan "wlan" "WLAN" "d-link:green:wlan" "phy0tpt" + ;; + +dir-825-c1) + ucidef_set_led_usbdev "usb" "USB" "d-link:blue:usb" "1-1" + ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "d-link:blue:wlan2g" "phy0tpt" + ;; + +dlan-pro-500-wp) + ucidef_set_led_default "power" "System Power" "devolo:green:status" "1" + ucidef_set_led_netdev "lan" "Ethernet Activity" "devolo:green:eth" "br-lan" + ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "devolo:green:wlan-2g" "phy0tpt" + ucidef_set_led_wlan "wlan5g" "WLAN 5 GHz" "devolo:blue:wlan-5g" "none" + ;; + +dlan-pro-1200-ac) + ucidef_set_led_wlan "wlan" "WLAN" "devolo:status:wlan" "phy0radio" + ucidef_set_led_trigger_gpio "plcw" "dLAN" "devolo:status:dlan" "17" "0" + ucidef_set_led_trigger_gpio "plcr" "dLAN" "devolo:error:dlan" "16" "0" + ;; + +gl-inet) + ucidef_set_led_netdev "lan" "LAN" "gl-connect:green:lan" "eth1" + ucidef_set_led_wlan "wlan" "WLAN" "gl-connect:red:wlan" "phy0tpt" + ;; + +esr900) + ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "engenius:blue:wlan-2g" "phy0tpt" + ucidef_set_led_wlan "wlan5g" "WLAN 5 GHz" "engenius:blue:wlan-5g" "phy1tpt" + ;; + +esr1750) + ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "esr1750:blue:wlan-2g" "phy1tpt" + ucidef_set_led_wlan "wlan5g" "WLAN 5 GHz" "esr1750:blue:wlan-5g" "phy0tpt" + ;; + +epg5000) + ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "epg5000:blue:wlan-2g" "phy1tpt" + ucidef_set_led_wlan "wlan5g" "WLAN 5 GHz" "epg5000:blue:wlan-5g" "phy0tpt" + ;; + +hiwifi-hc6361) + ucidef_set_led_netdev "inet" "INET" "hiwifi:blue:internet" "eth1" + ucidef_set_led_wlan "wlan" "WLAN" "hiwifi:blue:wlan-2p4" "phy0tpt" + ;; + +hornet-ub | \ +hornet-ub-x2) + ucidef_set_led_netdev "lan" "LAN" "alfa:blue:lan" "eth0" + ucidef_set_led_netdev "wan" "WAN" "alfa:blue:wan" "eth1" + ucidef_set_led_wlan "wlan" "WLAN" "alfa:blue:wlan" "phy0tpt" + ucidef_set_led_usbdev "usb" "USB" "alfa:blue:usb" "1-1" + ;; + +mc-mac1200r) + ucidef_set_led_wlan "wlan2g" "WLAN2G" "mercury:green:wlan2g" "phy1tpt" + ucidef_set_led_wlan "wlan5g" "WLAN5G" "mercury:green:wlan5g" "phy0tpt" + ;; + +mr12) + ucidef_set_led_netdev "wan" "WAN" "mr12:green:wan" "eth0" + ucidef_set_led_wlan "wlan1" "WLAN1" "mr12:green:wifi1" "phy0assoc" + ucidef_set_led_wlan "wlan2" "WLAN2" "mr12:green:wifi2" "phy0assoc" + ucidef_set_led_wlan "wlan3" "WLAN3" "mr12:green:wifi3" "phy0assoc" + ucidef_set_led_wlan "wlan4" "WLAN4" "mr12:green:wifi4" "phy0tpt" + ;; + +mr16) + ucidef_set_led_netdev "wan" "WAN" "mr16:green:wan" "eth0" + ucidef_set_led_wlan "wlan1" "WLAN1" "mr16:green:wifi1" "phy0assoc" + ucidef_set_led_wlan "wlan2" "WLAN2" "mr16:green:wifi2" "phy0assoc" + ucidef_set_led_wlan "wlan3" "WLAN3" "mr16:green:wifi3" "phy0assoc" + ucidef_set_led_wlan "wlan4" "WLAN4" "mr16:green:wifi4" "phy0tpt" + ;; + +mr600) + ucidef_set_led_wlan "wlan58" "WLAN58" "mr600:green:wlan58" "phy0tpt" + ;; + +mr1750) + ucidef_set_led_netdev "lan" "LAN" "mr1750:blue:wan" "eth0" + ucidef_set_led_wlan "wlan58" "WLAN58" "mr1750:blue:wlan58" "phy0tpt" + ucidef_set_led_wlan "wlan24" "WLAN24" "mr1750:blue:wlan24" "phy1tpt" + ;; + +mr900 | \ +mr900v2) + ucidef_set_led_netdev "lan" "LAN" "mr900:blue:wan" "eth0" + ucidef_set_led_wlan "wlan24" "WLAN24" "mr900:blue:wlan24" "phy0tpt" + ucidef_set_led_wlan "wlan58" "WLAN58" "mr900:blue:wlan58" "phy1tpt" + ;; + +mynet-n600) + ucidef_set_led_netdev "wan" "WAN" "wd:blue:internet" "eth1" + ucidef_set_led_switch "lan1" "LAN1" "wd:green:lan1" "switch0" "0x02" + ucidef_set_led_switch "lan2" "LAN2" "wd:green:lan2" "switch0" "0x10" + ucidef_set_led_switch "lan3" "LAN3" "wd:green:lan3" "switch0" "0x08" + ucidef_set_led_switch "lan4" "LAN4" "wd:green:lan4" "switch0" "0x04" + ;; + +mynet-rext) + ucidef_set_led_netdev "lan" "LAN" "wd:blue:ethernet" "eth0" + ucidef_set_rssimon "wlan0" "40000" "1" + ucidef_set_led_rssi "rssilow" "RSSILOW" "wd:blue:quality1" "wlan0" "1" "40" "0" "6" + ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "wd:blue:quality2" "wlan0" "30" "80" "-29" "5" + ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "wd:blue:quality3" "wlan0" "70" "100" "-69" "8" + ucidef_set_led_wlan "wlan" "WLAN" "wd:blue:wireless" "phy0tpt" + ;; + +mzk-w04u) + ucidef_set_led_usbdev "usb" "USB" "planex:green:usb" "1-1" + ;; + +mzk-w300nh) + ucidef_set_led_wlan "wlan" "WLAN" "planex:green:wlan" "phy0tpt" + ;; + +nbg460n_550n_550nh) + ucidef_set_led_wlan "wlan" "WLAN" "nbg460n:green:wlan" "phy0tpt" + ;; + +nbg6716) + ucidef_set_led_netdev "wan" "WAN" "zyxel:white:internet" "eth1" + ucidef_set_led_wlan "wlan" "WLAN" "zyxel:white:wifi2g" "phy1tpt" + ucidef_set_led_wlan "wlan5" "WLAN5" "zyxel:white:wifi5g" "phy0tpt" + ucidef_set_led_usbdev "usb1" "USB1" "zyxel:white:usb1" "2-1" + ucidef_set_led_usbdev "usb2" "USB2" "zyxel:white:usb2" "1-1" + ;; + +om2p | \ +om2pv2 | \ +om2p-hs | \ +om2p-hsv2 | \ +om2p-lc) + ucidef_set_led_netdev "port1" "port1" "om2p:blue:wan" "eth0" + ucidef_set_led_netdev "port2" "port2" "om2p:blue:lan" "eth1" + ;; + +om5p | \ +om5p-an) + ucidef_set_led_netdev "port1" "port1" "om5p:blue:wan" "eth0" + ucidef_set_led_netdev "port2" "port2" "om5p:blue:lan" "eth1" + ;; + +qihoo-c301) + ucidef_set_led_wlan "wlan2g" "WLAN2G" "qihoo:red:status" "phy1tpt" + ;; + +smart-300) + ucidef_set_led_netdev "wan" "WAN" "nc-link:green:wan" "eth0" + ucidef_set_led_switch "lan1" "LAN1" "nc-link:green:lan1" "switch0" "0x04" + ucidef_set_led_switch "lan2" "LAN2" "nc-link:green:lan2" "switch0" "0x08" + ucidef_set_led_switch "lan3" "LAN3" "nc-link:green:lan3" "switch0" "0x10" + ucidef_set_led_switch "lan4" "LAN4" "nc-link:green:lan4" "switch0" "0x02" + ucidef_set_led_wlan "wlan" "WLAN" "nc-link:green:wlan" "phy0tpt" + ;; + +tew-712br) + ucidef_set_led_netdev "wan" "WAN" "trendnet:green:wan" "eth1" + ucidef_set_led_switch "lan1" "LAN1" "trendnet:green:lan1" "switch0" "0x02" + ucidef_set_led_switch "lan2" "LAN2" "trendnet:green:lan2" "switch0" "0x04" + ucidef_set_led_switch "lan3" "LAN3" "trendnet:green:lan3" "switch0" "0x08" + ucidef_set_led_switch "lan4" "LAN4" "trendnet:green:lan4" "switch0" "0x10" + ucidef_set_led_wlan "wlan" "WLAN" "trendnet:green:wlan" "phy0tpt" + ;; + +tew-732br) + ucidef_set_led_netdev "wan" "WAN" "trendnet:green:wan" "eth1" + ;; + +tl-mr11u | \ +tl-mr3020 | \ +tl-mr3040 | \ +tl-mr3040-v2) + ucidef_set_led_usbdev "usb" "USB" "tp-link:green:3g" "1-1" + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" + ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0" + ;; + +tl-mr3220 | \ +tl-mr3420 ) + ucidef_set_led_usbdev "usb" "USB" "tp-link:green:3g" "1-1" + ;; + +tl-mr3220-v2) + ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1" + ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x04" + ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x08" + ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x10" + ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02" + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" + ucidef_set_led_usbdev "usb" "USB" "tp-link:green:3g" "1-1" + ;; + +tl-mr3420-v2) + ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth0" + ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x04" + ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x08" + ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x10" + ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02" + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" + ucidef_set_led_usbdev "usb" "USB" "tp-link:green:3g" "1-1" + ;; + +tl-wa7210n-v2) + ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0" + ucidef_set_rssimon "wlan0" "40000" "1" + ucidef_set_led_rssi "rssilow" "RSSILOW" "tp-link:green:signal1" "wlan0" "1" "100" "0" "13" + ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "tp-link:green:signal2" "wlan0" "26" "100" "-25" "13" + ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "tp-link:green:signal3" "wlan0" "51" "100" "-50" "13" + ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "tp-link:green:signal4" "wlan0" "76" "100" "-75" "13" + ;; + +tl-wa750re) + ucidef_set_led_netdev "lan" "LAN" "tp-link:orange:lan" "eth0" + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:orange:wlan" "phy0tpt" + ucidef_set_rssimon "wlan0" "40000" "1" + ucidef_set_led_rssi "rssilow" "RSSILOW" "tp-link:orange:signal1" "wlan0" "1" "100" "0" "13" + ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "tp-link:orange:signal2" "wlan0" "20" "100" "-19" "13" + ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "tp-link:orange:signal3" "wlan0" "40" "100" "-39" "13" + ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "tp-link:orange:signal4" "wlan0" "60" "100" "-59" "13" + ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "tp-link:orange:signal5" "wlan0" "80" "100" "-79" "13" + ;; + +tl-wa850re) + ucidef_set_led_netdev "lan" "LAN" "tp-link:blue:lan" "eth0" + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:blue:wlan" "phy0tpt" + ucidef_set_rssimon "wlan0" "40000" "1" + ucidef_set_led_rssi "rssilow" "RSSILOW" "tp-link:blue:signal1" "wlan0" "1" "100" "0" "13" + ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "tp-link:blue:signal2" "wlan0" "20" "100" "-19" "13" + ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "tp-link:blue:signal3" "wlan0" "40" "100" "-39" "13" + ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "tp-link:blue:signal4" "wlan0" "60" "100" "-59" "13" + ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "tp-link:blue:signal5" "wlan0" "80" "100" "-79" "13" + ;; + +tl-wa701nd-v2) + ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0" + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" + ;; + +tl-wa860re) + ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0" + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" + ;; + +tl-wa901nd) + ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0" + ;; + +tl-wa901nd-v2) + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" + ;; + +tl-wdr3320-v2) + ucidef_set_led_wlan "wlan5g" "WLAN5G" "tp-link:green:wlan5g" "phy0tpt" + ;; + +tl-wdr3500) + ucidef_set_led_usbdev "usb" "USB" "tp-link:green:usb" "1-1" + ucidef_set_led_wlan "wlan2g" "WLAN2G" "tp-link:green:wlan2g" "phy0tpt" + ;; + +tl-wdr4300) + ucidef_set_led_usbdev "usb1" "USB1" "tp-link:green:usb1" "1-1.1" + ucidef_set_led_usbdev "usb2" "USB2" "tp-link:green:usb2" "1-1.2" + ucidef_set_led_wlan "wlan2g" "WLAN2G" "tp-link:blue:wlan2g" "phy0tpt" + ;; + +tl-wdr4900-v2) + ucidef_set_led_usbdev "usb1" "USB1" "tp-link:green:usb1" "1-1" + ucidef_set_led_usbdev "usb2" "USB2" "tp-link:green:usb2" "2-1" + ucidef_set_led_wlan "wlan2g" "WLAN2G" "tp-link:blue:wlan2g" "phy0tpt" + ucidef_set_led_wlan "wlan5g" "WLAN5G" "tp-link:blue:wlan5g" "phy1tpt" + ;; + +tl-wdr6500-v2) + ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1" + ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x02" + ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x04" + ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x08" + ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x10" + ;; + +archer-c5|\ +archer-c7) + ucidef_set_led_usbdev "usb1" "USB1" "tp-link:green:usb1" "1-1" + ucidef_set_led_usbdev "usb2" "USB2" "tp-link:green:usb2" "2-1" + ucidef_set_led_wlan "wlan2g" "WLAN2G" "tp-link:blue:wlan2g" "phy1tpt" + ucidef_set_led_wlan "wlan5g" "WLAN5G" "tp-link:blue:wlan5g" "phy0tpt" + ;; + +tl-wr741nd) + ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1" + ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x02" + ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x04" + ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x08" + ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x10" + ;; + +tl-wr741nd-v4) + ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1" + ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x04" + ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x08" + ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x10" + ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02" + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" + ;; + +tl-wr841n-v8 | \ +tl-wr941nd-v5) + ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth0" + ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x04" + ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x08" + ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x10" + ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02" + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" + ;; + +tl-wa830re-v2) + ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0" + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" + ;; + +tl-wr841n-v9) + ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1" + ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x10" + ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x08" + ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x04" + ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02" + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" + ;; + +tl-wr842n-v2) + ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth0" + ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x04" + ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x08" + ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x10" + ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02" + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" + ucidef_set_led_usbdev "usb" "USB" "tp-link:green:3g" "1-1" + ;; + +tl-wa801nd-v2 | \ +tl-wa901nd-v3) + ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0" + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" + ;; + +tl-wr941nd | \ +tl-wr1041n-v2) + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" + ;; + +tl-wr1043nd | \ +tl-wr1043nd-v2) + ucidef_set_led_usbdev "usb" "USB" "tp-link:green:usb" "1-1" + ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" + ;; + +tl-wr2543n) + ucidef_set_led_usbdev "usb" "USB" "tp-link:green:usb" "1-1" + ;; + +tube2h) + ucidef_set_led_netdev "lan" "LAN" "alfa:blue:lan" "eth0" + ucidef_set_rssimon "wlan0" "40000" "1" + ucidef_set_led_rssi "signal1" "SIGNAL1" "alfa:red:signal1" "wlan0" "1" "100" "0" "13" + ucidef_set_led_rssi "signal2" "SIGNAL2" "alfa:orange:signal2" "wlan0" "26" "100" "-25" "13" + ucidef_set_led_rssi "signal3" "SIGNAL3" "alfa:green:signal3" "wlan0" "51" "100" "-50" "13" + ucidef_set_led_rssi "signal4" "SIGNAL4" "alfa:green:signal4" "wlan0" "76" "100" "-75" "13" + ;; + +wrt160nl) + ucidef_set_led_wlan "wlan" "WLAN" "wrt160nl:blue:wlan" "phy0tpt" + ;; + +wndap360) + ucidef_set_led_power "power" "POWER GREEN" "netgear:green:power" "1" + ;; + +wndr3700) + ucidef_set_led_default "wan" "WAN LED (green)" "netgear:green:wan" "0" + ucidef_set_led_usbdev "usb" "USB" "netgear:green:usb" "1-1" + ;; + +r6100) + ucidef_set_led_netdev "wan" "WAN (green)" "netgear:green:wan" "eth0" + ucidef_set_led_usbdev "usb" "USB" "netgear:blue:usb" "1-1" + ucidef_set_led_wlan "wlan" "WLAN" "netgear:blue:wlan" "phy1tpt" + ;; + +wndr3700v4 | \ +wndr4300) + ucidef_set_led_netdev "wan" "WAN (green)" "netgear:green:wan" "eth0.2" + ucidef_set_led_usbdev "usb" "USB" "netgear:green:usb" "1-1" + ucidef_set_led_wlan "wlan2g" "WLAN2G" "netgear:green:wlan2g" "phy0tpt" + ucidef_set_led_wlan "wlan5g" "WLAN5G" "netgear:blue:wlan5g" "phy1tpt" + ;; + +whr-g301n |\ +whr-hp-g300n |\ +whr-hp-gn) + ucidef_set_led_netdev "wan" "WAN" "buffalo:green:wan" "eth1" + ucidef_set_led_switch "lan1" "LAN1" "buffalo:green:lan1" "switch0" "0x02" + ucidef_set_led_switch "lan2" "LAN2" "buffalo:green:lan2" "switch0" "0x04" + ucidef_set_led_switch "lan3" "LAN3" "buffalo:green:lan3" "switch0" "0x08" + ucidef_set_led_switch "lan4" "LAN4" "buffalo:green:lan4" "switch0" "0x10" + ;; + +wlae-ag300n) + ucidef_set_led_netdev "wireless" "WIRELESS" "buffalo:green:wireless" "wlan0" + ;; + +wnr2000-v4) + ucidef_set_led_netdev "wan" "WAN" "netgear:green:wan" "eth0" + ucidef_set_led_netdev "wlan" "WLAN" "netgear:blue:wlan" "wlan0" + ucidef_set_led_switch "lan1" "LAN1" "netgear:amber:lan1" "switch0" "0x02" + ucidef_set_led_switch "lan2" "LAN2" "netgear:amber:lan2" "switch0" "0x04" + ucidef_set_led_switch "lan3" "LAN3" "netgear:amber:lan3" "switch0" "0x08" + ucidef_set_led_switch "lan4" "LAN4" "netgear:amber:lan4" "switch0" "0x10" + ucidef_set_led_usbdev "usb" "USB" "netgear:amber:status" "1-1" + ;; + +wzr-hp-ag300h) + ucidef_set_led_default "diag" "DIAG" "buffalo:red:diag" "0" + ucidef_set_led_netdev "router" "ROUTER" "buffalo:green:router" "eth1" + ucidef_set_led_usbdev "usb" "USB" "buffalo:green:usb" "1-1" + ;; + +wzr-hp-g300nh) + ucidef_set_led_wlan "wlan" "Wireless" "buffalo:green:wireless" "phy0tpt" + ucidef_set_led_netdev "router" "Router" "buffalo:green:router" "eth1" + ucidef_set_led_usbdev "usb" "USB" "buffalo:blue:usb" "1-1" + ;; + +zcn-1523h-2) + ucidef_set_led_netdev "lan1" "lan1" "zcn-1523h:green:lan1" "eth0" + ;; + +zcn-1523h-5) + ucidef_set_led_netdev "lan1" "lan1" "zcn-1523h:green:lan1" "eth0" + ucidef_set_led_netdev "lan2" "lan2" "zcn-1523h:green:lan2" "eth1" + ;; +esac + +ucidef_commit_leds + +exit 0 diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network new file mode 100644 index 0000000..f6ac891 --- /dev/null +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network @@ -0,0 +1,529 @@ +#!/bin/sh +# +# Copyright (C) 2011 OpenWrt.org +# + +[ -e /etc/config/network ] && exit 0 + +touch /etc/config/network + +. /lib/functions/uci-defaults.sh +. /lib/ar71xx.sh + +ucidef_set_interface_loopback + +board=$(ar71xx_board_name) + +case "$board" in +all0315n |\ +all0258n |\ +ja76pf2|\ +rocket-m-ti |\ +ubnt-unifi-outdoor) + ucidef_set_interface_lan "eth0 eth1" + ;; + +ap132 |\ +wlr8100) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 2 3 4 5" + ucidef_add_switch_vlan "switch0" "2" "0t 1" + ;; + +esr1750 |\ +epg5000) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 1 2 3 4" + ucidef_add_switch_vlan "switch0" "2" "0t 5" + ;; + +ap136-010) + ucidef_set_interfaces_lan_wan "eth0" "eth1" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4" + ucidef_add_switch_vlan "switch0" "2" "5 6" + ;; + +ap147-010) + ucidef_set_interfaces_lan_wan "eth0" "eth1" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4" + ucidef_add_switch_vlan "switch0" "2" "5 6" + ;; + +ap136-020 |\ +ap135-020 |\ +tl-wr1043nd-v2 |\ +wzr-450hp2) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4" + ucidef_add_switch_vlan "switch0" "2" "5 6" + ;; + +archer-c5 |\ +archer-c7 |\ +tl-wdr4900-v2) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 2 3 4 5" + ucidef_add_switch_vlan "switch0" "2" "1 6" + ;; + +bsb) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 1 3" + ucidef_set_interface_wlan + ;; + +cpe510) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 5" + ucidef_add_switch_vlan "switch0" "2" "0t 4" + ;; + +airgatewaypro) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 4" + ucidef_add_switch_vlan "switch0" "2" "0t 5" + ;; + +db120 |\ +rb-2011l | \ +rb-2011uas |\ +rb-2011uias |\ +rb-2011uas-2hnd|\ +rb-2011uias-2hnd) + ucidef_set_interfaces_lan_wan "eth0.1 eth1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 2 3 4 5" + ucidef_add_switch_vlan "switch0" "2" "0t 1" + ucidef_add_switch "switch1" "1" "1" + ucidef_add_switch_vlan "switch1" "1" "0 1 2 3 4 5" + + case "$board" in + rb-2011uas* | rb-2011uias | rb-2011uias-2hnd) + ucidef_set_interface_raw "sfp" "eth0.3" + ucidef_add_switch_vlan "switch0" "3" "0t 6" + ;; + esac + ;; + +dir-825-b1|\ +tew-673gru) + ucidef_set_interfaces_lan_wan "eth0.1" "eth1" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 5t" + ;; + +f9k1115v2) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "2 3 4 5 6" + ucidef_add_switch_vlan "switch0" "2" "0 1" + ;; + +nbg460n_550n_550nh) + ucidef_set_interfaces_lan_wan "eth0" "eth1" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "0" "0 1 2 3 5" + ;; + +nbg6716) + ucidef_set_interfaces_lan_wan "eth0.1" "eth1" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 1 2 3 4" + ucidef_add_switch_vlan "switch0" "2" "5 6" + ;; + +ap143 |\ +rb-433 |\ +rb-433u) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "1 2 5" + ;; + +rb-435g) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 1 2" + ;; + +rb-450) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 5" + ;; + +rb-450g |\ +routerstation-pro) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4" + ;; + +ap136 |\ +rb-750gl |\ +rb-751g |\ +rb-951g-2hnd |\ +wzr-hp-g450h) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 2 3 4 5" + ucidef_add_switch_vlan "switch0" "2" "0t 1" + ;; + +rb-951ui-2hnd) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ;; + +rb-493g) + ucidef_set_interfaces_lan_wan "eth0 eth1.1" "eth1.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4" + ucidef_add_switch "switch1" "1" "1" + ucidef_add_switch_vlan "switch1" "1" "0t 1 2 3 4" + ucidef_add_switch_vlan "switch1" "2" "0t 5" + ;; + +wzr-hp-g300nh2 |\ +pb92 |\ +ap113) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 1 3 4 5" + ucidef_add_switch_vlan "switch0" "2" "0t 2" + ;; + +el-m150) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 1 3" + ;; + +tl-wdr4300|\ +tl-wr1041n-v2) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 2 3 4 5" + ucidef_add_switch_vlan "switch0" "2" "0t 1" + ;; + +tl-wr1043nd) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 5t" + ucidef_add_switch_vlan "switch0" "2" "0 5t" + ;; + +tl-wr2543n) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 9t" + ucidef_add_switch_vlan "switch0" "2" "0 9t" + ;; + +tl-wr841n-v1|\ +tl-wr941nd) + ucidef_set_interface_raw "eth" "eth0" + ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan" + ;; + +dir-615-i1 |\ +r6100 |\ +smart-300 |\ +tl-mr3420-v2 |\ +tl-wr841n-v8 |\ +tl-wr842n-v2 |\ +tl-wr941nd-v5 |\ +tl-wdr6500-v2 |\ +wnr2000-v3 |\ +wnr2000-v4 |\ +wnr2200 |\ +wnr612-v2 |\ +wnr1000-v2) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4" + ;; + +uap-pro) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 1" + ucidef_add_switch_vlan "switch0" "2" "0t 2" + ;; + +nanostation-m-xw) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 5" + ucidef_add_switch_vlan "switch0" "2" "0t 1" + ;; + +wrt160nl) + ucidef_set_interfaces_lan_wan "eth0" "eth1" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4 5" + ;; + +wzr-hp-g300nh) + ucidef_set_interfaces_lan_wan "eth0.1" "eth1" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 5t" + ;; + +dgl-5500-a1 |\ +dir-825-c1) + local mac + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 1 2 3 4" + ucidef_add_switch_vlan "switch0" "2" "0t 5" + mac=$(mtd_get_mac_ascii nvram "wan_mac") + [ -n "$mac" ] && ucidef_set_interface_macaddr "wan" "$mac" + ;; + +mynet-n750) + local mac + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 1 2 3 4" + ucidef_add_switch_vlan "switch0" "2" "0t 5" + mac=$(mtd_get_mac_ascii devdata "wanmac") + [ -n "$mac" ] && ucidef_set_interface_macaddr "wan" "$mac" + ;; + +onion-omega) + ucidef_set_interface_lan "wlan0" + ;; + +dhp-1565-a1 |\ +dir-835-a1 |\ +wndr3700v4 | \ +wndr4300) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 1 2 3 4" + ucidef_add_switch_vlan "switch0" "2" "0t 5" + mac_lan=$(mtd_get_mac_binary caldata 0) + [ -n "$mac_lan" ] && ucidef_set_interface_macaddr "lan" "$mac_lan" + mac_wan=$(mtd_get_mac_binary caldata 6) + [ -n "$mac_wan" ] && ucidef_set_interface_macaddr "wan" "$mac_wan" + ;; + +esr900) + local mac + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 1 2 3 4" + ucidef_add_switch_vlan "switch0" "2" "0t 5" + mac=$(mtd_get_mac_ascii u-boot-env "wanaddr") + [ -n "$mac" ] && ucidef_set_interface_macaddr "wan" "$mac" + ;; + +dlan-pro-500-wp) + ucidef_set_interface_lan "eth0 eth1" + ;; + +dlan-pro-1200-ac) + ucidef_set_interface_lan "eth0" + ucidef_add_switch "switch0" "1" "0" + ucidef_add_switch_vlan "switch0" "0" "0 2 3 4" + ;; + +all0305 |\ +antminer-s1 |\ +antminer-s3 |\ +aw-nr580 |\ +bullet-m |\ +cap4200ag |\ +eap300v2 |\ +eap7660d |\ +el-mini |\ +loco-m-xw |\ +mr1750 |\ +mr600 |\ +mr600v2 |\ +mr900 |\ +mr900v2 |\ +rb-411 |\ +rb-911g-2hpnd |\ +rb-911g-5hpacd |\ +rb-911g-5hpnd |\ +rb-912uag-2hpnd |\ +rb-912uag-5hpnd |\ +rb-sxt2n |\ +rb-sxt5n |\ +rocket-m-xw |\ +tl-mr10u |\ +tl-mr11u |\ +tl-mr12u |\ +tl-mr13u |\ +tl-mr3020 |\ +tl-mr3040 |\ +tl-mr3040-v2 |\ +tl-wa701nd-v2 |\ +tl-wa7210n-v2 |\ +tl-wa750re |\ +tl-wa850re |\ +tl-wa830re-v2 |\ +tl-wa801nd-v2 |\ +tl-wa901nd |\ +tl-wa901nd-v2 |\ +tl-wa901nd-v3 |\ +tl-wr703n |\ +tube2h |\ +wndap360 |\ +mynet-rext |\ +wp543) + ucidef_set_interface_lan "eth0" + ;; + +dir-505-a1) + ucidef_set_interface_lan "eth1" + ;; + +alfa-ap96 |\ +alfa-nx |\ +ap83 |\ +gl-inet |\ +jwap003 |\ +pb42 |\ +pb44 |\ +routerstation|\ +tl-wr710n |\ +tl-wr720n-v3|\ +wpe72) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ;; + +wpj344) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 3" + ucidef_add_switch_vlan "switch0" "2" "0t 2" + ;; + +wpj531) + ucidef_set_interfaces_lan_wan "eth0" "eth1" + ;; + +wpj558) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "5 6t" + ucidef_add_switch_vlan "switch0" "2" "1 6t" + ;; + +ap121 |\ +ap121-mini |\ +ap96 |\ +airrouter |\ +dir-600-a1 |\ +dir-615-c1 |\ +dir-615-e1 |\ +dir-615-e4 |\ +hiwifi-hc6361 |\ +ja76pf |\ +mc-mac1200r|\ +minibox-v1 |\ +mynet-n600 |\ +oolite |\ +qihoo-c301 |\ +rb-750 |\ +rb-751 |\ +tew-632brp |\ +tew-712br |\ +tl-mr3220 |\ +tl-mr3220-v2 |\ +tl-mr3420 |\ +tl-wdr3320-v2 |\ +tl-wdr3500 |\ +tl-wr741nd |\ +tl-wr741nd-v4 |\ +tl-wr841n-v7 |\ +tl-wr841n-v9 |\ +whr-g301n |\ +whr-hp-g300n |\ +whr-hp-gn |\ +wzr-hp-ag300h) + ucidef_set_interfaces_lan_wan "eth0" "eth1" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4" + ;; + +wzr-hp-g450h) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 2 3 4 5" + ucidef_add_switch_vlan "switch0" "2" "0t 1" + ;; + +ew-dorin) + ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0t 1 2" + ucidef_add_switch_vlan "switch0" "2" "0t 3" + ;; + +ew-dorin-router) + ucidef_set_interfaces_lan_wan "eth0" "eth1" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 2 3" + ;; + +wndr3700) + ucidef_set_interfaces_lan_wan "eth0.1" "eth1" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 5t" + # Blinkrate: 0=43ms; 1=84ms; 2=120ms; 3=170ms; 4=340ms; 5=670ms + uci set network.@switch[-1].blinkrate='2' + + ucidef_add_switch_port "switch0" "1" + # Port 1 controls the GREEN configuration of LEDs for + # the switch and the section does not correspond to a real + # switch port. + # + # 0=LED off; 1=Collision/FDX; 2=Link/activity; 3=1000 Mb/s; + # 4=100 Mb/s; 5=10 Mb/s; 6=1000 Mb/s+activity; 7=100 Mb/s+activity; + # 8=10 Mb/s+activity; 9=10/100 Mb/s+activity; 10: Fiber; + # 11: Fault; 12: Link/activity(tx); 13: Link/activity(rx); + # 14: Link (master); 15: separate register + uci set network.@switch_port[-1].led='6' + + ucidef_add_switch_port "switch0" "2" + # Port 2 controls the ORANGE configuration of LEDs for + # the switch and the section does not correspond to a real + # switch port. + # + # See the key above for switch port 1 for the meaning of the + # 'led' setting below. + uci set network.@switch_port[-1].led='9' + + ucidef_add_switch_port "switch0" "5" + # Port 5 controls the configuration of the WAN LED and the + # section does not correspond to a real switch port. + # + # To toggle the use of green or orange LEDs for the WAN port, + # see the LED setting for wndr3700:green:wan in /etc/config/system. + # + # See the key above for switch port 1 for the meaning of the + # 'led' setting below. + uci set network.@switch_port[-1].led='2' + ;; + +*) + ucidef_set_interfaces_lan_wan "eth0" "eth1" + ;; +esac + +uci commit network + +exit 0 diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/03_network-switchX-migration b/target/linux/ar71xx/base-files/etc/uci-defaults/03_network-switchX-migration new file mode 100644 index 0000000..aa0e1b4 --- /dev/null +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/03_network-switchX-migration @@ -0,0 +1,110 @@ +#!/bin/sh +# +# Copyright (C) 2013 OpenWrt.org +# + +SWITCH_NAME_CHANGED= + +do_change_switch_name() { + local config="$1" + local option=$2 + local oldname=$3 + local newname=$4 + local val + + config_get val "$config" $option + [ "$val" != "$oldname" ] && return 0 + + uci_set network "$config" $option $newname + SWITCH_NAME_CHANGED=1 + + return 0 +} + +migrate_switch_name() { + local oldname=$1 + local newname=$2 + + . /lib/functions.sh + + config_load network + + logger -t migrate-switchX "Updating switch names in network configuration" + + config_foreach do_change_switch_name switch name $oldname $newname + config_foreach do_change_switch_name switch_vlan device $oldname $newname + + [ "$SWITCH_NAME_CHANGED" = "1" ] && { + logger -t migrate-switchX "Switch names updated, saving network configuration" + uci commit network + } +} + +. /lib/ar71xx.sh + +board=$(ar71xx_board_name) + +case "$board" in +dir-825-c1|\ +wzr-hp-g300nh2|\ +pb92|\ +ap113|\ +tl-wdr4300|\ +tl-wr1041n-v2|\ +wrt160nl|\ +ap121|\ +ap121-mini|\ +ap96|\ +airrouter|\ +dir-600-a1|\ +dir-615-c1|\ +dir-615-e1|\ +dir-615-e4|\ +ja76pf|\ +mr-12|\ +mr-16|\ +rb-750|\ +rb-751|\ +tew-632brp|\ +tew-712br|\ +tl-mr3220|\ +tl-mr3220-v2 |\ +tl-mr3420|\ +tl-wr741nd|\ +tl-wr741nd-v4|\ +tl-wr841n-v7|\ +whr-g301n|\ +whr-hp-g300n|\ +whr-hp-gn|\ +wzr-hp-ag300h|\ +wzr-hp-g450h|\ +ew-dorin|\ +ew-dorin-router) + migrate_switch_name "eth0" "switch0" + ;; + +el-m150|\ +rb-450) + migrate_switch_name "eth1" "switch0" + ;; + +db120 |\ +rb-2011l | \ +rb-2011uas-2hnd) + migrate_switch_name "eth0" "switch0" + migrate_switch_name "eth1" "switch1" + ;; + +dir-825-b1|\ +tew-673gru|\ +nbg460n_550n_550nh) + migrate_switch_name "rtl8366s" "switch0" + ;; + +tl-wr1043nd) + migrate_switch_name "rtl8366rb" "switch0" + ;; + +esac + +exit 0 diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/03_network-vlan-migration b/target/linux/ar71xx/base-files/etc/uci-defaults/03_network-vlan-migration new file mode 100644 index 0000000..bea9493 --- /dev/null +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/03_network-vlan-migration @@ -0,0 +1,13 @@ +#!/bin/sh +# +# Copyright (C) 2010 OpenWrt.org +# + +local dev="$(uci -q get network.@switch_vlan[0].device)" +local vlan="$(uci -q get network.@switch_vlan[0].vlan)" + +if [ "$dev" = "rtl8366s" ] && [ "$vlan" = 0 ]; then + logger -t vlan-migration "VLAN 0 is invalid for RTL8366s, changing to 1" + uci set network.@switch_vlan[0].vlan=1 + uci commit network +fi diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/04_led_migration b/target/linux/ar71xx/base-files/etc/uci-defaults/04_led_migration new file mode 100644 index 0000000..d578f59 --- /dev/null +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/04_led_migration @@ -0,0 +1,90 @@ +#!/bin/sh +# +# Copyright (C) 2013 OpenWrt.org +# + +LED_OPTIONS_CHANGED=0 + +. /lib/functions.sh + +do_led_update_sysfs() +{ + local cfg=$1; shift + local tuples="$@" + local sysfs + local name + + config_get sysfs $cfg sysfs + config_get name $cfg name + + [ -z "$sysfs" ] && return + + for tuple in $tuples; do + local old=${tuple%=*} + local new=${tuple#*=} + local new_sysfs + + new_sysfs=$(echo ${sysfs} | sed "s/${old}/${new}/") + + [ "$new_sysfs" = "$sysfs" ] && continue + + uci set system.${cfg}.sysfs="${new_sysfs}" + LED_OPTIONS_CHANGED=1 + + logger -t led-migration "sysfs option of LED \"${name}\" updated to ${new_sysfs}" + done; +} + +migrate_leds() +{ + config_load system + config_foreach do_led_update_sysfs led "$@" +} + +. /lib/ar71xx.sh + +board=$(ar71xx_board_name) + +case "$board" in +dhp-1565-a1|\ +dir-825-c1|\ +dir-835-a1) + migrate_leds ":orange:=:amber:" ":wifi_bgn=:wlan2g" + ;; + +wndap360) + migrate_leds "wndap360:=netgear:" + ;; + +wndr3700) + migrate_leds "wndr3700:=netgear:" + ;; + +wndr3700v4 | \ +wndr4300) + migrate_leds ":orange:=:amber:" + ;; + +wnr2000) + migrate_leds "wnr2000:=netgear:" + ;; + +wnr2200) + migrate_leds "wnr2200:=netgear:" + ;; + +wnr612-v2) + migrate_leds "wnr612v2:=netgear:" + ;; + +wnr1000-v2) + migrate_leds "wnr1000v2:=netgear:" + ;; + +*) + ;; +esac + +[ "$LED_OPTIONS_CHANGED" = "1" ] && uci commit system + +exit 0 diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/09_fix-seama-header b/target/linux/ar71xx/base-files/etc/uci-defaults/09_fix-seama-header new file mode 100644 index 0000000..000b773 --- /dev/null +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/09_fix-seama-header @@ -0,0 +1,21 @@ +#!/bin/sh +# +# Copyright (C) 2013 OpenWrt.org +# + +. /lib/ar71xx.sh + +fix_seama_header() { + local part=$1 + + mtd fixseama $part +} + +board=$(ar71xx_board_name) + +case "$board" in +mynet-n600 | \ +mynet-n750) + fix_seama_header kernel + ;; +esac diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/09_fix-trx-header b/target/linux/ar71xx/base-files/etc/uci-defaults/09_fix-trx-header new file mode 100644 index 0000000..1bfd525 --- /dev/null +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/09_fix-trx-header @@ -0,0 +1,19 @@ +#!/bin/sh +# +# Copyright (C) 2010 OpenWrt.org +# + +. /lib/ar71xx.sh + +board=$(ar71xx_board_name) + +fixtrx() { + mtd -o 32 fixtrx firmware +} + +case "$board" in +mynet-rext |\ +wrt160nl) + fixtrx + ;; +esac diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh new file mode 100755 index 0000000..5f02e4e --- /dev/null +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -0,0 +1,1002 @@ +#!/bin/sh +# +# Copyright (C) 2009-2011 OpenWrt.org +# + +AR71XX_BOARD_NAME= +AR71XX_MODEL= + +ar71xx_get_mtd_offset_size_format() { + local mtd="$1" + local offset="$2" + local size="$3" + local format="$4" + local dev + + dev=$(find_mtd_part $mtd) + [ -z "$dev" ] && return + + dd if=$dev bs=1 skip=$offset count=$size 2>/dev/null | hexdump -v -e "1/1 \"$format\"" +} + +ar71xx_get_mtd_part_magic() { + local mtd="$1" + ar71xx_get_mtd_offset_size_format "$mtd" 0 4 %02x +} + +wndr3700_board_detect() { + local machine="$1" + local magic + local name + + name="wndr3700" + + magic="$(ar71xx_get_mtd_part_magic firmware)" + case $magic in + "33373030") + machine="NETGEAR WNDR3700" + ;; + "33373031") + # Use awk to remove everything after the first zero byte + model="$(ar71xx_get_mtd_offset_size_format art 41 32 %c | LC_CTYPE=C awk -v 'FS=[^[:print:]]' '{print $1; exit}')" + case $model in + $'\xff'*) + if [ "${model:24:1}" = 'N' ]; then + machine="NETGEAR WNDRMAC" + else + machine="NETGEAR WNDR3700v2" + fi + ;; + '29763654+16+64'*) + machine="NETGEAR ${model:14}" + ;; + '29763654+16+128'*) + machine="NETGEAR ${model:15}" + ;; + *) + # Unknown ID + machine="NETGEAR $model" + esac + esac + + AR71XX_BOARD_NAME="$name" + AR71XX_MODEL="$machine" +} + +cybertan_get_hw_magic() { + local part + + part=$(find_mtd_part firmware) + [ -z "$part" ] && return 1 + + dd bs=8 count=1 skip=0 if=$part 2>/dev/null | hexdump -v -n 8 -e '1/1 "%02x"' +} + +tplink_get_hwid() { + local part + + part=$(find_mtd_part firmware) + [ -z "$part" ] && return 1 + + dd if=$part bs=4 count=1 skip=16 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + +tplink_get_mid() { + local part + + part=$(find_mtd_part firmware) + [ -z "$part" ] && return 1 + + dd if=$part bs=4 count=1 skip=17 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + +tplink_board_detect() { + local model="$1" + local hwid + local hwver + + hwid=$(tplink_get_hwid) + mid=$(tplink_get_mid) + hwver=${hwid:6:2} + hwver="v${hwver#0}" + + case "$hwid" in + "015000"*) + model="EasyLink EL-M150" + ;; + "015300"*) + model="EasyLink EL-MINI" + ;; + "044401"*) + model="ANTMINER-S1" + ;; + "044403"*) + model="ANTMINER-S3" + ;; + "120000"*) + model="MERCURY MAC1200R" + ;; + "3C0001"*) + model="OOLITE" + ;; + "3C0002"*) + model="MINIBOX_V1" + ;; + "070300"*) + model="TP-Link TL-WR703N" + ;; + "071000"*) + model="TP-Link TL-WR710N" + ;; + "072001"*) + model="TP-Link TL-WR720N" + ;; + "070100"*) + model="TP-Link TL-WA701N/ND" + ;; + "073000"*) + model="TP-Link TL-WA730RE" + ;; + "074000"*) + model="TP-Link TL-WR740N/ND" + ;; + "074100"*) + model="TP-Link TL-WR741N/ND" + ;; + "074300"*) + model="TP-Link TL-WR743N/ND" + ;; + "075000"*) + model="TP-Link TL-WA750RE" + ;; + "721000"*) + model="TP-Link TL-WA7210N" + ;; + "751000"*) + model="TP-Link TL-WA7510N" + ;; + "080100"*) + model="TP-Link TL-WA801N/ND" + ;; + "083000"*) + model="TP-Link TL-WA830RE" + + if [ "$hwver" = 'v10' ]; then + hwver='v1' + fi + ;; + "084100"*) + model="TP-Link TL-WR841N/ND" + ;; + "084200"*) + model="TP-Link TL-WR842N/ND" + ;; + "084300"*) + model="TP-Link TL-WR843N/ND" + ;; + "085000"*) + model="TP-Link TL-WA850RE" + ;; + "086000"*) + model="TP-Link TL-WA860RE" + ;; + "090100"*) + model="TP-Link TL-WA901N/ND" + ;; + "094100"*) + if [ "$hwid" = "09410002" -a "$mid" = "00420001" ]; then + model="Rosewill RNX-N360RT" + hwver="" + else + model="TP-Link TL-WR941N/ND" + fi + ;; + "104100"*) + model="TP-Link TL-WR1041N/ND" + ;; + "104300"*) + model="TP-Link TL-WR1043N/ND" + ;; + "254300"*) + model="TP-Link TL-WR2543N/ND" + ;; + "001001"*) + model="TP-Link TL-MR10U" + ;; + "001101"*) + model="TP-Link TL-MR11U" + ;; + "001201"*) + model="TP-Link TL-MR12U" + ;; + "001301"*) + model="TP-Link TL-MR13U" + ;; + "302000"*) + model="TP-Link TL-MR3020" + ;; + "304000"*) + model="TP-Link TL-MR3040" + ;; + "322000"*) + model="TP-Link TL-MR3220" + ;; + "342000"*) + model="TP-Link TL-MR3420" + ;; + "332000"*) + model="TP-Link TL-WDR3320" + ;; + "350000"*) + model="TP-Link TL-WDR3500" + ;; + "360000"*) + model="TP-Link TL-WDR3600" + ;; + "430000"*) + model="TP-Link TL-WDR4300" + ;; + "430080"*) + iw reg set IL + model="TP-Link TL-WDR4300 (IL)" + ;; + "431000"*) + model="TP-Link TL-WDR4310" + ;; + "49000002") + model="TP-Link TL-WDR4900" + ;; + "65000002") + model="TP-Link TL-WDR6500" + ;; + "453000"*) + model="MERCURY MW4530R" + ;; + "934100"*) + model="NC-LINK SMART-300" + ;; + "c50000"*) + model="TP-Link Archer C5" + ;; + "750000"*|\ + "c70000"*) + model="TP-Link Archer C7" + ;; + *) + hwver="" + ;; + esac + + AR71XX_MODEL="$model $hwver" +} + +tplink_pharos_get_model_string() { + local part + part=$(find_mtd_part 'product-info') + [ -z "$part" ] && return 1 + + # The returned string will end with \r\n, but we don't remove it here + # to simplify matching against it in the sysupgrade image check + dd if=$part bs=1 skip=4360 2>/dev/null | head -n 1 +} + +tplink_pharos_board_detect() { + local model_string="$(tplink_pharos_get_model_string | tr -d '\r')" + local oIFS="$IFS"; IFS=":"; set -- $model_string; IFS="$oIFS" + local model + + case "$1" in + 'CPE210(TP-LINK|UN|N300-2)') + model='TP-Link CPE210' + ;; + 'CPE220(TP-LINK|UN|N300-2)') + model='TP-Link CPE220' + ;; + 'CPE510(TP-LINK|UN|N300-5)') + model='TP-Link CPE510' + ;; + 'CPE520(TP-LINK|UN|N300-5)') + model='TP-Link CPE520' + ;; + esac + + [ -n "$model" ] && AR71XX_MODEL="$model v$2" +} + +gl_inet_board_detect() { + local size="$(mtd_get_part_size 'firmware')" + + case "$size" in + 8192000) + AR71XX_MODEL='GL-iNet 6408A v1' + ;; + 16580608) + AR71XX_MODEL='GL-iNet 6416A v1' + ;; + esac +} + +ar71xx_board_detect() { + local machine + local name + + machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /proc/cpuinfo) + + case "$machine" in + *"Oolite V1.0") + name="oolite" + ;; + *"AC1750DB") + name="f9k1115v2" + ;; + *"AirGateway") + name="airgateway" + ;; + *"AirGateway Pro") + name="airgatewaypro" + ;; + *"AirRouter") + name="airrouter" + ;; + *"ALFA Network AP96") + name="alfa-ap96" + ;; + *"ALFA Network N2/N5") + name="alfa-nx" + ;; + *ALL0258N) + name="all0258n" + ;; + *ALL0305) + name="all0305" + ;; + *ALL0315N) + name="all0315n" + ;; + *Antminer-S1) + name="antminer-s1" + ;; + *Antminer-S3) + name="antminer-s3" + ;; + *AP113) + name="ap113" + ;; + *AP121) + name="ap121" + ;; + *AP121-MINI) + name="ap121-mini" + ;; + *"AP132 reference board") + name="ap132" + ;; + *"AP136-010 reference board") + name="ap136-010" + ;; + *"AP136-020 reference board") + name="ap136-020" + ;; + *"AP135-020 reference board") + name="ap135-020" + ;; + *"AP143 reference board") + name="ap143" + ;; + *"AP147-010 reference board") + name="ap147-010" + ;; + *"AP152 reference board") + name="ap152" + ;; + *AP81) + name="ap81" + ;; + *AP83) + name="ap83" + ;; + *"Archer C5") + name="archer-c5" + ;; + *"Archer C7") + name="archer-c7" + ;; + *"Atheros AP96") + name="ap96" + ;; + *AW-NR580) + name="aw-nr580" + ;; + *CAP4200AG) + name="cap4200ag" + ;; + *"COMFAST CF-E316N v2") + name="cf-e316n-v2" + ;; + *"CPE210/220/510/520") + name="cpe510" + tplink_pharos_board_detect + ;; + *"DB120 reference board") + name="db120" + ;; + *"DGL-5500 rev. A1") + name="dgl-5500-a1" + ;; + *"DHP-1565 rev. A1") + name="dhp-1565-a1" + ;; + *"DIR-505 rev. A1") + name="dir-505-a1" + ;; + *"DIR-600 rev. A1") + name="dir-600-a1" + ;; + *"DIR-615 rev. E1") + name="dir-615-e1" + ;; + *"DIR-615 rev. E4") + name="dir-615-e4" + ;; + *"DIR-615 rev. I1") + name="dir-615-i1" + ;; + *"DIR-825 rev. B1") + name="dir-825-b1" + ;; + *"DIR-825 rev. C1") + name="dir-825-c1" + ;; + *"DIR-835 rev. A1") + name="dir-835-a1" + ;; + *"dLAN pro 500 Wireless+") + name="dlan-pro-500-wp" + ;; + *"dLAN pro 1200+ WiFi ac") + name="dlan-pro-1200-ac" + ;; + *"Dragino v2") + name="dragino2" + ;; + *"EAP300 v2") + name="eap300v2" + ;; + *EAP7660D) + name="eap7660d" + ;; + *EL-M150) + name="el-m150" + ;; + *EL-MINI) + name="el-mini" + ;; + *"GL-CONNECT INET v1") + name="gl-inet" + gl_inet_board_detect + ;; + *"EnGenius EPG5000") + name="epg5000" + ;; + *"EnGenius ESR1750") + name="esr1750" + ;; + *"EnGenius ESR900") + name="esr900" + ;; + *JA76PF) + name="ja76pf" + ;; + *JA76PF2) + name="ja76pf2" + ;; + *"Bullet M") + name="bullet-m" + ;; + *"Loco M XW") + name="loco-m-xw" + ;; + *"Nanostation M") + name="nanostation-m" + ;; + *"Nanostation M XW") + name="nanostation-m-xw" + ;; + *JWAP003) + name="jwap003" + ;; + *"Hornet-UB") + local size + size=$(awk '/firmware/ { print $2 }' /proc/mtd) + + if [ "x$size" = "x00790000" ]; then + name="hornet-ub" + fi + + if [ "x$size" = "x00f90000" ]; then + name="hornet-ub-x2" + fi + ;; + *LS-SR71) + name="ls-sr71" + ;; + *"MAC1200R") + name="mc-mac1200r" + ;; + *"MiniBox V1.0") + name="minibox-v1" + ;; + *MR12) + name="mr12" + ;; + *MR16) + name="mr16" + ;; + *MR600v2) + name="mr600v2" + ;; + *MR1750) + name="mr1750" + ;; + *MR600) + name="mr600" + ;; + *MR900) + name="mr900" + ;; + *MR900v2) + name="mr900v2" + ;; + *"My Net N600") + name="mynet-n600" + ;; + *"My Net N750") + name="mynet-n750" + ;; + *"WD My Net Wi-Fi Range Extender") + name="mynet-rext" + ;; + *MZK-W04NU) + name="mzk-w04nu" + ;; + *MZK-W300NH) + name="mzk-w300nh" + ;; + *"NBG460N/550N/550NH") + name="nbg460n_550n_550nh" + ;; + *"Zyxel NBG6716") + name="nbg6716" + ;; + *OM2P) + name="om2p" + ;; + *OM2Pv2) + name="om2pv2" + ;; + *"OM2P HS") + name="om2p-hs" + ;; + *"OM2P HSv2") + name="om2p-hsv2" + ;; + *"OM2P LC") + name="om2p-lc" + ;; + *OM5P) + name="om5p" + ;; + *"OM5P AN") + name="om5p-an" + ;; + *"Onion Omega") + name="onion-omega" + ;; + *PB42) + name="pb42" + ;; + *"PB44 reference board") + name="pb44" + ;; + *PB92) + name="pb92" + ;; + *"Qihoo 360 C301") + name="qihoo-c301" + ;; + *"RouterBOARD 411/A/AH") + name="rb-411" + ;; + *"RouterBOARD 411U") + name="rb-411u" + ;; + *"RouterBOARD 433/AH") + name="rb-433" + ;; + *"RouterBOARD 433UAH") + name="rb-433u" + ;; + *"RouterBOARD 435G") + name="rb-435g" + ;; + *"RouterBOARD 450") + name="rb-450" + ;; + *"RouterBOARD 450G") + name="rb-450g" + ;; + *"RouterBOARD 493/AH") + name="rb-493" + ;; + *"RouterBOARD 493G") + name="rb-493g" + ;; + *"RouterBOARD 750") + name="rb-750" + ;; + *"RouterBOARD 750GL") + name="rb-750gl" + ;; + *"RouterBOARD 751") + name="rb-751" + ;; + *"RouterBOARD 751G") + name="rb-751g" + ;; + *"RouterBOARD 911G-2HPnD") + name="rb-911g-2hpnd" + ;; + *"RouterBOARD 911G-5HPnD") + name="rb-911g-5hpnd" + ;; + *"RouterBOARD 911G-5HPacD") + name="rb-911g-5hpacd" + ;; + *"RouterBOARD 912UAG-2HPnD") + name="rb-912uag-2hpnd" + ;; + *"RouterBOARD 912UAG-5HPnD") + name="rb-912uag-5hpnd" + ;; + *"RouterBOARD 951G-2HnD") + name="rb-951g-2hnd" + ;; + *"RouterBOARD 951Ui-2HnD") + name="rb-951ui-2hnd" + ;; + *"RouterBOARD 2011L") + name="rb-2011l" + ;; + *"RouterBOARD 2011UAS") + name="rb-2011uas" + ;; + *"RouterBOARD 2011UiAS") + name="rb-2011uias" + ;; + *"RouterBOARD 2011UAS-2HnD") + name="rb-2011uas-2hnd" + ;; + *"RouterBOARD 2011UiAS-2HnD") + name="rb-2011uias-2hnd" + ;; + *"RouterBOARD SXT Lite2") + name="rb-sxt2n" + ;; + *"RouterBOARD SXT Lite5") + name="rb-sxt5n" + ;; + *"Rocket M") + name="rocket-m" + ;; + *"Rocket M TI") + name="rocket-m-ti" + ;; + *"Rocket M XW") + name="rocket-m-xw" + ;; + *RouterStation) + name="routerstation" + ;; + *"RouterStation Pro") + name="routerstation-pro" + ;; + *RW2458N) + name="rw2458n" + ;; + *"SMART-300") + name="smart-300" + ;; + "Smart Electronics Black Swift board"*) + name="bsb" + ;; + *TEW-632BRP) + name="tew-632brp" + ;; + *TEW-673GRU) + name="tew-673gru" + ;; + *TEW-712BR) + name="tew-712br" + ;; + *TEW-732BR) + name="tew-732br" + ;; + *"TL-WR1041N v2") + name="tl-wr1041n-v2" + ;; + *TL-WR1043ND) + name="tl-wr1043nd" + ;; + *"TL-WR1043ND v2") + name="tl-wr1043nd-v2" + ;; + *TL-WR2543N*) + name="tl-wr2543n" + ;; + *"DIR-615 rev. C1") + name="dir-615-c1" + ;; + *TL-MR3020) + name="tl-mr3020" + ;; + *TL-MR3040) + name="tl-mr3040" + ;; + *"TL-MR3040 v2") + name="tl-mr3040-v2" + ;; + *TL-MR3220) + name="tl-mr3220" + ;; + *"TL-MR3220 v2") + name="tl-mr3220-v2" + ;; + *TL-MR3420) + name="tl-mr3420" + ;; + *"TL-MR3420 v2") + name="tl-mr3420-v2" + ;; + *"TL-WA701ND v2") + name="tl-wa701nd-v2" + ;; + *"TL-WA7210N v2") + name="tl-wa7210n-v2" + ;; + *TL-WA750RE) + name="tl-wa750re" + ;; + *"TL-WA7510N v1") + name="tl-wa7510n" + ;; + *TL-WA850RE) + name="tl-wa850re" + ;; + *TL-WA860RE) + name="tl-wa860re" + ;; + *"TL-WA830RE v2") + name="tl-wa830re-v2" + ;; + *"TL-WA801ND v2") + name="tl-wa801nd-v2" + ;; + *TL-WA901ND) + name="tl-wa901nd" + ;; + *"TL-WA901ND v2") + name="tl-wa901nd-v2" + ;; + *"TL-WA901ND v3") + name="tl-wa901nd-v3" + ;; + *"TL-WDR3320 v2") + name="tl-wdr3320-v2" + ;; + *"TL-WDR3500") + name="tl-wdr3500" + ;; + *"TL-WDR3600/4300/4310") + name="tl-wdr4300" + ;; + *"TL-WDR4900 v2") + name="tl-wdr4900-v2" + ;; + *"TL-WDR6500 v2") + name="tl-wdr6500-v2" + ;; + *TL-WR741ND) + name="tl-wr741nd" + ;; + *"TL-WR741ND v4") + name="tl-wr741nd-v4" + ;; + *"TL-WR841N v1") + name="tl-wr841n-v1" + ;; + *"TL-WR841N/ND v7") + name="tl-wr841n-v7" + ;; + *"TL-WR841N/ND v8") + name="tl-wr841n-v8" + ;; + *"TL-WR841N/ND v9") + name="tl-wr841n-v9" + ;; + *"TL-WR842N/ND v2") + name="tl-wr842n-v2" + ;; + *TL-WR941ND) + name="tl-wr941nd" + ;; + *"TL-WR941N/ND v5") + name="tl-wr941nd-v5" + ;; + *"TL-WR703N v1") + name="tl-wr703n" + ;; + *"TL-WR710N v1") + name="tl-wr710n" + ;; + *"TL-WR720N"*) + name="tl-wr720n-v3" + ;; + *"TL-MR10U") + name="tl-mr10u" + ;; + *"TL-MR11U") + name="tl-mr11u" + ;; + *"TL-MR12U") + name="tl-mr12u" + ;; + *"TL-MR13U v1") + name="tl-mr13u" + ;; + *"Tube2H") + name="tube2h" + ;; + *UniFi) + name="unifi" + ;; + *"UniFi AP Pro") + name="uap-pro" + ;; + "WeIO"*) + name="weio" + ;; + *WHR-G301N) + name="whr-g301n" + ;; + *WHR-HP-GN) + name="whr-hp-gn" + ;; + *WLAE-AG300N) + name="wlae-ag300n" + ;; + *"UniFiAP Outdoor") + name="unifi-outdoor" + ;; + *"UniFiAP Outdoor+") + name="unifi-outdoor-plus" + ;; + *WP543) + name="wp543" + ;; + *WPE72) + name="wpe72" + ;; + *WPJ344) + name="wpj344" + ;; + *WPJ531) + name="wpj531" + ;; + *WPJ558) + name="wpj558" + ;; + *WNDAP360) + name="wndap360" + ;; + *"WNDR3700/WNDR3800/WNDRMAC") + wndr3700_board_detect "$machine" + ;; + *"R6100") + name="r6100" + ;; + *"WNDR3700v4") + name="wndr3700v4" + ;; + *"WNDR4300") + name="wndr4300" + ;; + *"WNR2000 V4") + name="wnr2000-v4" + ;; + *"WNR2000 V3") + name="wnr2000-v3" + ;; + *WNR2000) + name="wnr2000" + ;; + *WNR2200) + name="wnr2200" + ;; + *"WNR612 V2") + name="wnr612-v2" + ;; + *"WNR1000 V2") + name="wnr1000-v2" + ;; + *WRT160NL) + name="wrt160nl" + ;; + *WRT400N) + name="wrt400n" + ;; + *"WZR-450HP2") + name="wzr-450hp2" + ;; + *"WZR-HP-AG300H/WZR-600DHP") + name="wzr-hp-ag300h" + ;; + *WZR-HP-G300NH) + name="wzr-hp-g300nh" + ;; + *WZR-HP-G450H) + name="wzr-hp-g450h" + ;; + *WZR-HP-G300NH2) + name="wzr-hp-g300nh2" + ;; + *WHR-HP-G300N) + name="whr-hp-g300n" + ;; + *ZCN-1523H-2) + name="zcn-1523h-2" + ;; + *ZCN-1523H-5) + name="zcn-1523h-5" + ;; + *EmbWir-Dorin) + name="ew-dorin" + ;; + *EmbWir-Dorin-Router) + name="ew-dorin-router" + ;; + "8devices Carambola2"*) + name="carambola2" + ;; + *"Sitecom WLR-8100") + name="wlr8100" + ;; + *"BHU BXU2000n-2 rev. A1") + name="bxu2000n-2-a1" + ;; + *"HiWiFi HC6361") + name="hiwifi-hc6361" + ;; + esac + + [ -z "$AR71XX_MODEL" ] && [ "${machine:0:8}" = 'TP-LINK ' ] && \ + tplink_board_detect "$machine" + + [ -z "$name" ] && name="unknown" + + [ -z "$AR71XX_BOARD_NAME" ] && AR71XX_BOARD_NAME="$name" + [ -z "$AR71XX_MODEL" ] && AR71XX_MODEL="$machine" + + [ -e "/tmp/sysinfo/" ] || mkdir -p "/tmp/sysinfo/" + + echo "$AR71XX_BOARD_NAME" > /tmp/sysinfo/board_name + echo "$AR71XX_MODEL" > /tmp/sysinfo/model +} + +ar71xx_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/ar71xx/base-files/lib/preinit/03_preinit_do_ar71xx.sh b/target/linux/ar71xx/base-files/lib/preinit/03_preinit_do_ar71xx.sh new file mode 100644 index 0000000..ff5407a --- /dev/null +++ b/target/linux/ar71xx/base-files/lib/preinit/03_preinit_do_ar71xx.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +do_ar71xx() { + . /lib/ar71xx.sh + + ar71xx_board_detect +} + +boot_hook_add preinit_main do_ar71xx diff --git a/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx b/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx new file mode 100644 index 0000000..92b3765 --- /dev/null +++ b/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx @@ -0,0 +1,48 @@ +# +# Copyright (C) 2009 OpenWrt.org +# + +. /lib/ar71xx.sh + +fetch_mac_from_mtd() { + local mtd_part=$1 + local lan_env=$2 + local wan_env=$3 + local mtd mac + + mtd=$(grep $mtd_part /proc/mtd | cut -d: -f1) + [ -z $mtd ] && return + + mac=$(grep $lan_env /dev/$mtd | cut -d= -f2) + [ ! -z $mac ] && ifconfig eth0 hw ether $mac 2>/dev/null + + mac=$(grep $wan_env /dev/$mtd | cut -d= -f2) + [ ! -z $mac ] && ifconfig eth1 hw ether $mac 2>/dev/null +} + +preinit_set_mac_address() { + case $(ar71xx_board_name) in + dir-615-c1) + fetch_mac_from_mtd config lan_mac wan_mac + echo 1 > /sys/class/leds/dir-615-c1:green:wancpu/brightness + ;; + dir-615-i1) + fetch_mac_from_mtd nvram sys_lan_mac sys_wan_mac + ;; + r6100) + mac_lan=$(mtd_get_mac_binary caldata 0) + [ -n "$mac_lan" ] && ifconfig eth1 hw ether "$mac_lan" + mac_wan=$(mtd_get_mac_binary caldata 6) + [ -n "$mac_wan" ] && ifconfig eth0 hw ether "$mac_wan" + ;; + tew-632brp) + fetch_mac_from_mtd config lan_mac wan_mac + ;; + wrt160nl) + fetch_mac_from_mtd nvram lan_hwaddr wan_hwaddr + ;; + esac +} + +boot_hook_add preinit_main preinit_set_mac_address + diff --git a/target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx b/target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx new file mode 100644 index 0000000..d214e9b --- /dev/null +++ b/target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx @@ -0,0 +1,55 @@ +#!/bin/sh + +# +# Copyright (C) 2009 OpenWrt.org +# + +. /lib/ar71xx.sh + +set_preinit_iface() { + case $(ar71xx_board_name) in + alfa-ap96 |\ + alfa-nx |\ + ap135-020 |\ + ap136-020 |\ + ap147-010 |\ + ap83 |\ + archer-c5 |\ + archer-c7 |\ + dir-505-a1 |\ + gl-inet |\ + jwap003 |\ + pb42 |\ + pb44 |\ + rb-433 |\ + rb-433u |\ + rb-435g |\ + rb-450 |\ + rb-450g |\ + routerstation |\ + routerstation-pro |\ + smart-300 |\ + tl-mr3420-v2 |\ + tl-wdr4900-v2 |\ + tl-wr1043nd-v2 |\ + tl-wr710n |\ + tl-wr720n-v3 |\ + tl-wr841n-v8 |\ + tl-wr842n-v2 |\ + wnr2000-v3 |\ + wnr2200 |\ + wnr612-v2 |\ + wnr1000-v2 |\ + wpe72) + ifname=eth1 + ;; + *) + ifname=eth0 + ;; + esac +} + +boot_hook_add preinit_main set_preinit_iface + + + diff --git a/target/linux/ar71xx/base-files/lib/preinit/82_patch_ath10k b/target/linux/ar71xx/base-files/lib/preinit/82_patch_ath10k new file mode 100644 index 0000000..4da611a --- /dev/null +++ b/target/linux/ar71xx/base-files/lib/preinit/82_patch_ath10k @@ -0,0 +1,51 @@ +#!/bin/sh + +. /lib/functions/system.sh +. /lib/ar71xx.sh + + +do_patch_ath10k_firmware() { + local firmware_file="/lib/firmware/ath10k/QCA988X/hw2.0/firmware-5.bin" + + # bail out if firmware does not exist + [ -f "$firmware_file" ] || { + return + } + + local firmware_md5_orig="36768dc68572b3f2660211e20e89f558" + local firmware_md5_current="$(md5sum $firmware_file)" + local firmware_md5_current="${firmware_md5_current%% *}" + + # verify md5sum before patching + [ "$firmware_md5_orig" != "$firmware_md5_current" ] || { + return + } + + # some boards have bogus mac in otp, patch the default mac in the firmware + case $(ar71xx_board_name) in + dgl-5500-a1) + local mac + mac=$(mtd_get_mac_ascii nvram wlan1_mac) + + cp $firmware_file /tmp/ath10k-firmware.bin + macaddr_2bin $mac | dd of=/tmp/ath10k-firmware.bin \ + conv=notrunc bs=1 seek=276 count=6 + + ;; + esac + [ -f /tmp/ath10k-firmware.bin ] || { + return + } + cp /tmp/ath10k-firmware.bin $firmware_file + rm /tmp/ath10k-firmware.bin +} + +check_patch_ath10k_firmware() { + case $(ar71xx_board_name) in + dgl-5500-a1) + do_patch_ath10k_firmware + ;; + esac +} + +boot_hook_add preinit_main check_patch_ath10k_firmware diff --git a/target/linux/ar71xx/base-files/lib/upgrade/allnet.sh b/target/linux/ar71xx/base-files/lib/upgrade/allnet.sh new file mode 100644 index 0000000..98b368d --- /dev/null +++ b/target/linux/ar71xx/base-files/lib/upgrade/allnet.sh @@ -0,0 +1,162 @@ +# The U-Boot loader of the some Allnet devices requires image sizes and +# checksums to be provided in the U-Boot environment. +# In case the check fails during boot, a failsafe-system is started to provide +# a minimal web-interface for flashing a new firmware. + +# make sure we got uboot-envtools and fw_env.config copied over to the ramfs +# create /var/lock for the lock "fw_setenv.lock" of fw_setenv +platform_add_ramfs_ubootenv() { + [ -e /usr/sbin/fw_printenv ] && install_bin /usr/sbin/fw_printenv /usr/sbin/fw_setenv + [ -e /etc/fw_env.config ] && install_file /etc/fw_env.config + mkdir -p $RAM_ROOT/var/lock +} +append sysupgrade_pre_upgrade platform_add_ramfs_ubootenv + +# determine size of the main firmware partition +platform_get_firmware_size() { + local dev size erasesize name + while read dev size erasesize name; do + name=${name#'"'}; name=${name%'"'} + case "$name" in + firmware) + printf "%d" "0x$size" + break + ;; + esac + done < /proc/mtd +} + +# get the first 4 bytes (magic) of a given file starting at offset in hex format +get_magic_long_at() { + dd if="$1" skip=$(( $CI_BLKSZ / 4 * $2 )) bs=4 count=1 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + +get_filesize() { + wc -c "$1" | while read image_size _n ; do echo $image_size ; break; done +} + +# scan through the update image pages until matching a magic +platform_get_offset() { + offsetcount=0 + magiclong="x" + if [ -n "$3" ]; then + offsetcount=$3 + fi + while magiclong=$( get_magic_long_at "$1" "$offsetcount" ) && [ -n "$magiclong" ]; do + case "$magiclong" in + "2705"*) + # U-Boot image magic + if [ "$2" = "uImage" ]; then + echo $offsetcount + return + fi + ;; + "68737173"|"73717368") + # SquashFS + if [ "$2" = "rootfs" ]; then + echo $offsetcount + return + fi + ;; + "deadc0de"|"19852003") + # JFFS2 empty page + if [ "$2" = "rootfs-data" ]; then + echo $offsetcount + return + fi + ;; + esac + offsetcount=$(( $offsetcount + 1 )) + done +} + +platform_check_image_allnet() { + local fw_printenv=/usr/sbin/fw_printenv + [ ! -n "$fw_printenv" -o ! -x "$fw_printenv" ] && { + echo "Please install uboot-envtools!" + return 1 + } + + [ ! -r "/etc/fw_env.config" ] && { + echo "/etc/fw_env.config is missing" + return 1 + } + + local image_size=$( get_filesize "$1" ) + local firmware_size=$( platform_get_firmware_size ) + [ $image_size -ge $firmware_size ] && + { + echo "upgrade image is too big (${image_size}b > ${firmware_size}b)" + } + + local vmlinux_blockoffset=$( platform_get_offset "$1" uImage ) + [ -z $vmlinux_blockoffset ] && { + echo "vmlinux-uImage not found" + return 1 + } + + local rootfs_blockoffset=$( platform_get_offset "$1" rootfs "$vmlinux_blockoffset" ) + [ -z $rootfs_blockoffset ] && { + echo "missing rootfs" + return 1 + } + + local data_blockoffset=$( platform_get_offset "$1" rootfs-data "$rootfs_blockoffset" ) + [ -z $data_blockoffset ] && { + echo "rootfs doesn't have JFFS2 end marker" + return 1 + } + + return 0 +} + +platform_do_upgrade_allnet() { + local firmware_base_addr=$( printf "%d" "$1" ) + local vmlinux_blockoffset=$( platform_get_offset "$2" uImage ) + if [ ! -n "$vmlinux_blockoffset" ]; then + echo "can't determine uImage offset" + return 1 + fi + local rootfs_blockoffset=$( platform_get_offset "$2" rootfs $(( $vmlinux_blockoffset + 1 )) ) + local vmlinux_offset=$(( $vmlinux_blockoffset * $CI_BLKSZ )) + local vmlinux_addr=$(( $firmware_base_addr + $vmlinux_offset )) + local vmlinux_hexaddr=0x$( printf "%08x" "$vmlinux_addr" ) + if [ ! -n "$rootfs_blockoffset" ]; then + echo "can't determine rootfs offset" + return 1 + fi + local rootfs_offset=$(( $rootfs_blockoffset * $CI_BLKSZ )) + local rootfs_addr=$(( $firmware_base_addr + $rootfs_offset )) + local rootfs_hexaddr=0x$( printf "%08x" "$rootfs_addr" ) + local vmlinux_blockcount=$(( $rootfs_blockoffset - $vmlinux_blockoffset )) + local vmlinux_size=$(( $rootfs_offset - $vmlinux_offset )) + local vmlinux_hexsize=0x$( printf "%08x" "$vmlinux_size" ) + local data_blockoffset=$( platform_get_offset "$2" rootfs-data $(( $rootfs_blockoffset + 1 )) ) + if [ ! -n "$data_blockoffset" ]; then + echo "can't determine rootfs size" + return 1 + fi + local data_offset=$(( $data_blockoffset * $CI_BLKSZ )) + local rootfs_blockcount=$(( $data_blockoffset - $rootfs_blockoffset )) + local rootfs_size=$(( $data_offset - $rootfs_offset )) + local rootfs_hexsize=0x$( printf "%08x" "$rootfs_size" ) + + local rootfs_md5=$( dd if="$2" bs=$CI_BLKSZ skip=$rootfs_blockoffset count=$rootfs_blockcount 2>/dev/null | md5sum -); rootfs_md5="${rootfs_md5%% *}" + local vmlinux_md5=$( dd if="$2" bs=$CI_BLKSZ skip=$vmlinux_blockoffset count=$vmlinux_blockcount 2>/dev/null | md5sum -); vmlinux_md5="${vmlinux_md5%% *}" + # this needs a recent version of uboot-envtools! + cat >/tmp/fw_env_upgrade </dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + +dir825b_is_caldata_valid() { + local mtddev=$1 + local magic + + magic=$(get_magic_at $mtddev 4096) + [ "$magic" != "a55a" ] && return 0 + + magic=$(get_magic_at $mtddev 20480) + [ "$magic" != "a55a" ] && return 0 + + return 1 +} + +dir825b_copy_caldata() { + local cal_src=$1 + local cal_dst=$2 + local mtd_src + local mtd_dst + local md5_src + local md5_dst + + mtd_src=$(find_mtd_part $cal_src) + [ -z "$mtd_src" ] && { + echo "no $cal_src partition found" + return 1 + } + + mtd_dst=$(find_mtd_part $cal_dst) + [ -z "$mtd_dst" ] && { + echo "no $cal_dst partition found" + return 1 + } + + dir825b_is_caldata_valid "$mtd_src" && { + echo "no valid calibration data found in $cal_src" + return 1 + } + + dir825b_is_caldata_valid "$mtd_dst" && { + echo "Copying calibration data from $cal_src to $cal_dst..." + dd if="$mtd_src" 2>/dev/null | mtd -q -q write - "$cal_dst" + } + + md5_src=$(md5sum "$mtd_src") && md5_src="${md5_src%% *}" + md5_dst=$(md5sum "$mtd_dst") && md5_dst="${md5_dst%% *}" + + [ "$md5_src" != "$md5_dst" ] && { + echo "calibration data mismatch $cal_src:$md5_src $cal_dst:$md5_dst" + return 1 + } + + return 0 +} + +dir825b_do_upgrade_combined() { + local fw_part=$1 + local fw_file=$2 + local fw_mtd=$(find_mtd_part $fw_part) + local fw_length=0x$(dd if="$fw_file" bs=2 skip=1 count=4 2>/dev/null) + local fw_blocks=$(($fw_length / 65536)) + + if [ -n "$fw_mtd" ] && [ ${fw_blocks:-0} -gt 0 ]; then + local append="" + [ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR" + + sync + dd if="$fw_file" bs=64k skip=1 count=$fw_blocks 2>/dev/null | \ + mtd $append write - "$fw_part" + fi +} + +dir825b_check_image() { + local magic="$(get_magic_long "$1")" + local fw_mtd=$(find_mtd_part "firmware_orig") + + case "$magic" in + "27051956") + ;; + "43493030") + local md5_img=$(dd if="$1" bs=2 skip=9 count=16 2>/dev/null) + local md5_chk=$(dd if="$1" bs=64k skip=1 2>/dev/null | md5sum -); md5_chk="${md5_chk%% *}" + local fw_len=$(dd if="$1" bs=2 skip=1 count=4 2>/dev/null) + local fw_part_len=$(mtd_get_part_size "firmware") + + if [ -z "$fw_mtd" ]; then + ask_bool 0 "Do you have a backup of the caldata partition?" || { + echo "Warning, please make sure that you have a backup of the caldata partition." + echo "Once you have that, use 'sysupgrade -i' for upgrading to the 'fat' firmware." + return 1 + } + fi + + if [ -z "$md5_img" -o -z "$md5_chk" ]; then + echo "Unable to get image checksums. Maybe you are using a streamed image?" + return 1 + fi + + if [ "$md5_img" != "$md5_chk" ]; then + echo "Invalid image. Contents do not match checksum (image:$md5_img calculated:$md5_chk)" + return 1 + fi + + fw_len=$((0x$fw_len)) + fw_part_len=${fw_part_len:-0} + + if [ $fw_part_len -lt $fw_len ]; then + echo "The upgrade image is too big (size:$fw_len available:$fw_part_len)" + return 1 + fi + ;; + *) + echo "Unsupported image format." + return 1 + ;; + esac + + return 0 +} + +platform_do_upgrade_dir825b() { + local magic="$(get_magic_long "$1")" + local fw_mtd=$(find_mtd_part "firmware_orig") + + case "$magic" in + "27051956") + if [ -n "$fw_mtd" ]; then + # restore calibration data before downgrading to + # the normal image + dir825b_copy_caldata "caldata" "caldata_orig" || { + echo "unable to restore calibration data" + exit 1 + } + PART_NAME="firmware_orig" + else + PART_NAME="firmware" + fi + default_do_upgrade "$ARGV" + ;; + "43493030") + if [ -z "$fw_mtd" ]; then + # backup calibration data before upgrading to the + # fat image + dir825b_copy_caldata "caldata" "caldata_copy" || { + echo "unable to backup calibration data" + exit 1 + } + fi + dir825b_do_upgrade_combined "firmware" "$ARGV" + ;; + esac +} diff --git a/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh b/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh new file mode 100644 index 0000000..9ca0f5b --- /dev/null +++ b/target/linux/ar71xx/base-files/lib/upgrade/openmesh.sh @@ -0,0 +1,218 @@ +# The U-Boot loader of the OpenMesh devices requires image sizes and +# checksums to be provided in the U-Boot environment. +# The OpenMesh devices come with 2 main partitions - while one is active +# sysupgrade will flash the other. The boot order is changed to boot the +# newly flashed partition. If the new partition can't be booted due to +# upgrade failures the previously used partition is loaded. + +trim() +{ + echo $1 +} + +cfg_value_get() +{ + local cfg=$1 cfg_opt + local section=$2 our_section=0 + local param=$3 our_param= + + for cfg_opt in $cfg + do + [ "$cfg_opt" = "[$section]" ] && our_section=1 && continue + [ "$our_section" = "1" ] || continue + + our_param=$(echo ${cfg_opt%%=*}) + [ "$param" = "$our_param" ] && echo ${cfg_opt##*=} && break + done +} + +# make sure we got uboot-envtools and fw_env.config copied over to the ramfs +# create /var/lock for the lock "fw_setenv.lock" of fw_setenv +platform_add_ramfs_ubootenv() +{ + [ -e /usr/sbin/fw_printenv ] && install_bin /usr/sbin/fw_printenv /usr/sbin/fw_setenv + [ -e /etc/fw_env.config ] && install_file /etc/fw_env.config + mkdir -p $RAM_ROOT/var/lock +} +append sysupgrade_pre_upgrade platform_add_ramfs_ubootenv + +platform_check_image_openmesh() +{ + local img_magic=$1 + local img_path=$2 + local fw_printenv=/usr/sbin/fw_printenv + local img_board_target= img_num_files= i=0 + local cfg_name= kernel_name= rootfs_name= + + case "$img_magic" in + # Combined Extended Image v1 + 43453031) + img_board_target=$(trim $(dd if="$img_path" bs=4 skip=1 count=8 2>/dev/null)) + img_num_files=$(trim $(dd if="$img_path" bs=2 skip=18 count=1 2>/dev/null)) + ;; + *) + echo "Invalid image ($img_magic). Use combined extended images on this platform" + return 1 + ;; + esac + + case "$img_board_target" in + OM2P) + [ "$board" = "om2p" ] && break + [ "$board" = "om2pv2" ] && break + [ "$board" = "om2p-lc" ] && break + [ "$board" = "om2p-hs" ] && break + [ "$board" = "om2p-hsv2" ] && break + echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform" + return 1 + ;; + OM5P) + [ "$board" = "om5p" ] && break + [ "$board" = "om5p-an" ] && break + echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform" + return 1 + ;; + MR1750) + [ "$board" = "mr1750" ] && break + echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform" + return 1 + ;; + MR600) + [ "$board" = "mr600" ] && break + [ "$board" = "mr600v2" ] && break + echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform" + return 1 + ;; + MR900) + [ "$board" = "mr900" ] && break + [ "$board" = "mr900v2" ] && break + echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform" + return 1 + ;; + *) + echo "Invalid board target ($img_board_target). Use the correct image for this platform" + return 1 + ;; + esac + + [ $img_num_files -ne 3 ] && { + echo "Invalid number of embedded images ($img_num_files). Use the correct image for this platform" + return 1 + } + + cfg_name=$(trim $(dd if="$img_path" bs=2 skip=19 count=16 2>/dev/null)) + + [ "$cfg_name" != "fwupgrade.cfg" ] && { + echo "Invalid embedded config file ($cfg_name). Use the correct image for this platform" + return 1 + } + + kernel_name=$(trim $(dd if="$img_path" bs=2 skip=55 count=16 2>/dev/null)) + + [ "$kernel_name" != "kernel" ] && { + echo "Invalid embedded kernel file ($kernel_name). Use the correct image for this platform" + return 1 + } + + rootfs_name=$(trim $(dd if="$img_path" bs=2 skip=91 count=16 2>/dev/null)) + + [ "$rootfs_name" != "rootfs" ] && { + echo "Invalid embedded kernel file ($rootfs_name). Use the correct image for this platform" + return 1 + } + + [ ! -x "$fw_printenv" ] && { + echo "Please install uboot-envtools!" + return 1 + } + + [ ! -r "/etc/fw_env.config" ] && { + echo "/etc/fw_env.config is missing" + return 1 + } + + return 0 +} + +platform_do_upgrade_openmesh() +{ + local img_path=$1 img_board_target= + local kernel_start_addr= kernel_start_addr1= kernel_start_addr2= + local kernel_size= kernel_md5= + local rootfs_size= rootfs_checksize= rootfs_md5= + local kernel_bsize= total_size= + local data_offset=$((64 * 1024)) block_size= offset= + local uboot_env_upgrade="/tmp/fw_env_upgrade" + local cfg_size= kernel_size= rootfs_size= + local append="" + + [ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR" + + cfg_size=$(dd if="$img_path" bs=2 skip=35 count=4 2>/dev/null) + kernel_size=$(dd if="$img_path" bs=2 skip=71 count=4 2>/dev/null) + rootfs_size=$(dd if="$img_path" bs=2 skip=107 count=4 2>/dev/null) + + img_board_target=$(trim $(dd if="$img_path" bs=4 skip=1 count=8 2>/dev/null)) + cfg_content=$(dd if="$img_path" bs=1 skip=$data_offset count=$(echo $((0x$cfg_size))) 2>/dev/null) + + case $img_board_target in + OM2P) + block_size=$((256 * 1024)) + total_size=7340032 + kernel_start_addr1=0x9f1c0000 + kernel_start_addr2=0x9f8c0000 + ;; + OM5P|MR600|MR900|MR1750) + block_size=$((64 * 1024)) + total_size=7995392 + kernel_start_addr1=0x9f0b0000 + kernel_start_addr2=0x9f850000 + ;; + esac + + kernel_md5=$(cfg_value_get "$cfg_content" "vmlinux" "md5sum") + rootfs_md5=$(cfg_value_get "$cfg_content" "rootfs" "md5sum") + rootfs_checksize=$(cfg_value_get "$cfg_content" "rootfs" "checksize") + + if [ "$((0x$kernel_size % $block_size))" = "0" ] + then + kernel_bsize=$(echo $((0x$kernel_size))) + else + kernel_bsize=$((0x$kernel_size + ($block_size - (0x$kernel_size % $block_size)))) + fi + + mtd -q erase inactive + + offset=$(echo $(($data_offset + 0x$cfg_size + 0x$kernel_size))) + dd if="$img_path" bs=1 skip=$offset count=$(echo $((0x$rootfs_size))) 2>&- | mtd -n -p $kernel_bsize $append write - "inactive" + + offset=$(echo $(($data_offset + 0x$cfg_size))) + dd if="$img_path" bs=1 skip=$offset count=$(echo $((0x$kernel_size))) 2>&- | mtd -n write - "inactive" + + rm $uboot_env_upgrade 2>&- + + if [ "$(grep 'mtd3:.*inactive' /proc/mtd)" ] + then + printf "kernel_size_1 %u\n" $(($kernel_bsize / 1024)) >> $uboot_env_upgrade + printf "rootfs_size_1 %u\n" $((($total_size - $kernel_bsize) / 1024)) >> $uboot_env_upgrade + printf "bootseq 1,2\n" >> $uboot_env_upgrade + kernel_start_addr=$kernel_start_addr1 + else + printf "kernel_size_2 %u\n" $(($kernel_bsize / 1024)) >> $uboot_env_upgrade + printf "rootfs_size_2 %u\n" $((($total_size - $kernel_bsize) / 1024)) >> $uboot_env_upgrade + printf "bootseq 2,1\n" >> $uboot_env_upgrade + kernel_start_addr=$kernel_start_addr2 + fi + + printf "vmlinux_start_addr %s\n" $kernel_start_addr >> $uboot_env_upgrade + printf "vmlinux_size 0x%s\n" $kernel_size >> $uboot_env_upgrade + printf "vmlinux_checksum %s\n" $kernel_md5 >> $uboot_env_upgrade + printf "rootfs_start_addr 0x%x\n" $(($kernel_start_addr + $kernel_bsize)) >> $uboot_env_upgrade + printf "rootfs_size %s\n" $rootfs_checksize >> $uboot_env_upgrade + printf "rootfs_checksum %s\n" $rootfs_md5 >> $uboot_env_upgrade + + fw_setenv -s $uboot_env_upgrade || { + echo "failed to update U-Boot environment" + return 1 + } +} diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh new file mode 100755 index 0000000..a464fee --- /dev/null +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -0,0 +1,559 @@ +# +# Copyright (C) 2011 OpenWrt.org +# + +. /lib/functions/system.sh +. /lib/ar71xx.sh + +PART_NAME=firmware +RAMFS_COPY_DATA=/lib/ar71xx.sh + +CI_BLKSZ=65536 +CI_LDADR=0x80060000 + +platform_find_partitions() { + local first dev size erasesize name + while read dev size erasesize name; do + name=${name#'"'}; name=${name%'"'} + case "$name" in + vmlinux.bin.l7|vmlinux|kernel|linux|linux.bin|rootfs|filesystem) + if [ -z "$first" ]; then + first="$name" + else + echo "$erasesize:$first:$name" + break + fi + ;; + esac + done < /proc/mtd +} + +platform_find_kernelpart() { + local part + for part in "${1%:*}" "${1#*:}"; do + case "$part" in + vmlinux.bin.l7|vmlinux|kernel|linux|linux.bin) + echo "$part" + break + ;; + esac + done +} + +platform_do_upgrade_combined() { + local partitions=$(platform_find_partitions) + local kernelpart=$(platform_find_kernelpart "${partitions#*:}") + local erase_size=$((0x${partitions%%:*})); partitions="${partitions#*:}" + local kern_length=0x$(dd if="$1" bs=2 skip=1 count=4 2>/dev/null) + local kern_blocks=$(($kern_length / $CI_BLKSZ)) + local root_blocks=$((0x$(dd if="$1" bs=2 skip=5 count=4 2>/dev/null) / $CI_BLKSZ)) + + if [ -n "$partitions" ] && [ -n "$kernelpart" ] && \ + [ ${kern_blocks:-0} -gt 0 ] && \ + [ ${root_blocks:-0} -gt 0 ] && \ + [ ${erase_size:-0} -gt 0 ]; + then + local append="" + [ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR" + + ( dd if="$1" bs=$CI_BLKSZ skip=1 count=$kern_blocks 2>/dev/null; \ + dd if="$1" bs=$CI_BLKSZ skip=$((1+$kern_blocks)) count=$root_blocks 2>/dev/null ) | \ + mtd -r $append -F$kernelpart:$kern_length:$CI_LDADR,rootfs write - $partitions + fi +} + +tplink_get_image_hwid() { + get_image "$@" | dd bs=4 count=1 skip=16 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + +tplink_get_image_boot_size() { + get_image "$@" | dd bs=4 count=1 skip=37 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + +tplink_pharos_check_image() { + local magic_long="$(get_magic_long "$1")" + [ "$magic_long" != "7f454c46" ] && { + echo "Invalid image magic '$magic_long'" + return 1 + } + + local model_string="$(tplink_pharos_get_model_string)" + local line + + # Here $1 is given to dd directly instead of get_image as otherwise the skip + # will take almost a second (as dd can't seek then) + # + # This will fail if the image isn't local, but that's fine: as the + # read loop won't be executed at all, it will return true, so the image + # is accepted (loading the first 1.5M of a remote image for this check seems + # a bit extreme) + dd if="$1" bs=1 skip=1511432 count=1024 2>/dev/null | while read line; do + [ "$line" == "$model_string" ] && break + done || { + echo "Unsupported image (model not in support-list)" + return 1 + } + + return 0 +} + +seama_get_type_magic() { + get_image "$@" | dd bs=1 count=4 skip=53 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + +cybertan_get_image_magic() { + get_image "$@" | dd bs=8 count=1 skip=0 2>/dev/null | hexdump -v -n 8 -e '1/1 "%02x"' +} + +cybertan_check_image() { + local magic="$(cybertan_get_image_magic "$1")" + local fw_magic="$(cybertan_get_hw_magic)" + + [ "$fw_magic" != "$magic" ] && { + echo "Invalid image, ID mismatch, got:$magic, but need:$fw_magic" + return 1 + } + + return 0 +} + +platform_do_upgrade_compex() { + local fw_file=$1 + local fw_part=$PART_NAME + local fw_mtd=$(find_mtd_part $fw_part) + local fw_length=0x$(dd if="$fw_file" bs=2 skip=1 count=4 2>/dev/null) + local fw_blocks=$(($fw_length / 65536)) + + if [ -n "$fw_mtd" ] && [ ${fw_blocks:-0} -gt 0 ]; then + local append="" + [ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR" + + sync + dd if="$fw_file" bs=64k skip=1 count=$fw_blocks 2>/dev/null | \ + mtd $append write - "$fw_part" + fi +} + +alfa_check_image() { + local magic_long="$(get_magic_long "$1")" + local fw_part_size=$(mtd_get_part_size firmware) + + case "$magic_long" in + "27051956") + [ "$fw_part_size" != "16318464" ] && { + echo "Invalid image magic \"$magic_long\" for $fw_part_size bytes" + return 1 + } + ;; + + "68737173") + [ "$fw_part_size" != "7929856" ] && { + echo "Invalid image magic \"$magic_long\" for $fw_part_size bytes" + return 1 + } + ;; + esac + + return 0 +} + +platform_check_image() { + local board=$(ar71xx_board_name) + local magic="$(get_magic_word "$1")" + local magic_long="$(get_magic_long "$1")" + + [ "$#" -gt 1 ] && return 1 + + case "$board" in + all0315n | \ + all0258n | \ + cap4200ag) + platform_check_image_allnet "$1" && return 0 + return 1 + ;; + alfa-ap96 | \ + alfa-nx | \ + ap113 | \ + ap121 | \ + ap121-mini | \ + ap136-010 | \ + ap136-020 | \ + ap135-020 | \ + ap147-010 | \ + ap96 | \ + bxu2000n-2-a1 | \ + db120 | \ + f9k1115v2 |\ + hornet-ub | \ + mr12 | \ + mr16 | \ + wpj558 | \ + zcn-1523h-2 | \ + zcn-1523h-5) + [ "$magic_long" != "68737173" -a "$magic_long" != "19852003" ] && { + echo "Invalid image type." + return 1 + } + return 0 + ;; + ap81 | \ + ap83 | \ + ap132 | \ + cf-e316n-v2 | \ + dgl-5500-a1 |\ + dhp-1565-a1 |\ + dir-505-a1 | \ + dir-600-a1 | \ + dir-615-c1 | \ + dir-615-e1 | \ + dir-615-e4 | \ + dir-615-i1 | \ + dir-825-c1 | \ + dir-835-a1 | \ + dlan-pro-500-wp | \ + dlan-pro-1200-ac | \ + dragino2 | \ + epg5000 | \ + esr1750 | \ + esr900 | \ + ew-dorin | \ + ew-dorin-router | \ + hiwifi-hc6361 | \ + hornet-ub-x2 | \ + mzk-w04nu | \ + mzk-w300nh | \ + tew-632brp | \ + tew-712br | \ + tew-732br | \ + wrt400n | \ + airgateway | \ + airgatewaypro | \ + airrouter | \ + bullet-m | \ + loco-m-xw | \ + nanostation-m | \ + rocket-m | \ + rocket-m-xw | \ + rocket-m-ti | \ + nanostation-m-xw | \ + rw2458n | \ + wpj531 | \ + wndap360 | \ + wpj344 | \ + wzr-hp-g300nh2 | \ + wzr-hp-g300nh | \ + wzr-hp-g450h | \ + wzr-hp-ag300h | \ + wzr-450hp2 | \ + whr-g301n | \ + whr-hp-g300n | \ + whr-hp-gn | \ + wlae-ag300n | \ + nbg460n_550n_550nh | \ + unifi | \ + unifi-outdoor | \ + carambola2 | \ + weio ) + [ "$magic" != "2705" ] && { + echo "Invalid image type." + return 1 + } + return 0 + ;; + + cpe510) + tplink_pharos_check_image "$1" && return 0 + return 1 + ;; + + bsb | \ + dir-825-b1 | \ + tew-673gru) + dir825b_check_image "$1" && return 0 + ;; + + mynet-rext|\ + wrt160nl) + cybertan_check_image "$1" && return 0 + return 1 + ;; + + qihoo-c301 | \ + mynet-n600 | \ + mynet-n750) + [ "$magic_long" != "5ea3a417" ] && { + echo "Invalid image, bad magic: $magic_long" + return 1 + } + + local typemagic=$(seama_get_type_magic "$1") + [ "$typemagic" != "6669726d" ] && { + echo "Invalid image, bad type: $typemagic" + return 1 + } + + return 0; + ;; + mr1750 | \ + mr600 | \ + mr600v2 | \ + mr900 | \ + mr900v2 | \ + om2p | \ + om2pv2 | \ + om2p-hs | \ + om2p-hsv2 | \ + om2p-lc | \ + om5p | \ + om5p-an) + platform_check_image_openmesh "$magic_long" "$1" && return 0 + return 1 + ;; + + antminer-s1 | \ + antminer-s3 | \ + archer-c5 | \ + archer-c7 | \ + el-m150 | \ + el-mini | \ + gl-inet | \ + mc-mac1200r | \ + minibox-v1 |\ + onion-omega | \ + oolite | \ + smart-300 | \ + tl-mr10u | \ + tl-mr11u | \ + tl-mr12u | \ + tl-mr13u | \ + tl-mr3020 | \ + tl-mr3040 | \ + tl-mr3040-v2 | \ + tl-mr3220 | \ + tl-mr3220-v2 | \ + tl-mr3420 | \ + tl-mr3420-v2 | \ + tl-wa701nd-v2 | \ + tl-wa7210n-v2 | \ + tl-wa7510n | \ + tl-wa750re | \ + tl-wa850re | \ + tl-wa860re | \ + tl-wa801nd-v2 | \ + tl-wa901nd | \ + tl-wa901nd-v2 | \ + tl-wa901nd-v3 | \ + tl-wdr3320-v2 | \ + tl-wdr3500 | \ + tl-wdr4300 | \ + tl-wdr4900-v2 | \ + tl-wdr6500-v2 | \ + tl-wr703n | \ + tl-wr710n | \ + tl-wr720n-v3 | \ + tl-wr741nd | \ + tl-wr741nd-v4 | \ + tl-wr841n-v1 | \ + tl-wa830re-v2 | \ + tl-wr841n-v7 | \ + tl-wr841n-v8 | \ + tl-wr841n-v9 | \ + tl-wr842n-v2 | \ + tl-wr941nd | \ + tl-wr941nd-v5 | \ + tl-wr1041n-v2 | \ + tl-wr1043nd | \ + tl-wr1043nd-v2 | \ + tl-wr2543n) + local magic_ver="0100" + + case "$board" in + tl-wdr6500-v2) + magic_ver="0200" + ;; + esac + + [ "$magic" != "$magic_ver" ] && { + echo "Invalid image type." + return 1 + } + + local hwid + local imageid + + hwid=$(tplink_get_hwid) + imageid=$(tplink_get_image_hwid "$1") + + [ "$hwid" != "$imageid" ] && { + echo "Invalid image, hardware ID mismatch, hw:$hwid image:$imageid." + return 1 + } + + local boot_size + + boot_size=$(tplink_get_image_boot_size "$1") + [ "$boot_size" != "00000000" ] && { + echo "Invalid image, it contains a bootloader." + return 1 + } + + return 0 + ;; + + tube2h) + alfa_check_image "$1" && return 0 + return 1 + ;; + + unifi-outdoor-plus | \ + uap-pro) + [ "$magic_long" != "19852003" ] && { + echo "Invalid image type." + return 1 + } + return 0 + ;; + wndr3700 | \ + wnr2000-v3 | \ + wnr612-v2 | \ + wnr1000-v2) + local hw_magic + + hw_magic="$(ar71xx_get_mtd_part_magic firmware)" + [ "$magic_long" != "$hw_magic" ] && { + echo "Invalid image, hardware ID mismatch, hw:$hw_magic image:$magic_long." + return 1 + } + return 0 + ;; + nbg6716 | \ + r6100 | \ + wndr3700v4 | \ + wndr4300 ) + nand_do_platform_check $board $1 + return $?; + ;; + routerstation | \ + routerstation-pro | \ + ls-sr71 | \ + pb42 | \ + pb44 | \ + all0305 | \ + eap300v2 | \ + eap7660d | \ + ja76pf | \ + ja76pf2 | \ + jwap003 | \ + wp543 | \ + wpe72) + [ "$magic" != "4349" ] && { + echo "Invalid image. Use *-sysupgrade.bin files on this board" + return 1 + } + + local md5_img=$(dd if="$1" bs=2 skip=9 count=16 2>/dev/null) + local md5_chk=$(dd if="$1" bs=$CI_BLKSZ skip=1 2>/dev/null | md5sum -); md5_chk="${md5_chk%% *}" + + if [ -n "$md5_img" -a -n "$md5_chk" ] && [ "$md5_img" = "$md5_chk" ]; then + return 0 + else + echo "Invalid image. Contents do not match checksum (image:$md5_img calculated:$md5_chk)" + return 1 + fi + return 0 + ;; + wnr2000-v4) + [ "$magic_long" != "32303034" ] && { + echo "Invalid image type." + return 1 + } + return 0 + ;; + + esac + + echo "Sysupgrade is not yet supported on $board." + return 1 +} + +platform_pre_upgrade() { + local board=$(ar71xx_board_name) + + case "$board" in + nbg6716 | \ + r6100 | \ + wndr3700v4 | \ + wndr4300 ) + nand_do_upgrade "$1" + ;; + esac +} + +platform_do_upgrade() { + local board=$(ar71xx_board_name) + + case "$board" in + routerstation | \ + routerstation-pro | \ + ls-sr71 | \ + all0305 | \ + eap7660d | \ + pb42 | \ + pb44 | \ + ja76pf | \ + ja76pf2 | \ + jwap003) + platform_do_upgrade_combined "$ARGV" + ;; + wp543|\ + wpe72) + platform_do_upgrade_compex "$ARGV" + ;; + all0258n ) + platform_do_upgrade_allnet "0x9f050000" "$ARGV" + ;; + all0315n ) + platform_do_upgrade_allnet "0x9f080000" "$ARGV" + ;; + eap300v2 |\ + cap4200ag) + platform_do_upgrade_allnet "0xbf0a0000" "$ARGV" + ;; + dir-825-b1 |\ + tew-673gru) + platform_do_upgrade_dir825b "$ARGV" + ;; + mr1750 | \ + mr600 | \ + mr600v2 | \ + mr900 | \ + mr900v2 | \ + om2p | \ + om2pv2 | \ + om2p-hs | \ + om2p-hsv2 | \ + om2p-lc | \ + om5p | \ + om5p-an) + platform_do_upgrade_openmesh "$ARGV" + ;; + unifi-outdoor-plus | \ + uap-pro) + MTD_CONFIG_ARGS="-s 0x180000" + default_do_upgrade "$ARGV" + ;; + *) + 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 diff --git a/target/linux/ar71xx/base-files/sbin/wget2nand b/target/linux/ar71xx/base-files/sbin/wget2nand new file mode 100755 index 0000000..8175a9e --- /dev/null +++ b/target/linux/ar71xx/base-files/sbin/wget2nand @@ -0,0 +1,85 @@ +#!/bin/sh +# wget2nand +# This script can be used to download a TGZ file from your build system which +# contains the files to be installed on the NAND flash on your RB1xx card. +# The one parameter is the URL of the TGZ file to be downloaded. +# Licence GPL V2 +# Author david.goodenough@linkchoose.co.uk +# Based on cf2nand from RB532 support +. /lib/functions.sh + +wget2nand_dir=/tmp/wget2nand +mnt_kernel=$wget2nand_dir/mnt_kernel +mnt_rootfs=$wget2nand_dir/mnt_rootfs +src_rootfs=$wget2nand_dir/rootfs.tgz +src_kernel=$wget2nand_dir/kernel + +[ -d "$wget2nand_dir" ] && { + echo "$wget2nand_dir already exists" + exit 1 +} + +# need to find the wget server from the command line +url=$1 +[ -z "$url" ] && { + echo "No URL specified for image TGZ" + echo "Usage : $0 URL" + exit 1 +} + +url_kernel=$url/openwrt-ar71xx-mikrotik-vmlinux-lzma.elf +url_rootfs=$url/openwrt-ar71xx-mikrotik-rootfs.tar.gz + +mtd_kernel="$(find_mtd_part 'kernel')" +mtd_rootfs="$(find_mtd_part 'rootfs')" +[ -z "$mtd_kernel" -o -z "$mtd_rootfs" ] && { + echo "Cannot find NAND Flash partitions" + exit 1 +} + +mkdir "$wget2nand_dir" +wget $url_kernel -O "$src_kernel" || { + echo "Unable to download $url_kernel" + exit 1 +} + +wget $url_rootfs -O "$src_rootfs" || { + echo "Unable to download $url_rootfs" + exit 1 +} + +echo "Erasing filesystem..." +mtd erase kernel 2>/dev/null >/dev/null +mtd erase rootfs 2>/dev/null >/dev/null + +echo "Mounting $mtd_rootfs as new root and $mtd_kernel as kernel partition" + +mkdir "$mnt_kernel" +mkdir "$mnt_rootfs" +mount -t yaffs2 "$mtd_kernel" "$mnt_kernel" +mount -t yaffs2 "$mtd_rootfs" "$mnt_rootfs" + +echo "Copying kernel..." +cp $src_kernel $mnt_kernel/kernel || { + echo "Error occured while copying the kernel" + exit 1 +} +chmod +x $mnt_kernel/kernel + +echo "Preparing filesystem..." +( cd "$mnt_rootfs"; tar xvz -f "$src_rootfs" ) + +# make sure everything is written before we unmount the partitions +echo "chmod ugo+x /" > $mnt_rootfs/etc/uci-defaults/set_root_permission +sync +ls $mnt_kernel >/dev/null +ls $mnt_rootfs >/dev/null + +echo "Cleaning up..." +# unmount the partitions and remove the directories into which they were mounted +umount $mnt_kernel +umount $mnt_rootfs +rm -rf $wget2nand_dir + +# all done +echo "Image written, you can now reboot. Remember to change the boot source to Boot from Nand" -- cgit v1.2.3