2009-10-23 16:51:51 +00:00
|
|
|
#!/bin/sh
|
2011-12-01 22:48:35 +00:00
|
|
|
|
2012-12-19 16:07:50 +00:00
|
|
|
. /lib/functions.sh
|
2015-12-11 15:26:06 +00:00
|
|
|
. /lib/functions/uci-defaults.sh
|
2014-07-23 07:49:50 +00:00
|
|
|
. /lib/functions/system.sh
|
2011-12-01 22:48:35 +00:00
|
|
|
|
2012-08-29 10:37:38 +00:00
|
|
|
ramips_setup_rt3x5x_vlans()
|
|
|
|
{
|
|
|
|
if [ ! -x /sbin/swconfig ]; then
|
|
|
|
# legacy default
|
|
|
|
ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
|
|
|
|
return
|
|
|
|
fi
|
|
|
|
local wanports=""
|
|
|
|
local lanports=""
|
|
|
|
for port in 5 4 3 2 1 0; do
|
|
|
|
if [ `swconfig dev rt305x port $port get disable` = "1" ]; then
|
|
|
|
continue
|
|
|
|
fi
|
|
|
|
if [ `swconfig dev rt305x port $port get lan` = "0" ]; then
|
2015-12-03 15:46:29 +00:00
|
|
|
wanports="$port:wan $wanports"
|
2012-08-29 10:37:38 +00:00
|
|
|
else
|
2015-12-03 15:46:29 +00:00
|
|
|
lanports="$port:lan $lanports"
|
2012-08-29 10:37:38 +00:00
|
|
|
fi
|
|
|
|
done
|
2016-10-12 17:04:08 +00:00
|
|
|
ucidef_add_switch "rt305x" $lanports $wanports "6t@eth0"
|
2012-08-29 10:37:38 +00:00
|
|
|
}
|
|
|
|
|
2011-12-01 22:48:43 +00:00
|
|
|
ramips_setup_interfaces()
|
|
|
|
{
|
|
|
|
local board="$1"
|
2011-12-01 22:48:35 +00:00
|
|
|
|
2011-12-01 22:48:43 +00:00
|
|
|
case $board in
|
2016-12-23 07:21:31 +00:00
|
|
|
11acnas|\
|
2017-03-18 16:11:14 +00:00
|
|
|
w2914nsv2|\
|
|
|
|
zbt-we2026)
|
2016-12-23 07:21:31 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "4:wan:5" "6@eth0"
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
3g150b|\
|
|
|
|
3g300m|\
|
2016-05-04 19:22:19 +00:00
|
|
|
a5-v11|\
|
2017-04-07 22:34:48 +00:00
|
|
|
all0256n-4M|\
|
|
|
|
all0256n-8M|\
|
2015-08-17 06:02:59 +00:00
|
|
|
all5002|\
|
|
|
|
all5003|\
|
|
|
|
broadway|\
|
|
|
|
dcs-930|\
|
|
|
|
dcs-930l-b1|\
|
|
|
|
ht-tm02|\
|
2015-10-19 10:07:38 +00:00
|
|
|
linkits7688 | \
|
2016-05-04 19:21:41 +00:00
|
|
|
m2m|\
|
2015-08-17 06:02:59 +00:00
|
|
|
microwrt|\
|
2016-05-19 05:37:58 +00:00
|
|
|
mpr-a2|\
|
2015-08-17 06:02:59 +00:00
|
|
|
ncs601w|\
|
2017-01-09 19:59:56 +00:00
|
|
|
omega2 | \
|
|
|
|
omega2p | \
|
2016-08-10 00:18:32 +00:00
|
|
|
timecloud|\
|
2015-08-17 06:02:59 +00:00
|
|
|
w150m|\
|
2018-01-17 07:14:41 +00:00
|
|
|
widora,neo-16m|\
|
2018-01-08 05:27:28 +00:00
|
|
|
widora,neo-32m|\
|
2015-08-17 06:02:59 +00:00
|
|
|
wnce2001|\
|
2016-09-25 19:09:31 +00:00
|
|
|
zbt-cpe102|\
|
2015-08-17 06:02:59 +00:00
|
|
|
zte-q7)
|
2015-12-03 17:30:08 +00:00
|
|
|
ucidef_add_switch "switch0"
|
2016-05-04 19:21:41 +00:00
|
|
|
ucidef_add_switch_attr "switch0" "enable" "false"
|
2012-08-29 10:37:47 +00:00
|
|
|
ucidef_set_interface_lan "eth0"
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
mlw221|\
|
2015-05-23 15:27:05 +00:00
|
|
|
mr-102n)
|
2015-01-08 20:25:55 +00:00
|
|
|
ucidef_set_interface_lan "eth0.2"
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
3g-6200n|\
|
|
|
|
ai-br100|\
|
2017-10-14 08:44:39 +00:00
|
|
|
alfa-network,ac1200rm|\
|
2018-02-22 16:08:14 +00:00
|
|
|
mediatek,ap-mt7621a-v60|\
|
2017-02-04 20:28:52 +00:00
|
|
|
d240|\
|
2015-09-14 20:08:55 +00:00
|
|
|
db-wrt01|\
|
2015-08-17 06:02:59 +00:00
|
|
|
dir-300-b7|\
|
|
|
|
dir-320-b1|\
|
|
|
|
dir-610-a1|\
|
|
|
|
dir-615-h1|\
|
2017-02-27 20:59:50 +00:00
|
|
|
ew1200|\
|
2015-08-17 06:02:59 +00:00
|
|
|
firewrt|\
|
2017-02-24 23:19:15 +00:00
|
|
|
hc5661a|\
|
2017-02-22 12:47:22 +00:00
|
|
|
hc5962|\
|
2015-08-17 06:02:59 +00:00
|
|
|
hlk-rm04|\
|
2017-07-18 05:02:51 +00:00
|
|
|
k2p|\
|
2017-04-27 18:02:05 +00:00
|
|
|
kn|\
|
2017-04-22 20:46:23 +00:00
|
|
|
kn_rc|\
|
2016-09-08 22:57:31 +00:00
|
|
|
mac1200rv2|\
|
2015-08-17 06:02:59 +00:00
|
|
|
miwifi-mini|\
|
2016-03-16 09:26:48 +00:00
|
|
|
miwifi-nano|\
|
2015-08-17 06:02:59 +00:00
|
|
|
mt7621|\
|
|
|
|
mt7628|\
|
|
|
|
mzk-750dhp|\
|
|
|
|
mzk-w300nh2|\
|
ramips: add support for newifi d2
Previously Newifi D2 could only use PandoraBox M1's firmware.
It works fine, but LED GPIO is different.
As a result, a separated DTS file for this device should be implemented.
Hardware spec:
* CPU: MTK MT7621A
* RAM: 512MB
* ROM: 32MB SPI Flash
* WiFi: MTK MT7603+MT7612
* Button: 2 buttons (reset, wps)
* LED: 3 single-color LEDs (USB, WiFi 2.4GHz, WiFi 5GHz) &
2 dual-color LEDs (Power, Internet)
* Ethernet: 5 ports, 4 LAN + 1 WAN
Installation method:
Same as Newifi D1, users may need to request unlock code from the device
manufacturer. Otherwise, a SPI flash programmer may be necessary to get
the firmware flashed. After the device is unlocked, press and hold reset
button before power cable plugs in. Then go to http://192.168.1.1 to
upload and flash the firmware package.
Signed-off-by: Jackson Ming Hu <huming2207@gmail.com>
2017-12-15 03:51:33 +00:00
|
|
|
d-team,newifi-d2|\
|
2017-04-07 22:34:48 +00:00
|
|
|
nixcore-x1-8M|\
|
|
|
|
nixcore-x1-16M|\
|
2015-08-17 06:02:59 +00:00
|
|
|
oy-0001|\
|
|
|
|
pbr-m1|\
|
2016-02-15 18:45:22 +00:00
|
|
|
psg1208|\
|
2017-04-21 00:47:44 +00:00
|
|
|
psg1218a|\
|
2017-03-11 07:44:33 +00:00
|
|
|
r6220|\
|
2017-12-08 19:36:06 +00:00
|
|
|
rt-n12p|\
|
2015-08-17 06:02:59 +00:00
|
|
|
sap-g3200u3|\
|
2016-05-10 16:17:54 +00:00
|
|
|
sk-wb8|\
|
ramips: add support for UniElec U7621-06
UniElec U7621-06 is a router platform board based on MediaTek MT7621AT.
The device has the following specifications:
- MT7621AT (880 MHz)
- 256/512 MB of RAM (DDR3)
- 8/16/32/64 MB of FLASH (SPI NOR)
- 5x 1 Gbps Ethernet (MT7621 built-in switch)
- 1x ASMedia ASM1061 (for mSATA and SATA)
- 2x miniPCIe slots (PCIe bus only)
- 1x mSATA slot (with USB 2.0 bus for modem)
- 1x SATA
- 1x miniSIM slot
- 1x microSD slot
- 1x USB 3.0
- 12x LEDs (3 GPIO-controlled)
- 1x reset button
- 1x UART header (4-pins)
- 1x GPIO header (30-pins)
- 1x FPC connector for LEDs (20-pin, 0.5 mm pitch)
- 1x DC jack for main power (12 V)
The following has been tested and is working:
- Ethernet switch
- miniPCIe slots (tested with Wi-Fi cards)
- mSATA slot (tested with modem and mSATA drive)
- miniSIM slot
- sysupgrade
- reset button
- microSD slot
Installation:
This board might come with a different firmware versions (MediaTek SDK,
PandoraBox, Padavan, etc.). If your board comes with PandoraBox, you can
install LEDE using sysupgrade. Just SSH to the router and perform forced
sysupgrade (due to a board name mismatch). The default IP of this board
should be: 192.168.1.1 and username/password: root/admin. In case of a
different firmware, you can use web based recovery described below.
Use the following command to perform the sysupgrade (for the 256MB
RAM/16MB flash version):
sysupgrade -n -F lede-ramips-mt7621-u7621-06-256M-16M-squashfs-sysupgrade.bin
Recovery:
This board contains a Chinese, closed-source bootloader called Breed
(Boot and Recovery Environment for Embedded Devices). Breed supports web
recovery and to enter it, you keep the reset button pressed for around
5 seconds during boot. Your machine will be assigned an IP through DHCP
and the router will use IP address 192.168.1.1. The recovery website is
in Chinese, but is easy to use. Click on the second item in the list to
access the recovery page, then the second item on the next page is where
you select the firmware. In order to start the recovery, you click the
button at the bottom.
LEDs list (top row, left to right):
- LED_WWAN# (connected with pin 42 in LTE/mSATA slot)
- Power (connected directly to 3V3)
- CTS2_N (GPIO10, configured as "status" LED)
- TXD2 (GPIO11, configured as "led4", without default trigger)
- RXD2 (GPIO12, configured as "led5", without default trigger)
- LED_WLAN# (connected with pin 44 in wifi0 slot)
LEDs list (bottom row, left to right):
- ESW_P0_LED_0
- ESW_P1_LED_0
- ESW_P2_LED_0
- ESW_P3_LED_0
- ESW_P4_LED_0
- LED_WLAN# (connected with pin 44 in wifi1 slot)
Other notes:
1. The board is available with different amounts of RAM and flash. We
have only added support for the 256/16 MB configuration, as that seems
to be the default. However, all the required infrastructure is in place
for making support for the other configurations easy.
2. The manufacturer offers five different wireless cards with MediaTek
chipsets, based on MT76x2, MT7603 and MT7615. Images of the board all
show that the miniPCIe slots are dedicated to specific Wi-Fi cards.
However, the slots are generic.
3. All boards we got access to had the same EEPROM content. The default
firmware reads the Ethernet MAC from offset 0xe000 in factory partition.
This offset only contains 0xffs, so a random MAC will be generated on
every boot of the router. There is a valid MAC stored at offset 0xe006
and this MAC is shown as the WAN MAC in the bootloader. However, it is
the same on all boards we have checked. Based on information provided
by the vendor, all boards sold in small quantities are considered more
as samples for development purposes.
Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
Signed-off-by: Kristian Evensen <kristian.evensen@gmail.com>
2017-11-02 15:04:49 +00:00
|
|
|
u7621-06-256M-16M|\
|
2016-10-10 01:24:42 +00:00
|
|
|
vr500|\
|
2015-11-24 18:29:26 +00:00
|
|
|
wf-2881|\
|
2015-12-11 15:04:13 +00:00
|
|
|
witi|\
|
2016-11-06 12:00:38 +00:00
|
|
|
wl-wn575a3|\
|
2016-04-26 11:43:53 +00:00
|
|
|
wndr3700v5|\
|
2016-09-09 18:57:58 +00:00
|
|
|
youku-yk1|\
|
|
|
|
zbt-ape522ii|\
|
2017-04-20 03:07:26 +00:00
|
|
|
zbt-we1326|\
|
2017-12-01 07:10:24 +00:00
|
|
|
zbtlink,zbt-we3526|\
|
2017-04-12 05:53:56 +00:00
|
|
|
zbt-we826-16M|\
|
|
|
|
zbt-we826-32M|\
|
2015-11-24 18:29:02 +00:00
|
|
|
zbt-wg2626|\
|
2017-04-07 21:52:27 +00:00
|
|
|
zbt-wg3526-16M|\
|
2017-04-01 08:46:44 +00:00
|
|
|
zbt-wg3526-32M|\
|
2016-09-09 18:57:58 +00:00
|
|
|
zbt-wr8305rt)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "6@eth0"
|
2015-08-17 06:02:59 +00:00
|
|
|
;;
|
2018-01-26 15:21:34 +00:00
|
|
|
alfa-network,awusfree1|\
|
|
|
|
cs-qr10|\
|
|
|
|
d105|\
|
|
|
|
dlink,dap-1522-a1|\
|
|
|
|
dch-m225|\
|
|
|
|
ex2700|\
|
|
|
|
ex3700|\
|
|
|
|
hpm|\
|
|
|
|
mzk-ex300np|\
|
|
|
|
mzk-ex750np|\
|
|
|
|
na930|\
|
|
|
|
pbr-d1|\
|
|
|
|
tama,w06|\
|
|
|
|
u25awf-h1|\
|
|
|
|
wli-tx4-ag300n|\
|
|
|
|
wmdr-143n|\
|
|
|
|
wmr-300|\
|
|
|
|
wn3000rpv3|\
|
|
|
|
wrh-300cr)
|
|
|
|
ucidef_set_interface_lan "eth0"
|
|
|
|
;;
|
2017-08-12 14:56:11 +00:00
|
|
|
mir3g)
|
|
|
|
ucidef_add_switch "switch0" \
|
ramips: improve Xiaomi Mi Router 3G support
This commit improves support for the Xiaomi Mi Router 3G originally
added in commit 6e283cdc0da25928f8148805ebef7f8f2b769ee8
Improvements:
- Remove software watchdog as hardware watchdog now working as per
commit 3fbf3ab44f5cebb22e30a4c8681b13341feed6a6 for all mt7621
devices.
- Reset button polarity corrected - length of press determines reboot
(short press) vs. reset to defaults (long press) behaviour.
- Enable GPIO amber switch port LEDs on board rear - lit indicates 1Gbit
link and blink on activity. Green LEDs driven directly by switch
indicating any link speed and tx activity.
- USB port power on/off GPIO exposed as 'usbpower'
- Add access to uboot environment settings for checking/setting uboot
boot order preference from user space.
Changes:
- Front LED indicator is physically made of independent Yellow/Amber,
Red & Blue LEDs combined via a plastic 'lightpipe' to a front panel
indicator, hence the colour behaviour is similar to an RGB LED. RGB
LEDs are not supported at this time because they produce colour results
that do not then match colour labels, e.g. enabling 'mir3g:red' and
'mir3g:blue' would result in a purple indicator and we have no such
label for purple.
The yellow, red & blue LEDs have been split out as individual yellow,
red & blue status LEDs, with yellow being the default status LED as
before and with red's WAN and blue's USB default associations removed.
- Swapped order of vlan interfaces (eth0.1 & eth0.2) to match stock vlan
layout. eth0.1 is LAN, eth0.2 is WAN
- Add 'lwlll' vlan layout to mt7530 switch driver to prevent packet
leakage between kernel switch init and uci swconfig
uboot behaviour & system 'recovery'
uboot expects to find bootable kernels at nand addresses 0x200000 &
0x600000 known by uboot as "system 1" and "system 2" respectively.
uboot chooses which system to hand control to based on 3 environment
variables: flag_last_success, flag_try_sys1_failed & flag_try_sys2_failed
last_success represents a preference for a particular system and is set
to 0 for system 1, set to 1 for system 2. last_success is considered *if*
and only if both try_sys'n'_failed flags are 0 (ie. unset) If *either*
failed flags are set then uboot will attempt to hand control to the
non failed system. If both failed flags are set then uboot will check
the uImage CRC of system 1 and hand control to it if ok. If the uImage
CRC of system is not ok, uboot will hand control to system 2
irrespective of system 2's uImage CRC.
NOTE: uboot only ever sets failed flags, it *never* clears them. uboot
sets a system's failed flag if that system's was selected for boot but
the uImage CRC is incorrect.
Fortunately with serial console access, uboot provides the ability to
boot an initramfs image transferred via tftp, similarly an image may
be flashed to nand however it will flash to *both* kernels so a backup
of stock kernel image is suggested. Note that the suggested install
procedure below set's system 1's failed flag (stock) thus uboot ignores
the last_success preference and boots LEDE located in system 2.
Considerable thought has gone into whether LEDE should replace both
kernels, only one (and which one) etc. LEDE kernels do not include a
minimal rootfs and thus unlike the stock kernel cannot include a
method of controlling uboot environment variables in the event of
rootfs mount failure. Similarly uboot fails to provide an external
mechanism for indicating boot system failure.
Installation - from stock.
Installation through telnet/ssh:
- copy lede-ramips-mt7621-mir3g-squashfs-kernel1.bin and
lede-ramips-mt7621-mir3g-squashfs-rootfs0.bin to usb disk or wget it
from LEDE download site to /tmp
- switch to /extdisks/sda1/ (if copied to USB drive) or to /tmp if
wgetted from LEDE download site
- run: mtd write lede-ramips-mt7621-mir3g-squashfs-kernel1.bin kernel1
- run: mtd write lede-ramips-mt7621-mir3g-squashfs-rootfs0.bin rootfs0
- run: nvram set flag_try_sys1_failed=1
- run: nvram commit
- run: reboot
Recovery - to stock.
Assuming you used the above installation instructions you will have a
stock kernel image in system 1. If it can be booted then it may be used
to perform a stock firmware recovery, thus erasing LEDE completely. From
a 'working' LEDE state (even failsafe)
Failsafe only:
- run: mount_root
- run: sh /etc/uci-defaults/30_uboot-envtools
Then do the steps for 'All'
All:
- run: fw_setenv flag_try_sys2_failed 1
- run: reboot
The board will reboot into system 1 (stock basic kernel) and wait with
system red light slowly blinking for a FAT formatted usb stick with a
recovery image to be inserted. Press and hold the reset button for
around 1 second. Status LED will turn yellow during recovery and blue
when recovery complete.
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
2017-09-25 19:41:13 +00:00
|
|
|
"2:lan:2" "3:lan:1" "1:wan" "6t@eth0"
|
2017-08-12 14:56:11 +00:00
|
|
|
;;
|
2017-04-21 00:47:44 +00:00
|
|
|
psg1218b)
|
2017-04-20 22:53:03 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"0:lan:3" "1:lan:2" "2:lan:1" "3:wan" "6@eth0"
|
|
|
|
;;
|
2016-11-14 19:04:36 +00:00
|
|
|
whr-300hp2|\
|
|
|
|
whr-600d|\
|
|
|
|
wsr-1166|\
|
|
|
|
wsr-600)
|
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"0:lan:1" "1:lan:2" "2:lan:3" "3:lan:4" "4:wan:5" "6@eth0"
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
ar670w|\
|
|
|
|
ar725w|\
|
2017-05-05 15:54:26 +00:00
|
|
|
rt-ac51u)
|
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"0:wan" "1:lan" "2:lan" "3:lan" "4:lan" "6t@eth0"
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
rt-n15|\
|
|
|
|
wl-351)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "5@eth0"
|
2015-01-17 14:06:13 +00:00
|
|
|
;;
|
2017-04-07 22:34:48 +00:00
|
|
|
asl26555-8M|\
|
|
|
|
asl26555-16M|\
|
2015-11-02 10:17:26 +00:00
|
|
|
rp-n53)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"1:lan" "2:lan" "3:lan" "4:lan" "6t@eth0"
|
2012-01-24 11:48:47 +00:00
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
atp-52b|\
|
2017-04-07 22:34:48 +00:00
|
|
|
awm002-evb-4M|\
|
|
|
|
awm002-evb-8M|\
|
2016-07-26 04:44:19 +00:00
|
|
|
c20i|\
|
2015-08-17 06:02:59 +00:00
|
|
|
dir-645|\
|
|
|
|
f5d8235-v2|\
|
2016-03-10 19:11:57 +00:00
|
|
|
gl-mt300a|\
|
2016-03-10 19:12:04 +00:00
|
|
|
gl-mt300n|\
|
2016-03-10 19:12:10 +00:00
|
|
|
gl-mt750|\
|
2015-08-17 06:02:59 +00:00
|
|
|
hg255d|\
|
2016-03-04 08:33:09 +00:00
|
|
|
jhr-n805r|\
|
|
|
|
jhr-n825r|\
|
|
|
|
jhr-n926r|\
|
2016-09-09 18:57:58 +00:00
|
|
|
mzk-wdpr|\
|
ramips: add support for MikroTik hEX v3 (RB750Gr3)
The MikroTik hEX v3 (RB750Gr3) is a MT7621AT board which is similar to most MT7621 reference designs, it can be easily supported by this patch; however, the stock RouterBOOT bootloader has to be replaced by a MT7621 SDK U-Boot such as https://github.com/ndoo/RB750Gr3-U-Boot - U-Boot configured for the RB750Gr3 (16MiB SPI flash, 256MiB DDR3 RAM at 1200MHz).
RouterBOOT, the stock bootloader, does not initialize the UART and boots silently, making it preferable to replace it with a MT7621 SDK U-Boot with UART (57600 8N1) that supports HTTP, TFTP or serial upload of sysupgrade firmware and U-Boot.
Furthermore, RouterOS, the stock firmware, is contained in a proprietary modification of SquashFS without GPL sources; UART is also disabled in stock firmware.
The combination of LEDE firmware generated by this PR and MT7621 SDK U-Boot expects the printed MAC address to reside at offset `0xe000` of the factory partition (absolute offset is `0x4e000`); this is similar to the factory MAC address offset for several other MT7621 devices.
A 16MiB flash dump suitable for use with flashrom will be provided if/once this patch is accepted and binaries are built by LEDE buildbot. Alternatively, writing the U-Boot to the SPI flash starting at 0x0 offset and booting the board with serial console attached will allow TFTP, HTTP or serial upload of sysupgrade firmware.
Signed-off-by: Andrew Yong <me@ndoo.sg>
2016-10-18 20:05:32 +00:00
|
|
|
rb750gr3|\
|
2015-08-17 06:02:59 +00:00
|
|
|
rt-n14u|\
|
2018-01-09 11:25:53 +00:00
|
|
|
tplink,c20-v4|\
|
2018-01-28 18:49:38 +00:00
|
|
|
tplink,c50-v3|\
|
2017-12-15 14:57:49 +00:00
|
|
|
tplink,tl-mr3420-v5|\
|
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|\
|
2017-11-08 13:00:06 +00:00
|
|
|
tl-wr840n-v5|\
|
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-wr841n-v13|\
|
ramips: add support for UniElec U7628-01
UniElec U7628-01 is a router platform board based on MediaTek MT7628AN.
The device has the following specifications:
- MT7628AN (580MHz)
- 64/128/256 MB of RAM (DDR2)
- 8/16 MB of flash (SPI NOR)
- 5x 10/100 Mbps Ethernet (MT7628 built-in switch)
- 1x 2T2R 2.4 GHz Wi-Fi (MT7628)
- 1x miniPCIe slot (with PCIe and USB 2.0 buses)
- 1x miniSIM slot
- 1x microSD slot
- 1x USB 2.0 port
- 7x single-color LEDs (GPIO-controlled)
- 1x bi-color LED (green GPIO-controlled, red -> LED_WLAN# in miniPCIe)
- 1x reset button
- 1x UART header (4-pins)
- 1x SDXC/GPIO header (10-pins, connected with microSD slot)
- 1x DC jack for main power (12 V)
The following has been tested and is working:
- Ethernet switch
- miniPCIe slot (tested with modem and Wi-Fi card)
- miniSIM slot
- sysupgrade
- reset button
- USB 2.0 port*
Due to a missing driver (MMC over GPIO) this is not supported:
- microSD card reader
* Warning:
USB buses in miniPCIe and regular A-type socket are connected together,
without any proper analog switch or USB HUB.
Installation:
This board might come with a different firmware versions (MediaTek SDK,
PandoraBox, Padavan, etc.). If your board comes with PandoraBox, you can
install LEDE using sysupgrade. Just SSH to the router and perform forced
sysupgrade (due to a board name mismatch). The default IP of this board
should be: 192.168.1.1 and username/password: root/admin. In case of a
different firmware, you can use web based recovery described below.
Use the following command to perform the sysupgrade (for the 128MB
RAM/16MB flash version):
sysupgrade -n -F lede-ramips-mt76x8-u7628-01-128M-16M-squashfs-sysupgrade.bin
Recovery:
This board contains a Chinese, closed-source bootloader called Breed
(Boot and Recovery Environment for Embedded Devices). Breed supports web
recovery and to enter it, you keep the reset button pressed for around
5 seconds during boot. Your machine will be assigned an IP through DHCP
and the router will use IP address 192.168.1.1. The recovery website is
in Chinese, but is easy to use. Click on the second item in the list to
access the recovery page, then the second item on the next page is where
you select the firmware. In order to start the recovery, you click the
button at the bottom.
SDXC/GPIO header (J3):
1. SDXC_D3 / I2C_SCLK
2. SDXC_D2 / I2C_SD
3. SDXC_D1 / I2S_DI
4. SDXC_D0 / I2S_WS
5. SDXC_CMD / I2S_CLK
6. SDXC_CLK / GPIO0
7. SDXC_CD / UART_RXD1
8. UART_TXD1
9. 3V3
10. GND
Other notes:
1. The board is available with different amounts of RAM and flash. We
have only added support for the 128/16 MB configuration, as that seems
to be the default. However, all the required infrastructure is in place
for making support for the other configurations easy.
Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
Signed-off-by: Kristian Evensen <kristian.evensen@gmail.com>
2017-11-03 20:12:49 +00:00
|
|
|
u7628-01-128M-16M|\
|
ramips: add support for Ubiquiti EdgeRouter X (UBNT-ERX)
This router is based on MT7621 SoC, no wifi, no usb, nand.
Works:
* Boots.
* Ethernet.
* Switch.
* Button (reset).
* Flashing OpenWrt from stock firmware.
* Upgrading OpenWrt.
Doesn't work:
* No GPIO leds. All leds are controlled by switch,
but stock firmware was able to control them.
* SoC has crypto engine but no open driver.
* SoC has nat acceleration, but no open driver.
* This router has 2MB spi flash soldered in but MT
nand/spi drivers do not support pin sharing,
so it is not accessable and disabled. Stock
firmware could read it and it was empty.
* PoE out.
Router has serial pins populated. If looking at the top
of the router, then counting from Eth sockets pins go as:
'GND, RX, TX, GND'. 3.3v, 57600.
U-boot bootloader supports tftpboot, controlled from serial.
This router has two kernel partitions: 'live' and 'backup'.
They are swapped during flashing (on both stock and OpenWrt).
Active partition is controlled by a flag in a factory partition.
U-boot has custom command to switch active kernel partition.
Kernel partitions are 'bare flash' 3MB. Stock bootloader has
no UBI support. Stock rootfs is UBIFS.
Flashing procedure.
Stock firmware uses custom kernel patch to mount squashfs
from a file that is located on UBIFS volume. This makes wiping
out this volume from within stock firmware difficult.
Instead this patch builds image that is flashable by stock firmware
and contains initrams image (with minimal set of packages
to fit into kernel partition). Once this is flashed one can reboot
into initramfs OpenWrt and use sysupgrade to flash OpenWrt including
rootfs into nand.
Note: factory image is only built if initramfs image is enabled.
Signed-off-by: Nikolay Martynov <mar.kolya@gmail.com>
SVN-Revision: 47881
2015-12-12 07:38:06 +00:00
|
|
|
ubnt-erx|\
|
2017-05-29 09:24:49 +00:00
|
|
|
ubnt-erx-sfp|\
|
2015-08-17 06:02:59 +00:00
|
|
|
ur-326n4g|\
|
|
|
|
wrtnode|\
|
2016-01-01 21:19:50 +00:00
|
|
|
wrtnode2p | \
|
|
|
|
wrtnode2r | \
|
2015-08-17 06:02:59 +00:00
|
|
|
zbt-wa05)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "6@eth0"
|
2011-12-01 22:48:35 +00:00
|
|
|
;;
|
2018-01-13 07:16:20 +00:00
|
|
|
c50|\
|
|
|
|
tplink,c20-v1)
|
2017-07-28 20:36:52 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"1:lan:3" "2:lan:4" "3:lan:1" "4:lan:2" "0:wan" "6@eth0"
|
|
|
|
;;
|
2017-07-25 10:29:14 +00:00
|
|
|
dir-860l-b1)
|
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "0:wan" "6@eth0"
|
|
|
|
;;
|
2018-02-17 08:54:57 +00:00
|
|
|
gb-pc1|\
|
|
|
|
gnubee,gb-pc2)
|
2017-07-22 01:15:56 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"0:lan" "4:lan" "6@eth0"
|
|
|
|
;;
|
2017-05-17 10:18:45 +00:00
|
|
|
gl-mt300n-v2)
|
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"1:lan" "0:wan" "6@eth0"
|
|
|
|
;;
|
2014-06-13 09:16:15 +00:00
|
|
|
awapn2403)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"0:lan" "1:wan" "6@eth0"
|
2014-06-13 09:16:15 +00:00
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
b2c|\
|
|
|
|
nw718|\
|
|
|
|
psr-680w|\
|
|
|
|
sl-r7205|\
|
|
|
|
ur-336un|\
|
|
|
|
w502u|\
|
|
|
|
wr6202)
|
|
|
|
ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
|
|
|
|
;;
|
2014-01-15 18:29:44 +00:00
|
|
|
br-6475nd)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "9@eth0"
|
2014-01-15 18:29:44 +00:00
|
|
|
;;
|
2017-09-06 09:14:16 +00:00
|
|
|
c108|\
|
2017-01-13 15:37:36 +00:00
|
|
|
cf-wr800n)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"4:lan" "6t@eth0"
|
2015-05-23 15:26:39 +00:00
|
|
|
;;
|
2014-06-02 12:42:52 +00:00
|
|
|
cy-swr1100)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "9@eth0"
|
2014-06-02 12:42:52 +00:00
|
|
|
;;
|
2016-05-28 14:22:10 +00:00
|
|
|
duzun-dm06)
|
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"1:lan" "0:wan" "6@eth0"
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
e1700|\
|
|
|
|
mt7620a_mt7530)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch1" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "6@eth0"
|
2013-03-11 21:02:43 +00:00
|
|
|
;;
|
2015-10-05 10:25:47 +00:00
|
|
|
hc5*61|\
|
|
|
|
y1s)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"1:lan" "2:lan" "3:lan" "4:lan" "5:lan" "0:wan" "6@eth0"
|
2015-10-05 10:25:47 +00:00
|
|
|
;;
|
2016-11-28 18:41:51 +00:00
|
|
|
kn_rf)
|
2017-01-01 21:46:33 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2016-11-28 18:41:51 +00:00
|
|
|
"0:wan" "1:lan" "2:lan" "3:lan" "4:lan" "6@eth0"
|
|
|
|
;;
|
2016-10-29 12:26:58 +00:00
|
|
|
kng_rc)
|
|
|
|
ucidef_add_switch "switch1" \
|
|
|
|
"0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "7t@eth0"
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
mlwg2|\
|
|
|
|
wizard8800|\
|
2016-07-05 07:07:33 +00:00
|
|
|
wl-330n)
|
2015-08-17 06:02:59 +00:00
|
|
|
ucidef_set_interface_lan "eth0.1"
|
2011-12-23 14:27:16 +00:00
|
|
|
;;
|
2016-09-24 19:41:43 +00:00
|
|
|
mr200)
|
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"0:lan" "1:lan" "2:lan" "3:lan" "6t@eth0"
|
|
|
|
ucidef_set_interface_wan "usb0"
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
mzk-dp150n|\
|
2017-04-07 22:34:48 +00:00
|
|
|
vocore-8M|\
|
|
|
|
vocore-16M)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"0:lan" "4:lan" "6t@eth0"
|
2012-02-22 19:46:15 +00:00
|
|
|
;;
|
2016-09-27 06:25:04 +00:00
|
|
|
newifi-d1)
|
|
|
|
ucidef_add_switch "switch0" \
|
2017-02-11 13:32:07 +00:00
|
|
|
"1:lan:2" "2:lan:1" "4:wan" "6@eth0"
|
2016-09-27 06:25:04 +00:00
|
|
|
;;
|
2017-07-23 19:06:44 +00:00
|
|
|
re350-v1)
|
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"0:lan" "6@eth0"
|
|
|
|
;;
|
2017-03-07 16:38:30 +00:00
|
|
|
re6500)
|
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"0:lan:1" "1:lan:2" "2:lan:3" "3:lan:4" "6@eth0"
|
|
|
|
;;
|
2012-02-13 15:18:04 +00:00
|
|
|
rt-n56u)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "8@eth0"
|
2012-02-13 15:18:04 +00:00
|
|
|
;;
|
2017-06-09 11:02:56 +00:00
|
|
|
tew-638apb-v2)
|
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"4:lan" "6@eth0"
|
|
|
|
;;
|
2012-10-18 07:23:12 +00:00
|
|
|
tew-691gr|\
|
2016-08-14 21:30:44 +00:00
|
|
|
tew-692gr|\
|
|
|
|
wlr-6000)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"1:lan" "2:lan" "3:lan" "4:lan" "5:wan" "0@eth0"
|
2012-10-18 07:23:07 +00:00
|
|
|
;;
|
2018-03-08 06:49:00 +00:00
|
|
|
vonets,var11n-300|\
|
|
|
|
wt1520-4M|\
|
|
|
|
wt1520-8M)
|
ramips: add support for Vonets VAR11N-300
The VAR11N-300 is a tiny wireless-N device with a hardwired Ethernet
cable, one extra Ethernet port, and an internal antenna, based on the
MediaTek MT7620n chipset.
Specs:
- MT7620n WiSoC @ 600MHz
- 32 MB SDRAM
- 4 MB SPI flash
- 2T2R 2.4GHz WiFi-N
- 1 attached 10/100 Ethernet cable (LAN)
- 1 10/100 Ethernet port (WAN)
- 1 attached USB / barrel 5vdc power cable
- 5 LEDs (see notes below)
- 1 reset button
- 1 UART (3 pads on board)
Installation:
The stock firmware does not support uploading new firmware directly,
only checking the manufacturer's site for updates. This process may be
possible to spoof, but the update check uses some kind of homebrew
encryption that I didn't investigate. Instead, you can install via a
backdoor:
1. Set up a TFTP server to serve the firmware binary
(lede-ramips-mt7620-var11n-300-squashfs-sysupgrade.bin)
2. Factory reset the device by holding the reset button for a few
seconds.
3. Open the web interface (default IP: 192.168.253.254)
4. Log in with the "super admin" credentials: username `vonets`,
password `vonets26642519`.
5. On the "Operative Status" page, click the text "System Uptime", then
quickly click the uptime value.
6. If successful, an alert dialog will appear reading "Ated start", and
the device will now accept telnet connections. If the alert does not
appear, repeat step 5 until it works (the timing is a bit tricky).
7. Telnet to the device using credentials "admin / admin"
8. Retrieve the firmware binary from the tftp server: `tftp -l lede.bin
-r lede-ramips-mt7620-var11n-300-squashfs-sysupgrade.bin -g
<tftp-server-ip>`
9. Write the firmware to flash: `mtd_write write lede.bin /dev/mtd4`
10. Reboot
Tested:
- LAN / WAN ethernet
- WiFi
- LAN / WAN / status LED GPIOs (see notes below)
- Reset button
- Sysupgrade
Notes:
LEDs:
The board has 5 LEDs - two green LEDs for LAN / WAN activity, one blue
LED for WiFi, and a pair of "status" LEDs connected to the same GPIO
(the blue LED lights when the GPIO is low, and the green when it's
high). I was unable to determine how to operate the WiFi LED, as it
does not appear to be controlled by a GPIO directly.
Recovery:
The default U-boot installation will only boot from flash due to a
missing environment block. I generated a valid 4KB env block using
U-boot's `fw_setenv` tool and wrote it to flash at 0x30000 using an
external programmer. After this, it was possible to enter the U-boot
commandline interface and download a new image via TFTP (`tftpboot
81b00000 <image-filename>`), but while I could boot this image
sucessfully (`bootm`), writing it to flash (`cp.linux`) just corrupted
the flash chip. The sysupgrade file can be written to flash at 0x50000
using an external programmer.
Signed-off-by: Andrew Crawley <acrawley@gmail.com>
2017-11-23 23:52:13 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"0:lan" "4:wan" "6@eth0"
|
|
|
|
;;
|
2017-08-03 20:09:06 +00:00
|
|
|
vocore2|\
|
|
|
|
vocore2lite)
|
2017-01-08 06:30:10 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"0:lan" "2:lan" "6t@eth0"
|
|
|
|
;;
|
2016-12-01 14:08:22 +00:00
|
|
|
f5d8235-v1|\
|
2016-08-03 17:58:01 +00:00
|
|
|
tew-714tru|\
|
2015-08-17 06:02:59 +00:00
|
|
|
v11st-fe|\
|
|
|
|
wzr-agl300nh)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "5@eth0"
|
2014-08-01 20:51:24 +00:00
|
|
|
;;
|
2017-01-28 16:05:56 +00:00
|
|
|
wcr-1166ds)
|
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"3:lan" "4:wan" "6@eth0"
|
|
|
|
;;
|
ramips: Add support for ZBT WE1026-5G
The ZBT WE1026-5G
(http://www.zbtlink.com/products/router/WE1026-5G.html) is the follow-up
to the ZBT WE1026 and is based on MT7620. For the previous WE1026, the
ZBT WE826 image could be used. However, as the name implies, the -5G
comes equipped with a 5GHz wifi radio. As the WE826 only has a 2.4GHz
radio, the addition of 5GHz means that a separate image is needed for
the WE1026-5G. I suspect that this image will also work on the previous
WE1026, but I don't have a device to test with.
The WE1026-5G has following specifications:
* CPU: MT7620A
* 1x 10/100Mbps Ethernet.
* 16 MB Flash.
* 64 MB RAM.
* 1x USB 2.0 port.
* 1x mini-PCIe slots.
* 1x SIM slots.
* 1x 2.4Ghz WIFI.
* 1x 5GHz wifi (MT7612)
* 1x button.
* 3x controllable LEDs.
Works:
* Wifi.
* Switch.
* mini-PCIe slot. Only tested with a USB device (a modem).
* SIM slot.
* Sysupgrade.
* Button (reset).
Not working:
* The 5GHz WIFI LED is completely dead. I suspect the issue is the same
as on other devices with Mediatek 5Ghz wifi-cards/chips. The LED is
controlled by the driver, and mt76 (currently) does not support this.
Not tested:
* SD card reader.
Notes:
* The modem (labeled 3G/4G) and power LEDs are controlled by the
hardware.
* There is a 32MB version of this device available, but I do not have
access to it. I have therefor only added support for the 16MB version,
but added all the required infrastructure to make adding support for the
32MB version easy.
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 WE1026-5G supports recovery using HTTP. Keep the
reset button pressed for ~5sec when booting to start the web server. Set the
address of the network interface on your machine to 192.168.1.2/24, and
point your browser to 192.168.1.1 to access the recovery UI. From the
recovery UI you can upload a firmware image.
Signed-off-by: Kristian Evensen <kristian.evensen@gmail.com>
2017-09-10 12:44:47 +00:00
|
|
|
wcr-150gn|\
|
|
|
|
we1026-5g-16m)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"0:lan" "6t@eth0"
|
2011-12-27 16:56:30 +00:00
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
whr-1166d)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"0:lan" "1:lan" "2:lan" "3:lan" "5:wan" "6@eth0"
|
2014-07-12 06:54:03 +00:00
|
|
|
;;
|
2015-09-14 20:09:31 +00:00
|
|
|
wizfi630a)
|
2015-12-03 17:30:24 +00:00
|
|
|
ucidef_add_switch "switch0" \
|
2015-12-03 15:46:29 +00:00
|
|
|
"1:lan" "2:lan" "0:wan" "6@eth0"
|
2015-09-14 20:09:31 +00:00
|
|
|
;;
|
2018-03-08 06:49:00 +00:00
|
|
|
wt3020-4M|\
|
|
|
|
wt3020-8M)
|
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"4:lan" "0:wan" "6@eth0"
|
|
|
|
;;
|
2018-01-24 00:27:51 +00:00
|
|
|
zbtlink,zbt-we1226|\
|
2017-12-29 04:35:32 +00:00
|
|
|
y1)
|
|
|
|
ucidef_add_switch "switch0" \
|
|
|
|
"0:lan:2" "1:lan:1" "4:wan" "6@eth0"
|
|
|
|
;;
|
2011-12-01 22:48:35 +00:00
|
|
|
*)
|
2012-09-25 14:47:18 +00:00
|
|
|
RT3X5X=`cat /proc/cpuinfo | egrep "(RT3.5|RT5350)"`
|
2011-12-01 22:48:51 +00:00
|
|
|
if [ -n "${RT3X5X}" ]; then
|
2012-08-29 10:37:38 +00:00
|
|
|
ramips_setup_rt3x5x_vlans
|
2011-12-01 22:48:51 +00:00
|
|
|
else
|
2013-11-18 09:35:14 +00:00
|
|
|
ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
|
2011-12-01 22:48:51 +00:00
|
|
|
fi
|
2011-12-01 22:48:35 +00:00
|
|
|
;;
|
2011-12-01 22:48:43 +00:00
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
ramips_setup_macs()
|
|
|
|
{
|
|
|
|
local board="$1"
|
2011-12-01 22:48:45 +00:00
|
|
|
local lan_mac=""
|
|
|
|
local wan_mac=""
|
2011-12-01 22:48:43 +00:00
|
|
|
|
|
|
|
case $board in
|
2016-05-04 20:04:24 +00:00
|
|
|
a5-v11|\
|
ramips: add support for Loewe WMDR-143N
The WMDR-143N is a small module originally used as a Wifi client
in some Loewe smart TV sets. It is sold cheaply at german surplus
shops. The module contains a RT3662 SOC.
Specifications:
- 500 MHz CPU Clock
- 1x 10/100Mbps Ethernet (pin header)
- 32 MB of RAM
- 8 MB of FLASH
- 2T3R 2.4/5 GHz (SOC internal)
- 3 Antennas on PCB
- UART pads on PCB (J3: 1 = +3.3V, 2 = RX, 3 = TX, 4 = GND), TX
and RX are 3,3V only! The square hole is pin 1
- Power supply pads on PCB (J6: 1 and 2 = +5V, 3 and 4 = GND)
The square hole is pin 1
The original firmware has two identical kernel/rootfs images and
two "Factory" calibration data blocks in flash. The LEDE image
leaves only the first "Factory" block in place and uses both
"Kernel" blocks and the redundant "Factory" block together to gain
enough space for the jffs2 partition.
Flash instructions:
You need UART and Ethernet connections to flash the board. Use
the LEDE "sysupgrade.bin" image with tftp.
Apply power to the board and in the first 5 seconds, hit 2 to
select TFTP upload. The bootloader asks for board- and server IP
addresses and filename.
Alternate method: With the vendor firmware running, assign an IP
address to the ethernet port, tftp the firmware image to
/tmp and write to mtd4 ("KernelA").
Signed-off-by: Oliver Fleischmann <ogf@bnv-bamberg.de>
[remove pinctrl node from dts, no pin is used as GPIO]
Signed-off-by: Mathias Kresin <dev@kresin.me>
2017-07-20 19:02:33 +00:00
|
|
|
ht-tm02|\
|
|
|
|
wmdr-143n)
|
2016-05-04 20:04:24 +00:00
|
|
|
lan_mac=$(cat /sys/class/net/eth0/address)
|
|
|
|
;;
|
|
|
|
all0239-3g|\
|
|
|
|
carambola|\
|
|
|
|
freestation5|\
|
|
|
|
w502u|\
|
|
|
|
wnce2001)
|
|
|
|
wan_mac=$(mtd_get_mac_binary factory 46)
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
bc2|\
|
|
|
|
broadway|\
|
|
|
|
d105|\
|
|
|
|
dir-300-b7|\
|
|
|
|
dir-320-b1|\
|
|
|
|
dir-620-a1|\
|
|
|
|
esr-9753|\
|
|
|
|
freestation5|\
|
|
|
|
hlk-rm04|\
|
|
|
|
mpr-a1|\
|
|
|
|
psr-680w|\
|
|
|
|
sl-r7205|\
|
|
|
|
y1|\
|
|
|
|
y1s)
|
2014-07-26 20:36:09 +00:00
|
|
|
lan_mac=$(cat /sys/class/net/eth0/address)
|
2015-08-17 06:02:59 +00:00
|
|
|
lan_mac=$(macaddr_setbit_la "$lan_mac")
|
|
|
|
wan_mac=$(macaddr_add "$lan_mac" 1)
|
2014-01-15 18:29:44 +00:00
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
br-6475nd)
|
2014-07-26 20:36:09 +00:00
|
|
|
lan_mac=$(cat /sys/class/net/eth0/address)
|
2015-08-17 06:02:59 +00:00
|
|
|
wan_mac=$(mtd_get_mac_binary devdata 7)
|
2012-04-21 12:30:40 +00:00
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
cy-swr1100|\
|
2016-05-02 03:57:40 +00:00
|
|
|
dch-m225)
|
|
|
|
lan_mac=$(mtd_get_mac_ascii factory lanmac)
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
dir-645)
|
|
|
|
lan_mac=$(mtd_get_mac_ascii nvram lanmac)
|
|
|
|
wan_mac=$(mtd_get_mac_ascii nvram wanmac)
|
2012-06-23 13:58:29 +00:00
|
|
|
;;
|
2016-06-30 14:16:30 +00:00
|
|
|
dir-860l-b1)
|
|
|
|
lan_mac=$(mtd_get_mac_ascii factory lanmac)
|
|
|
|
wan_mac=$(mtd_get_mac_ascii factory wanmac)
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
e1700)
|
|
|
|
wan_mac=$(mtd_get_mac_ascii config WAN_MAC_ADDR)
|
|
|
|
;;
|
2017-07-13 12:03:07 +00:00
|
|
|
gl-mt300n-v2)
|
|
|
|
wan_mac=$(mtd_get_mac_binary factory 4)
|
|
|
|
;;
|
2017-02-24 23:19:15 +00:00
|
|
|
hc5*61|\
|
2017-02-22 12:47:22 +00:00
|
|
|
hc5661a|\
|
|
|
|
hc5962)
|
2015-10-05 10:25:47 +00:00
|
|
|
lan_mac=`mtd_get_mac_ascii bdinfo "Vfac_mac "`
|
|
|
|
[ -n "$lan_mac" ] || lan_mac=$(cat /sys/class/net/eth0/address)
|
|
|
|
wan_mac=$(macaddr_add "$lan_mac" 1)
|
|
|
|
;;
|
2017-01-05 11:25:59 +00:00
|
|
|
kn_rc|\
|
|
|
|
kn_rf|\
|
2016-10-29 12:26:58 +00:00
|
|
|
kng_rc)
|
2017-01-05 11:25:59 +00:00
|
|
|
wan_mac=$(mtd_get_mac_binary factory 40)
|
2016-10-29 12:26:58 +00:00
|
|
|
;;
|
2017-11-16 21:58:23 +00:00
|
|
|
linkits7688)
|
2015-10-19 10:07:38 +00:00
|
|
|
wan_mac=$(mtd_get_mac_binary factory 4)
|
|
|
|
lan_mac=$(mtd_get_mac_binary factory 46)
|
|
|
|
;;
|
2016-09-08 22:57:31 +00:00
|
|
|
mac1200rv2)
|
|
|
|
lan_mac=$(mtd_get_mac_binary factory_info 13)
|
|
|
|
wan_mac=$(macaddr_add "$lan_mac" 1)
|
|
|
|
;;
|
2017-08-12 14:56:11 +00:00
|
|
|
mir3g)
|
ramips: improve Xiaomi Mi Router 3G support
This commit improves support for the Xiaomi Mi Router 3G originally
added in commit 6e283cdc0da25928f8148805ebef7f8f2b769ee8
Improvements:
- Remove software watchdog as hardware watchdog now working as per
commit 3fbf3ab44f5cebb22e30a4c8681b13341feed6a6 for all mt7621
devices.
- Reset button polarity corrected - length of press determines reboot
(short press) vs. reset to defaults (long press) behaviour.
- Enable GPIO amber switch port LEDs on board rear - lit indicates 1Gbit
link and blink on activity. Green LEDs driven directly by switch
indicating any link speed and tx activity.
- USB port power on/off GPIO exposed as 'usbpower'
- Add access to uboot environment settings for checking/setting uboot
boot order preference from user space.
Changes:
- Front LED indicator is physically made of independent Yellow/Amber,
Red & Blue LEDs combined via a plastic 'lightpipe' to a front panel
indicator, hence the colour behaviour is similar to an RGB LED. RGB
LEDs are not supported at this time because they produce colour results
that do not then match colour labels, e.g. enabling 'mir3g:red' and
'mir3g:blue' would result in a purple indicator and we have no such
label for purple.
The yellow, red & blue LEDs have been split out as individual yellow,
red & blue status LEDs, with yellow being the default status LED as
before and with red's WAN and blue's USB default associations removed.
- Swapped order of vlan interfaces (eth0.1 & eth0.2) to match stock vlan
layout. eth0.1 is LAN, eth0.2 is WAN
- Add 'lwlll' vlan layout to mt7530 switch driver to prevent packet
leakage between kernel switch init and uci swconfig
uboot behaviour & system 'recovery'
uboot expects to find bootable kernels at nand addresses 0x200000 &
0x600000 known by uboot as "system 1" and "system 2" respectively.
uboot chooses which system to hand control to based on 3 environment
variables: flag_last_success, flag_try_sys1_failed & flag_try_sys2_failed
last_success represents a preference for a particular system and is set
to 0 for system 1, set to 1 for system 2. last_success is considered *if*
and only if both try_sys'n'_failed flags are 0 (ie. unset) If *either*
failed flags are set then uboot will attempt to hand control to the
non failed system. If both failed flags are set then uboot will check
the uImage CRC of system 1 and hand control to it if ok. If the uImage
CRC of system is not ok, uboot will hand control to system 2
irrespective of system 2's uImage CRC.
NOTE: uboot only ever sets failed flags, it *never* clears them. uboot
sets a system's failed flag if that system's was selected for boot but
the uImage CRC is incorrect.
Fortunately with serial console access, uboot provides the ability to
boot an initramfs image transferred via tftp, similarly an image may
be flashed to nand however it will flash to *both* kernels so a backup
of stock kernel image is suggested. Note that the suggested install
procedure below set's system 1's failed flag (stock) thus uboot ignores
the last_success preference and boots LEDE located in system 2.
Considerable thought has gone into whether LEDE should replace both
kernels, only one (and which one) etc. LEDE kernels do not include a
minimal rootfs and thus unlike the stock kernel cannot include a
method of controlling uboot environment variables in the event of
rootfs mount failure. Similarly uboot fails to provide an external
mechanism for indicating boot system failure.
Installation - from stock.
Installation through telnet/ssh:
- copy lede-ramips-mt7621-mir3g-squashfs-kernel1.bin and
lede-ramips-mt7621-mir3g-squashfs-rootfs0.bin to usb disk or wget it
from LEDE download site to /tmp
- switch to /extdisks/sda1/ (if copied to USB drive) or to /tmp if
wgetted from LEDE download site
- run: mtd write lede-ramips-mt7621-mir3g-squashfs-kernel1.bin kernel1
- run: mtd write lede-ramips-mt7621-mir3g-squashfs-rootfs0.bin rootfs0
- run: nvram set flag_try_sys1_failed=1
- run: nvram commit
- run: reboot
Recovery - to stock.
Assuming you used the above installation instructions you will have a
stock kernel image in system 1. If it can be booted then it may be used
to perform a stock firmware recovery, thus erasing LEDE completely. From
a 'working' LEDE state (even failsafe)
Failsafe only:
- run: mount_root
- run: sh /etc/uci-defaults/30_uboot-envtools
Then do the steps for 'All'
All:
- run: fw_setenv flag_try_sys2_failed 1
- run: reboot
The board will reboot into system 1 (stock basic kernel) and wait with
system red light slowly blinking for a FAT formatted usb stick with a
recovery image to be inserted. Press and hold the reset button for
around 1 second. Status LED will turn yellow during recovery and blue
when recovery complete.
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
2017-09-25 19:41:13 +00:00
|
|
|
lan_mac=$(mtd_get_mac_binary Factory 0xe006)
|
2017-08-12 14:56:11 +00:00
|
|
|
;;
|
2017-01-18 09:45:48 +00:00
|
|
|
miwifi-mini)
|
|
|
|
wan_mac=$(cat /sys/class/net/eth0/address)
|
|
|
|
lan_mac=$(macaddr_setbit_la "$wan_mac")
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
m3|\
|
2017-04-07 22:34:48 +00:00
|
|
|
m4-4M|\
|
|
|
|
m4-8M|\
|
2015-08-17 06:02:59 +00:00
|
|
|
x5|\
|
2013-11-25 08:33:42 +00:00
|
|
|
x8)
|
2014-07-26 20:36:09 +00:00
|
|
|
lan_mac=$(cat /sys/class/net/eth0/address)
|
|
|
|
lan_mac=$(macaddr_add "$lan_mac" -2)
|
2011-12-06 20:06:08 +00:00
|
|
|
;;
|
2016-09-27 06:25:04 +00:00
|
|
|
newifi-d1)
|
|
|
|
lan_mac=$(cat /sys/class/net/eth0/address)
|
|
|
|
lan_mac=$(macaddr_add "$lan_mac" 2)
|
|
|
|
;;
|
2017-01-09 19:59:56 +00:00
|
|
|
omega2|\
|
|
|
|
omega2p)
|
|
|
|
wan_mac=$(mtd_get_mac_binary factory 4)
|
|
|
|
lan_mac=$(mtd_get_mac_binary factory 46)
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
oy-0001)
|
|
|
|
lan_mac=$(mtd_get_mac_binary factory 40)
|
|
|
|
wan_mac=$(mtd_get_mac_binary factory 46)
|
|
|
|
;;
|
2017-03-11 07:44:33 +00:00
|
|
|
r6220)
|
|
|
|
wan_mac=$(mtd_get_mac_binary factory 4)
|
|
|
|
lan_mac=$(macaddr_add "$wan_mac" 1)
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
rt-n56u)
|
2014-07-26 20:36:09 +00:00
|
|
|
lan_mac=$(cat /sys/class/net/eth0/address)
|
2013-02-16 11:50:25 +00:00
|
|
|
lan_mac=$(macaddr_setbit_la "$lan_mac")
|
2015-08-17 06:02:59 +00:00
|
|
|
wan_mac=$(mtd_get_mac_binary factory 32772)
|
2012-08-12 12:48:24 +00:00
|
|
|
;;
|
2016-05-10 16:17:54 +00:00
|
|
|
sk-wb8)
|
|
|
|
wan_mac=$(mtd_get_mac_binary factory 57350)
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
tew-691gr)
|
2016-08-19 18:46:50 +00:00
|
|
|
wan_mac=$(macaddr_add "$(mtd_get_mac_binary factory 4)" 3)
|
2015-01-08 20:26:20 +00:00
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
tew-692gr)
|
2016-08-13 22:47:14 +00:00
|
|
|
wan_mac=$(macaddr_add "$(mtd_get_mac_binary factory 4)" 1)
|
2012-10-18 07:23:03 +00:00
|
|
|
;;
|
2015-11-02 10:17:51 +00:00
|
|
|
tiny-ac)
|
|
|
|
lan_mac=$(mtd_get_mac_ascii u-boot-env LAN_MAC_ADDR)
|
|
|
|
wan_mac=$(mtd_get_mac_ascii u-boot-env WAN_MAC_ADDR)
|
|
|
|
;;
|
2016-10-10 01:24:42 +00:00
|
|
|
vr500)
|
|
|
|
lan_mac=$(mtd_get_mac_binary factory 57344)
|
|
|
|
wan_mac=$(mtd_get_mac_binary factory 57350)
|
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
w306r-v20)
|
|
|
|
lan_mac=$(cat /sys/class/net/eth0/address)
|
|
|
|
wan_mac=$(macaddr_add "$lan_mac" 5)
|
2014-11-05 14:37:13 +00:00
|
|
|
;;
|
2017-01-28 16:05:56 +00:00
|
|
|
wcr-1166ds|\
|
|
|
|
wsr-1166)
|
|
|
|
local index="$(find_mtd_index "board_data")"
|
|
|
|
wan_mac="$(grep -m1 mac= "/dev/mtd${index}" | cut -d= -f2)"
|
|
|
|
lan_mac=$wan_mac
|
|
|
|
;;
|
2012-02-11 15:11:34 +00:00
|
|
|
wcr-150gn)
|
2015-01-08 20:25:55 +00:00
|
|
|
wan_mac=$(mtd_get_mac_binary factory 40)
|
2011-12-05 17:27:07 +00:00
|
|
|
;;
|
2015-08-17 06:02:59 +00:00
|
|
|
whr-1166d|\
|
|
|
|
whr-300hp2|\
|
|
|
|
whr-600d|\
|
|
|
|
wsr-600)
|
2015-03-20 09:37:07 +00:00
|
|
|
wan_mac=$(mtd_get_mac_binary factory 4)
|
|
|
|
lan_mac=$wan_mac
|
|
|
|
;;
|
2015-09-14 20:09:31 +00:00
|
|
|
wizfi630a)
|
|
|
|
lan_mac=$(mtd_get_mac_binary factory 4)
|
|
|
|
wan_mac=$(mtd_get_mac_binary factory 40)
|
|
|
|
;;
|
2016-08-14 21:30:44 +00:00
|
|
|
wlr-6000)
|
|
|
|
wan_mac=$(macaddr_add "$(mtd_get_mac_binary factory 32772)" 2)
|
|
|
|
;;
|
2014-06-02 12:43:04 +00:00
|
|
|
*)
|
2014-07-14 07:38:23 +00:00
|
|
|
lan_mac=$(cat /sys/class/net/eth0/address)
|
2014-06-02 12:43:04 +00:00
|
|
|
wan_mac=$(macaddr_add "$lan_mac" 1)
|
|
|
|
;;
|
2011-12-01 22:48:43 +00:00
|
|
|
esac
|
2011-12-01 22:48:45 +00:00
|
|
|
|
2016-09-10 07:46:14 +00:00
|
|
|
[ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
|
|
|
|
[ -n "$wan_mac" ] && ucidef_set_interface_macaddr "wan" $wan_mac
|
2011-12-01 22:48:43 +00:00
|
|
|
}
|
|
|
|
|
2014-08-18 13:09:20 +00:00
|
|
|
board_config_update
|
2017-05-12 20:36:07 +00:00
|
|
|
board=$(board_name)
|
2011-12-01 22:48:43 +00:00
|
|
|
ramips_setup_interfaces $board
|
|
|
|
ramips_setup_macs $board
|
2014-08-18 13:09:20 +00:00
|
|
|
board_config_flush
|
2011-12-01 22:48:48 +00:00
|
|
|
|
|
|
|
exit 0
|