openwrtv4/target/linux/ramips/base-files/etc/diag.sh

326 lines
4.6 KiB
Bash
Raw Normal View History

#!/bin/sh
# Copyright (C) 2010-2013 OpenWrt.org
. /lib/functions.sh
. /lib/functions/leds.sh
get_status_led() {
board=$(board_name)
case $board in
3g150b|\
3g300m|\
w150m)
status_led="$board:blue:ap"
;;
3g-6200n|\
ar670w|\
ar725w|\
br-6475nd|\
c50|\
dch-m225|\
dir-860l-b1|\
e1700|\
ex2700|\
ex3700|\
fonera20n|\
hg255d|\
kn|\
kn_rc|\
kn_rf|\
kng_rc|\
mzk-750dhp|\
mzk-dp150n|\
mzk-w300nh2|\
nbg-419n|\
nbg-419n2|\
pwh2004|\
r6220|\
ramips: add support for TP-Link TL-WR840N v4 and TL-WR841N v13 TP-Link TL-WR840N v4 and TL-WR841N v13 are simple N300 routers with 5-port FE switch and non-detachable antennas. Both are very similar and are based on MediaTek MT7628NN (aka MT7628N) WiSoC. The difference between these two models is in number of available LEDs, buttons and power input switch. This work is partially based on GitHub PR#974. Specification: - MT7628N/N (580 MHz) - 64 MB of RAM (DDR2) - 8 MB of FLASH - 2T2R 2.4 GHz - 5x 10/100 Mbps Ethernet - 2x external, non-detachable antennas - UART (J1) header on PCB (115200 8n1) - TL-WR840N v4: 5x LED (GPIO-controlled), 1x button - TL-WR841N v13: 8x LED (GPIO-controlled*), 2x button, power input switch * WAN LED in TL-WR841N v13 is a dual-color, dual-leads type which isn't (fully) supported by gpio-leds driver. This type of LED requires both GPIOs state change at the same time to select color or turn it off. For now, we support/use only the green part of the LED. Factory image notes: These devices use version 3 of TP-Link header, fortunately without RSA signature (at least in case of devices sold in Europe). The difference lays in the requirement for a non-zero value in "Additional Hardware Version" field. Ideally, it should match the value stored in vendor firmware header on device ("0x4"/"0x13" for these devices) but it seems that anything other than "0" is correct. We are able to prepare factory firwmare file which is accepted and (almost) correctly flashed from the vendor GUI. As it turned out, it accepts files without U-Boot image with second header at the beginning but due to some kind of bug in upgrade routine, flashed image gets corrupted before it's written to flash. Tests showed that the GUI upgrade routine copies value of "Additional Hardware Version" from existing firmware into offset "0x2023c" in provided file, _before_ storing it in flash. In case of vendor firmware upgrade files (which all include U-Boot image and two headers), this offset points to the matching field in kernel+rootfs firmware part header. Unfortunately, in case of LEDE factory image file which contains only one header, it points to the offset "0x2023c" in kernel image. This leads to a corrupted kernel and ends up with a "soft-bricked" device. The good news is that U-Boot in these devices contains well known tftp recovery mode, which can be triggered with "reset" button. What's more, in comparison to some of older MediaTek based TP-Link devices, this recovery mode doesn't write whole file at offset "0x0" in flash, without verifying provided file in advance. In case of recovery mode in these devices, first "0x20000" bytes are always skipped and "0x7a0000" bytes from rest of the file are stored in flash at offset "0x20000". Flash instruction: Until (if at all) TP-Link fixes described problem, the only way to flash LEDE image in these devices is to use tftp recovery mode in U-Boot: 1. Configure PC with static IP 192.168.0.66/24 and tftp server. 2. Rename "lede-ramips-mt7628-tl-wr84...-squashfs-tftp-recovery.bin" to "tp_recovery.bin" and place it in tftp server directory. 3. Connect PC with one of LAN ports, press the reset button, power up the router and keep button pressed for around 6-7 seconds, until device starts downloading the file. 4. Router will download file from server, write it to flash and reboot. To access U-Boot CLI, keep pressed "4" key during boot. Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
2017-06-21 12:16:15 +00:00
tl-wr840n-v4|\
tl-wr841n-v13|\
vr500|\
wnce2001|\
wndr3700v5|\
x5|\
x8|\
xdxrn502j|\
wn3000rpv3)
status_led="$board:green:power"
;;
3g-6200nl)
status_led="$board:green:internet"
;;
a5-v11|\
cs-qr10|\
d105|\
dcs-930l-b1|\
hlk-rm04|\
jhr-n825r|\
mpr-a1|\
mpr-a2|\
mzk-ex750np)
status_led="$board:red:power"
;;
ai-br100|\
ht-tm02)
status_led="$board:blue:wlan"
;;
all0239-3g|\
dcs-930|\
dir-300-b1|\
dir-300-b7|\
dir-320-b1|\
dir-600-b1|\
dir-610-a1|\
dir-615-d|\
dir-615-h1|\
dir-620-a1|\
dir-620-d1|\
dwr-512-b|\
gb-pc1|\
hpm|\
hw550-3g|\
mac1200rv2|\
miniembwifi|\
mofi3500-3gn|\
rut5xx|\
v11st-fe|\
wmr-300|\
zbt-wg2626)
status_led="$board:green:status"
;;
asl26555-8M|\
asl26555-16M)
status_led="asl26555:green:power"
;;
atp-52b|\
ew1200|\
ip2202)
status_led="$board:green:run"
;;
awapn2403|\
dir-645|\
sk-wb8|\
wrh-300cr)
status_led="$board:green:wps"
;;
ramips: add support for the HNET C108 The HNET C108 (http://www.szhwtech88.com/Product-product-cid-100-id-4374.html) is a mifi based on MT7602A, which has the following specifications: * CPU: MT7620A * 1x 10/100Mbps Ethernet. * 16 MB Flash. * 64 MB RAM. * 1x USB 2.0 port. Only power is connected, this port is meant for charging other devices. * 1x mini-PCIe slots. * 1x SIM slots. * 1x 2.4Ghz WIFI. * 1x button. * 6000 mAh battery. * 5x controllable LEDs. Works: * Wifi. * Switch. * mini-PCIe slot. Only tested with a USB device (a modem). * SIM slot. * Sysupgrade. * Button (reset). Not working (also applies to the factory firmware): * Wifi LED. It is always switched on, there is no relation to the up/down state or activity of the wireless interface. Not tested: * SD card reader. Notes: * The C108 has no dedicated status LED. I therefore set the LAN LED as status LED. Installation: The router comes pre-installed with OpenWRT, including a variant of Luci. The initial firmware install can be done through this UI, following normal procedure. I.e., access the UI and update the firmware using the sysupgrade-image. Remember to select that you do not want to keep existing settings. Recovery: If you brick the device, the C108 supports recovery using TFTP. Keep the reset button pressed for ~5sec when booting to trigger TFTP. Set the address of the network interface on your machine to 10.10.10.3/24, and rename your image file to Kernal.bin. Signed-off-by: Kristian Evensen <kristian.evensen@gmail.com>
2017-09-06 09:14:16 +00:00
c108)
status_led="$board:green:lan"
;;
cf-wr800n|\
psg1208)
status_led="$board:white:wps"
;;
psg1218a|\
psg1218b)
status_led="$board:yellow:status"
;;
cy-swr1100|\
w502u)
status_led="$board:blue:wps"
;;
ramips: add support for TP-Link Archer C20 v1 TP-Link Archer C20 v1 is a router with 5-port FE switch and non-detachable antennas. It's very similiar to TP-Link Archer C50. Also it's based on MediaTek MT7620A+MT7610EN. Specification: - MediaTek MT7620A (580 Mhz) - 64 MB of RAM - 8 MB of FLASH - 2T2R 2.4 GHz and 1T1R 5 GHz - 5x 10/100 Mbps Ethernet - 2x external, non-detachable antennas - UART (J1) header on PCB (115200 8n1) - 8x LED (GPIO-controlled*), 2x button, power input switch - 1 x USB 2.0 port * WAN LED in this devices is a dual-color, dual-leads type which isn't (fully) supported by gpio-leds driver. This type of LED requires both GPIOs state change at the same time to select color or turn it off. For now, we support/use only the blue part of the LED. * MT7610EN ac chip isn't not supported by LEDE. Therefore 5Ghz won't work. Factory image notes: These devices use version 3 of TP-Link header, fortunately without RSA signature (at least in case of devices sold in Europe). The difference lays in the requirement for a non-zero value in "Additional Hardware Version" field. Ideally, it should match the value stored in vendor firmware header on device. We are able to prepare factory firwmare file which is accepted and (almost) correctly flashed from the vendor GUI. As it turned out, it accepts files without U-Boot image with second header at the beginning but due to some kind of bug in upgrade routine, flashed image gets corrupted before it's written to flash. So, to flash this device we must to prepare image using original firmware from tp-link site with uboot. Flash instruction: Until (if at all) TP-Link fixes described problem, the only way to flash LEDE image in these devices is to use tftp recovery mode in U-Boot. There are two ways to flash the device to LEDE: 1) Using tftp mode with UART connection and original LEDE image - Place lede-ramips-mt7620-ArcherC20-squashfs-factory.bin in tftp server directory - Configure PC with static IP 192.168.0.66/24 and tftp server. - Connect PC with one of LAN ports, power up the router and press key "4" to access U-Boot CLI. - Use the following commands to update the device to LEDE: setenv serverip 192.168.0.66 tftp 0x80060000 lede-ramips-mt7620-ArcherC20-squashfs-factory.bin erase tplink 0x20000 0x7a0000 cp.b 0x80060000 0x20000 0x7a0000 reset - After that the device will reboot and boot to LEDE 2) Using tftp mode without UART connection but require some manipulations with target image - Download and unpack TP-Link Archer C20 v1 firmware from original web site - Split uboot.bin from original firmware by this command (example): dd if=Archer_C20v1_0.9.1_4.0_up_boot(160427)_2016-04-27_13.53.59.bin of=uboot.bin bs=512 count=256 skip=1 - Create ArcherC20V1_tp_recovery.bin using this command: cat uboot.bin lede-ramips-mt7620-ArcherC20-squashfs-factory.bin > ArcherC20V1_tp_recovery.bin - Place ArcherC20V1_tp_recovery.bin in tftp server directory. - Configure PC with static IP 192.168.0.66/24 and tftp server. - Connect PC with one of LAN ports, press the reset button, power up the router and keep button pressed for around 6-7 seconds, until device starts downloading the file. - Router will download file from server, write it to flash and reboot. Signed-off-by: Maxim Anisimov <maxim.anisimov.ua@gmail.com>
2017-09-08 09:39:17 +00:00
c20|\
d240|\
dap-1350|\
na930|\
pbr-m1|\
re350-v1|\
rt-ac51u|\
rt-n13u|\
rt-n14u|\
rt-n15|\
rt-n56u|\
wl-330n|\
wl-330n3g|\
wli-tx4-ag300n|\
y1|\
y1s)
status_led="$board:blue:power"
;;
db-wrt01|\
esr-9753|\
pbr-d1)
status_led="$board:orange:power"
;;
f5d8235-v1)
status_led="$board:blue:wired"
;;
f5d8235-v2)
status_led="$board:blue:router"
;;
f7c027|\
timecloud)
status_led="$board:orange:status"
;;
hc5*61|\
hc5661a|\
jhr-n805r|\
jhr-n926r|\
mlw221|\
mlwg2)
status_led="$board:blue:system"
;;
hc5962)
status_led="$board:white:status"
;;
k2p|\
m3|\
miwifi-nano)
status_led="$board:blue:status"
;;
linkits7688| \
linkits7688d)
[ "$1" = "upgrade" ] && status_led="mediatek:orange:wifi"
;;
m2m)
status_led="$board:blue:wifi"
;;
gl-mt300n-v2)
status_led="$board:red:wlan"
;;
m4-4M|\
m4-8M)
status_led="m4:blue:status"
;;
mir3g)
status_led="$board:yellow:status"
;;
miwifi-mini|\
zte-q7)
status_led="$board:red:status"
;;
mr-102n)
status_led="$board:amber:status"
;;
mr200)
status_led="$board:white:power"
;;
nw718)
status_led="$board:amber:cpu"
;;
newifi-d1)
status_led="$board:blue:status"
;;
omega2| \
omega2p)
status_led="$board:amber:system"
;;
oy-0001|\
sl-r7205)
status_led="$board:green:wifi"
;;
psr-680w)
status_led="$board:red:wan"
;;
px-4885-4M|\
px-4885-8M)
status_led="px-4885:orange:wifi"
;;
re6500|\
whr-1166d|\
whr-600d|\
widora-neo)
status_led="$board:orange:wifi"
;;
mzk-ex300np|\
rt-n10-plus|\
tew-638apb-v2|\
tew-691gr|\
tew-692gr|\
ur-326n4g|\
ur-336un|\
wf-2881)
status_led="$board:green:wps"
;;
rb750gr3)
status_led="$board:blue:pwr"
;;
sap-g3200u3)
status_led="$board:green:usb"
;;
v22rw-2x2)
status_led="$board:green:security"
;;
vocore-8M|\
vocore-16M)
status_led="vocore:green:status"
;;
vocore2)
status_led="$board:fuchsia:status"
;;
vocore2lite)
status_led="$board:green:status"
;;
w306r-v20|\
witi|\
zbt-wr8305rt)
status_led="$board:green:sys"
;;
wcr-1166ds|\
whr-300hp2|\
wsr-1166|\
wsr-600)
status_led="$board:green:power"
;;
wcr-150gn|\
wl-351)
status_led="$board:amber:power"
;;
whr-g300n|\
wlr-6000|\
zbt-we2026)
ramips: add support for Sitecom WLR-6000 The Sitecom firmware upgrade file has SENAO_FIRMWARE_TYPE 2 set. This looks rather wrong since SENAO_FIRMWARE_TYPE 2 is kernel only but the file is way to big for only including a kernel. The factory image need to have the dlf file extension. Otherwise the Sitecom firmware rejects the file. The stock firmware uses the following mac addresses: LAN: 00:0C:F6:AA:BB:D8 (u-boot env: ethaddr) 2,4: 00:0C:F6:AA:BB:D8 (EEPROM) 5: 00:0C:F6:AA:BB:DC (EEPROM) WAN: 00:0C:F6:AA:C8:43 (u-boot env: wanaddr) Assuming the mac address range :D8 to :DC is reserved for this device, the MAC addresses were reorder to have a unique MAC address for each interface: 2.4GHz: 00:0C:F6:AA:BB:D8 LAN: 00:0C:F6:AA:BB:D9 WAN: 00:0C:F6:AA:BB:DA 5 GHz: 00:0C:F6:AA:BB:DC The first MAC is assigned to the 2.4GHz WiFi interface to keep compatibility with the SSIDs printed on the case, which have the last three sextets of the MAC address appended. There are still issues with the rt2x00 driver. It is not possible to use both wireless interfaces at the same time. The 2.4 GHz wireless (PCIe) only works if the internal 5GHz wireless is/has been enabled or used for scanning. The internal 5GHz wireless only works if the 2.4GHz wireless (PCIe) was never enabled. Disabling the 2.4Ghz after it was enabled will result in stations seeing the 5Ghz AP but are unable to connect. Due to the not optimal working wifi the manufacture, backup and storage partitions of the OEM firmware are kept for now to allow an easy switch back to the Sitecom firmware. Signed-off-by: Jasper Scholte <NightNL@outlook.com> Signed-off-by: Mathias Kresin <dev@kresin.me>
2016-08-14 21:30:44 +00:00
status_led="$board:red:power"
;;
wzr-agl300nh)
status_led="$board:green:router"
;;
wizfi630a)
status_led="$board::run"
;;
wr512-3gn-4M|\
wr512-3gn-8M)
status_led="wr512-3gn:green:wps"
;;
wrtnode2r | \
wrtnode2p | \
wrtnode)
status_led="wrtnode:blue:indicator"
;;
wt3020-4M|\
wt3020-8M)
status_led="wt3020:blue:power"
;;
zbt-cpe102)
status_led="$board:green:4g-0"
;;
zbt-we826-16M|\
zbt-we826-32M)
status_led="zbt-we826:green:power"
;;
zbt-wg3526-16M|\
zbt-wg3526-32M)
status_led="zbt-wg3526:green:status"
;;
esac
}
set_state() {
get_status_led $1
case "$1" in
preinit)
status_led_blink_preinit
;;
failsafe)
status_led_blink_failsafe
;;
upgrade | \
preinit_regular)
status_led_blink_preinit_regular
;;
done)
status_led_on
;;
esac
}