Add support for the AlwayLink M01K43 5G CPE router.
Hardware specifications:
- SoC: MediaTek MT7981B (Filogic 820), dual-core Cortex-A53
- RAM: 256 MiB DDR3 (0x40000000, size 0x10000000)
- Flash: 128 MiB SPI-NAND (UBI, root) + 4 MiB SPI-NOR (bootloader)
- Ethernet: 4x 1 GbE LAN + 1x 2.5 GbE WAN
(MT7531 DSA switch; WAN via RTL8221B 2.5GbE PHY on MAC1)
- WiFi: MT7981 built-in 2x2 802.11ax (2.4 GHz + 5 GHz)
- USB: 1x xHCI (USB 2.0 only; USB 3.0 PHY pins not routed)
- Modem: M.2 B-Key slot wired for USB (tested: Quectel RM551E-GL,
Quectel RM520N-GL via QMI)
- LEDs: 10x GPIO LEDs (status, WAN, LAN, WiFi 2.4/5, signal bars)
- Buttons: WPS, Reset, RFKill
- Power: 12 V DC barrel jack
- UART: 3.3 V TTL header on PCB, 115200 8N1, no flow control
PCB silkscreen: M01K43 v5.0
Manufacturer: Shenzhen AlwayLink Wireless Technology Co., Ltd.
MAC addresses come from the 'ledeinfo' partition (mtd6) at offset 0x18
(label macaddr_ledeinfo_18); the stored value is the LAN MAC.
interface this port vendor firmware
------------------- ----------- --------------------------
eth0 / LAN bridge base + 0 base + 0
eth1 / WAN base + 1 base + 1
wifi 2.4 GHz band@0 base + 2 base (driver-derived)
wifi 5 GHz band@1 base + 3 base + LAA bit (driver)
The vendor's ethernet scheme (LAN = base, WAN = base + 1) is reproduced
exactly. For WiFi the vendor's proprietary mt_wifi driver ignores the
stored per-radio MAC and derives each BSSID from the base by setting the
locally-administered bit, so the radios are not given clean unicast
offsets. Under mainline mt76 + DSA, reusing the base (LAN) MAC on a radio
collides at L2 with the gmac0 conduit, so this port assigns the 2.4 GHz
and 5 GHz radios base + 2 and base + 3 — unique unicast addresses in the
same OUI block.
Installation
------------
Stock firmware defaults (verified on shipping units):
LAN IP: 192.168.100.1
SSH/web: user 'root', password 'admin'
Serial: 3.3 V TTL UART header on PCB, 115200 8N1, no flow control
Image artifacts produced by this device definition:
openwrt-mediatek-filogic-alwaylink_m01k43-squashfs-factory.bin
openwrt-mediatek-filogic-alwaylink_m01k43-squashfs-sysupgrade.bin
Before flashing, back up the per-unit partitions (cannot be
regenerated):
ssh root@192.168.100.1
dd if=/dev/mtd3 of=/tmp/factory.bin bs=1 count=655360
dd if=/dev/mtd6 of=/tmp/ledeinfo.bin bs=1 count=65536
exit
scp root@192.168.100.1:/tmp/factory.bin .
scp root@192.168.100.1:/tmp/ledeinfo.bin .
Method 1 - From an existing OpenWrt install (sysupgrade):
IMG=openwrt-mediatek-filogic-alwaylink_m01k43-squashfs-sysupgrade.bin
scp "$IMG" root@192.168.1.1:/tmp/sysupgrade.bin
ssh root@192.168.1.1 sysupgrade -n /tmp/sysupgrade.bin
Method 2 - U-Boot serial recovery via TFTP (requires 3.3 V USB-UART
adapter):
1. Attach 3.3 V USB-UART (TX, RX, GND) to the PCB header. Open a
terminal at 115200 8N1, no flow control.
2. Configure a TFTP server on the host PC at IP 192.168.2.88.
Place the factory image in the TFTP root, renamed if desired.
3. Power on the router. The BL2/U-Boot banner prints within ~1
second; press any key during the autoboot countdown to enter
the U-Boot menu.
4. From the menu, select 'Upgrade ubi'. U-Boot's default IP is
192.168.2.1 and it expects the TFTP server at 192.168.2.88.
Provide the factory image filename when prompted.
5. Wait for the write to complete; U-Boot reboots into OpenWrt.
Method 3 - From a NAND programmer (brick-recovery path):
1. Clip onto or desolder the SPI-NAND chip and dump the full
128 MiB with a programmer (e.g. RT809H, CH341A with NAND
adapter). Keep the dump as a recovery image.
2. Using the same programmer, write the factory.bin image to
the UBI region of the NAND. The SPI-NOR (BL2/u-boot-env/
Factory/FIP/woem/ledeinfo/nvram) must NOT be erased - those
partitions are per-unit and live on the separate 4 MiB NOR.
3. Reseat the chip and power on. The bootloader on NOR will
load the new kernel and rootfs from UBI.
Signed-off-by: Richard Jones <richard@netsolution.shop>
Link: https://github.com/openwrt/openwrt/pull/22818
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
188 lines
4.3 KiB
Plaintext
188 lines
4.3 KiB
Plaintext
#
|
|
# Copyright (C) 2021 OpenWrt.org
|
|
#
|
|
|
|
[ -e /etc/config/ubootenv ] && exit 0
|
|
|
|
touch /etc/config/ubootenv
|
|
|
|
. /lib/uboot-envtools.sh
|
|
. /lib/functions.sh
|
|
|
|
board=$(board_name)
|
|
|
|
ubootenv_add_mmc_default() {
|
|
ubootenv_add_mmc "ubootenv" "${1:-mmcblk0}" "0x0" "0x40000" "0x40000" "1"
|
|
ubootenv_add_mmc "ubootenv" "${1:-mmcblk0}" "0x40000" "0x40000" "0x40000" "1"
|
|
}
|
|
|
|
ubootenv_add_nor_default() {
|
|
ubootenv_add_mtd "u-boot-env" "0x0" "0x20000" "0x20000" "1"
|
|
ubootenv_add_mtd "u-boot-env" "0x20000" "0x20000" "0x20000" "1"
|
|
}
|
|
|
|
case "$board" in
|
|
abt,asr3000|\
|
|
acer,predator-w6x-ubootmod|\
|
|
asus,zenwifi-bt8-ubootmod|\
|
|
cmcc,a10-ubootmod|\
|
|
comfast,cf-wr632ax-ubootmod|\
|
|
cudy,tr3000-v1-ubootmod|\
|
|
cudy,wbr3000uax-v1-ubootmod|\
|
|
cudy,wr3000e-v1-ubootmod|\
|
|
cudy,wr3000s-v1-ubootmod|\
|
|
cudy,wr3000h-v1-ubootmod|\
|
|
cudy,wr3000p-v1-ubootmod|\
|
|
h3c,magic-nx30-pro|\
|
|
imou,hx21|\
|
|
jcg,q30-pro|\
|
|
konka,komi-a31|\
|
|
mercusys,mr90x-v1-ubi|\
|
|
netcore,n60|\
|
|
netcore,n60-pro|\
|
|
netis,nx30v2|\
|
|
netis,nx31|\
|
|
netis,nx32u|\
|
|
nokia,ea0326gmp|\
|
|
openwrt,one|\
|
|
qihoo,360t7|\
|
|
qihoo,360t7-ubi|\
|
|
routerich,ax3000-ubootmod|\
|
|
routerich,be7200|\
|
|
snr,snr-cpe-ax2|\
|
|
tplink,tl-xdr4288|\
|
|
tplink,tl-xdr6086|\
|
|
tplink,tl-xdr6088|\
|
|
tplink,tl-xtr8488|\
|
|
wavlink,wl-wnt100x3-ubootmod|\
|
|
xiaomi,mi-router-ax3000t-ubootmod|\
|
|
xiaomi,mi-router-wr30u-ubootmod|\
|
|
xiaomi,redmi-router-ax6000-ubootmod)
|
|
ubootenv_add_ubi_default
|
|
;;
|
|
acer,predator-w6|\
|
|
acer,predator-w6d|\
|
|
acer,vero-w6m|\
|
|
glinet,gl-mt2500|\
|
|
glinet,gl-mt2500-airoha|\
|
|
glinet,gl-mt6000|\
|
|
glinet,gl-x3000|\
|
|
glinet,gl-xe3000|\
|
|
globitel,bt-r320|\
|
|
huasifei,wh3000|\
|
|
nradio,c8-668gl)
|
|
ubootenv_add_mmc "u-boot-env" "" "0x0" "0x80000"
|
|
;;
|
|
asiarf,ap7986-003|\
|
|
cetron,ct3003|\
|
|
comfast,cf-wr632ax|\
|
|
edgecore,eap111|\
|
|
netgear,wax220|\
|
|
zbtlink,zbt-z8102ax|\
|
|
zbtlink,zbt-z8103ax)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000"
|
|
;;
|
|
asus,rt-ax59u)
|
|
ubootenv_add_uci_config "/dev/mtd0" "0x100000" "0x20000" "0x20000"
|
|
;;
|
|
bananapi,bpi-r3|\
|
|
bananapi,bpi-r3-mini|\
|
|
bananapi,bpi-r4|\
|
|
bananapi,bpi-r4-lite|\
|
|
bananapi,bpi-r4-poe|\
|
|
cmcc,rax3000m|\
|
|
jdcloud,re-cp-03)
|
|
. /lib/upgrade/fit.sh
|
|
export_fitblk_bootdev
|
|
case "$CI_METHOD" in
|
|
ubi)
|
|
ubootenv_add_ubi_default
|
|
;;
|
|
emmc)
|
|
bootdev=${EMMC_KERN_DEV%%p[0-9]*}
|
|
ubootenv_add_mmc_default "${bootdev#/dev/}"
|
|
;;
|
|
default)
|
|
ubootenv_add_nor_default
|
|
;;
|
|
esac
|
|
;;
|
|
buffalo,wsr-3000ax4p|\
|
|
buffalo,wsr-6000ax8|\
|
|
elecom,wrc-x6000gsd|\
|
|
elecom,wrc-x6000qs|\
|
|
mercusys,mr80x-v3|\
|
|
mercusys,mr85x|\
|
|
mercusys,mr90x-v1|\
|
|
routerich,ax3000|\
|
|
routerich,ax3000-v1|\
|
|
tenbay,wr3000k|\
|
|
tplink,re6000xd)
|
|
ubootenv_add_mtd "u-boot-env" "0x0" "0x20000" "0x20000" "1"
|
|
;;
|
|
comfast,cf-e393ax|\
|
|
iptime,ax3000m)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x80000"
|
|
;;
|
|
dlink,aquila-pro-ai-e30-a1|\
|
|
dlink,aquila-pro-ai-m30-a1|\
|
|
dlink,aquila-pro-ai-m60-a1)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x40000" "0x40000"
|
|
;;
|
|
gatonetworks,gdsp)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000"
|
|
;;
|
|
glinet,gl-mt3000)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x20000"
|
|
;;
|
|
jiorouter,ax6000-jidu6101)
|
|
. /lib/upgrade/nand.sh
|
|
envubi=$(nand_find_ubi ubi)
|
|
envdev=/dev/$(nand_find_volume "$envubi" u-boot-env)
|
|
ubootenv_add_uci_config "$envdev" "0x0" "0x80000" "0x80000" "1"
|
|
;;
|
|
openembed,som7981)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x80000"
|
|
ubootenv_add_uci_sys_config "/dev/mtd3" "0x0" "0x100000" "0x100000"
|
|
;;
|
|
smartrg,sdg-8733|\
|
|
smartrg,sdg-8733a|\
|
|
smartrg,sdg-8734)
|
|
ubootenv_add_mmc "u-boot-env" "mmcblk0" "0x0" "0x8000" "0x8000"
|
|
;;
|
|
teltonika,rutc50|\
|
|
alwaylink,m01k43)
|
|
ubootenv_add_mtd "u-boot-env" "0x0" "0x10000" "0x10000"
|
|
;;
|
|
tplink,archer-ax80-v1|\
|
|
tplink,archer-ax80-v1-eu|\
|
|
tplink,be450)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" "8"
|
|
;;
|
|
ubnt,unifi-6-plus)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x10000"
|
|
;;
|
|
xiaomi,mi-router-ax3000t|\
|
|
xiaomi,mi-router-wr30u-stock|\
|
|
xiaomi,redmi-router-ax6000-stock)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x20000"
|
|
ubootenv_add_uci_sys_config "/dev/mtd2" "0x0" "0x10000" "0x20000"
|
|
;;
|
|
zyxel,ex5601-t0)
|
|
ubootenv_add_mtd "u-boot-env" "0x0" "0x20000" "0x40000" "2"
|
|
;;
|
|
zyxel,ex5601-t0-ubootmod|\
|
|
zyxel,wx5600-t0-ubootmod)
|
|
ubootenv_add_ubi_default
|
|
ubootenv_add_sys_mtd "u-boot-env" "0x0" "0x20000" "0x40000" "2"
|
|
;;
|
|
zyxel,ex5700-telenor)
|
|
ubootenv_add_uci_config "/dev/ubootenv" "0x0" "0x4000" "0x4000" "1"
|
|
;;
|
|
esac
|
|
|
|
config_load ubootenv
|
|
config_foreach ubootenv_add_app_config
|
|
|
|
exit 0
|