1
1
openwrt/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
Fil Dunsky 829d432ecd mediatek: add support for Wavlink WL-WNT100X3
Hardware
--------
- SOC: MediaTek MT7981B
- RAM: 512MB DDR3
- FLASH: 128MB SPI-NAND ESMT F50L1G41LB
- NETWORK: 1 x1000M WAN, 1 x 1000M LAN
- WIFI: MediaTek MT7981B 2x2 DBDC 802.11ax 2T2R (2.4/5)
- LEDs: 1x STATUS (blue)
- USB: 1x USB 3.0 (XHCI)
- FAN: 1x 5V FAN

Installation / Upgrade Procedure
-----------------------------

1.Log in to the web management page.
2.Select the country code and time zone, set the Wi-Fi password, and
click Save.
3.Click "More", navigate to "Developer Options", and enable the SSH
function.
4.Log in to the device via an SSH client (default IP is usually
192.168.20.1).
5.Use scp to upload the OpenWrt
image(openwrt-mediatek-filogic-wavlink_wl-wnt100x3-squashfs-sysupgrade.bin)
to the /tmp directory
6.Perform the flash by running the sysupgrade command (use -n to
overwrite the existing configuration)
7.Wait for the device to reboot automatically. Once finished, access the
OpenWrt web interface (LuCI) at the default IP 192.168.1.1.

MAC Addresses
-----------------------------

2.4GHz: 80:3F:5D:xx:xx:93 (Factory 0x4)
LAN   : 80:3F:5D:xx:xx:91 (Factory, 0x3fff4)
WAN   : 80:3F:5D:xx:xx:92 (Factory, 0x3fffa)
5GHz  : 02:3F:5D:xx:xx:93 (derived from 2.4GHz MAC, LAA))

Signed-off-by: Fil Dunsky <filipp.dunsky@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22753
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-05-20 01:59:55 +02:00

491 lines
10 KiB
Bash

REQUIRE_IMAGE_METADATA=1
RAMFS_COPY_BIN='fitblk fit_check_sign'
asus_initial_setup()
{
# initialize UBI if it's running on initramfs
[ "$(rootfs_type)" = "tmpfs" ] || return 0
ubirmvol /dev/ubi0 -N rootfs
ubirmvol /dev/ubi0 -N rootfs_data
ubirmvol /dev/ubi0 -N jffs2
ubimkvol /dev/ubi0 -N jffs2 -s 0x3e000
}
buffalo_initial_setup()
{
local mtdnum="$( find_mtd_index ubi )"
if [ ! "$mtdnum" ]; then
echo "unable to find mtd partition ubi"
return 1
fi
ubidetach -m "$mtdnum"
ubiformat /dev/mtd$mtdnum -y
}
jiorouter_initial_setup()
{
[ "$(rootfs_type)" = "tmpfs" ] || return 0
local mtdnum="$( find_mtd_index ubi )"
if [ ! "$mtdnum" ]; then
echo "unable to find mtd partition ubi"
return 1
fi
ubidetach -m "$mtdnum" 2>/dev/null
ubiformat /dev/mtd$mtdnum -y
ubiattach -m "$mtdnum"
ubimkvol /dev/ubi0 -n 0 -N u-boot-env -s 0x80000
# Set boot arguments in freshly created U-Boot environment
fw_setenv bootcmd 'ubi read 46000000 kernel;fdt addr $(fdtcontroladdr);fdt rm /signature;bootm 0x46000000'
fw_setenv bootdelay 0
fw_setenv ipaddr ''
}
xiaomi_initial_setup()
{
# initialize UBI and setup uboot-env if it's running on initramfs
[ "$(rootfs_type)" = "tmpfs" ] || return 0
local mtdnum="$( find_mtd_index ubi )"
if [ ! "$mtdnum" ]; then
echo "unable to find mtd partition ubi"
return 1
fi
local kern_mtdnum="$( find_mtd_index ubi_kernel )"
if [ ! "$kern_mtdnum" ]; then
echo "unable to find mtd partition ubi_kernel"
return 1
fi
ubidetach -m "$mtdnum"
ubiformat /dev/mtd$mtdnum -y
ubidetach -m "$kern_mtdnum"
ubiformat /dev/mtd$kern_mtdnum -y
if ! fw_printenv -n flag_try_sys2_failed &>/dev/null; then
echo "failed to access u-boot-env. skip env setup."
return 0
fi
fw_setenv -s - <<-EOF
boot_wait on
uart_en 1
flag_boot_rootfs 0
flag_last_success 1
flag_boot_success 1
flag_try_sys1_failed 8
flag_try_sys2_failed 8
EOF
local board=$(board_name)
case "$board" in
xiaomi,mi-router-ax3000t|\
xiaomi,mi-router-wr30u-stock)
fw_setenv mtdparts "nmbm0:1024k(bl2),256k(Nvram),256k(Bdata),2048k(factory),2048k(fip),256k(crash),256k(crash_log),34816k(ubi),34816k(ubi1),32768k(overlay),12288k(data),256k(KF)"
;;
xiaomi,redmi-router-ax6000-stock)
fw_setenv mtdparts "nmbm0:1024k(bl2),256k(Nvram),256k(Bdata),2048k(factory),2048k(fip),256k(crash),256k(crash_log),30720k(ubi),30720k(ubi1),51200k(overlay)"
;;
esac
}
update_oem_ubi_volume() {
local oem_volume_name="$1"
local oem_volume_part="${2:-$CI_UBIPART}"
local oem_volume_size="$3"
local oem_volume_data="$4"
local oem_ubivol
local mtdnum
local ubidev
mtdnum=$(find_mtd_index "$oem_volume_part")
if [ ! "$mtdnum" ]; then
return
fi
ubidev=$(nand_find_ubi "$oem_volume_part")
if [ ! "$ubidev" ]; then
ubiattach --mtdn="$mtdnum"
ubidev=$(nand_find_ubi "$oem_volume_part")
fi
[ "$ubidev" ] || return
oem_ubivol=$(nand_find_volume "$ubidev" "$oem_volume_name")
[ "$oem_ubivol" ] || return
ubirmvol "/dev/$ubidev" -N "$oem_volume_name"
# return if no new size specified
[ "$oem_volume_size" ] || return
ubimkvol "/dev/$ubidev" -N "$oem_volume_name" -s "$oem_volume_size"
# return if no new data specified
[ "$oem_volume_data" ] || return
ubiupdatevol "/dev/$ubidev" -s "$oem_volume_size" "$oem_volume_data"
}
platform_do_upgrade() {
local board=$(board_name)
case "$board" in
abt,asr3000|\
acer,predator-w6x-ubootmod|\
asus,zenwifi-bt8-ubootmod|\
bananapi,bpi-r3|\
bananapi,bpi-r3-mini|\
bananapi,bpi-r4|\
bananapi,bpi-r4-2g5|\
bananapi,bpi-r4-poe|\
bananapi,bpi-r4-lite|\
bazis,ax3000wm|\
cmcc,a10-ubootmod|\
cmcc,rax3000m|\
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|\
gatonetworks,gdsp|\
h3c,magic-nx30-pro|\
imou,hx21|\
jcg,q30-pro|\
jdcloud,re-cp-03|\
konka,komi-a31|\
mediatek,mt7981-rfb|\
mediatek,mt7988a-rfb|\
mercusys,mr90x-v1-ubi|\
netis,nx30v2|\
netis,nx31|\
netis,nx32u|\
nokia,ea0326gmp|\
openwrt,one|\
netcore,n60|\
netcore,n60-pro|\
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|\
xiaomi,mi-router-ax3000t-ubootmod|\
xiaomi,redmi-router-ax6000-ubootmod|\
xiaomi,mi-router-wr30u-ubootmod|\
zyxel,ex5601-t0-ubootmod|\
zyxel,wx5600-t0-ubootmod)
fit_do_upgrade "$1"
;;
acer,predator-w6|\
acer,predator-w6d|\
acer,vero-w6m|\
airpi,ap3000m|\
arcadyan,mozart|\
glinet,gl-mt2500|\
glinet,gl-mt2500-airoha|\
glinet,gl-mt6000|\
glinet,gl-x3000|\
glinet,gl-xe3000|\
huasifei,wh3000|\
huasifei,wh3000-pro-emmc|\
smartrg,sdg-8612|\
smartrg,sdg-8614|\
smartrg,sdg-8622|\
smartrg,sdg-8632|\
smartrg,sdg-8733|\
smartrg,sdg-8733a|\
smartrg,sdg-8734)
CI_KERNPART="kernel"
CI_ROOTPART="rootfs"
emmc_do_upgrade "$1"
;;
asus,rt-ax52|\
asus,rt-ax57m|\
asus,rt-ax59u|\
asus,tuf-ax4200|\
asus,tuf-ax4200q|\
asus,tuf-ax6000|\
asus,zenwifi-bt8)
CI_UBIPART="UBI_DEV"
CI_KERNPART="linux"
nand_do_upgrade "$1"
;;
buffalo,wsr-3000ax4p|\
xiaomi,mi-router-ax3000t|\
xiaomi,mi-router-wr30u-stock|\
xiaomi,redmi-router-ax6000-stock)
CI_KERN_UBIPART="ubi_kernel"
CI_ROOT_UBIPART="ubi"
nand_do_upgrade "$1"
;;
buffalo,wsr-6000ax8|\
cudy,wr3000h-v1|\
cudy,wr3000p-v1|\
huasifei,wh3000-pro-nand|\
jiorouter,ax6000-jidu6101)
CI_UBIPART="ubi"
nand_do_upgrade "$1"
;;
cudy,re3000-v1|\
cudy,wr3000-v1|\
kebidumei,ax3000-u22|\
totolink,x6000r|\
wavlink,wl-wn573hx3|\
wavlink,wl-wnt100x3|\
widelantech,wap430x|\
yuncore,ax835)
default_do_upgrade "$1"
;;
dlink,aquila-pro-ai-e30-a1|\
dlink,aquila-pro-ai-m30-a1|\
dlink,aquila-pro-ai-m60-a1)
fw_setenv sw_tryactive 0
nand_do_upgrade "$1"
;;
elecom,wrc-x3000gs3|\
elecom,wrc-x6000gsd|\
elecom,wrc-x6000qs)
local bootnum="$(mstc_rw_bootnum)"
case "$bootnum" in
1|2)
CI_UBIPART="ubi$bootnum"
[ -z "$(find_mtd_index $CI_UBIPART)" ] &&
CI_UBIPART="ubi"
;;
*)
v "invalid bootnum found ($bootnum), rebooting..."
nand_do_upgrade_failed
;;
esac
nand_do_upgrade "$1"
;;
mercusys,mr80x-v3|\
mercusys,mr85x|\
mercusys,mr90x-v1|\
tplink,archer-ax80-v1|\
tplink,archer-ax80-v1-eu|\
tplink,be450|\
tplink,re6000xd)
CI_UBIPART="ubi0"
nand_do_upgrade "$1"
;;
netgear,eax17)
echo "UPGRADING SECOND SLOT"
CI_KERNPART="kernel2"
CI_ROOTPART="rootfs2"
nand_do_flash_file "$1" || nand_do_upgrade_failed
echo "UPGRADING PRIMARY SLOT"
CI_KERNPART="kernel"
CI_ROOTPART="rootfs"
nand_do_flash_file "$1" || nand_do_upgrade_failed
nand_do_upgrade_success
;;
tplink,fr365-v1)
CI_UBIPART="ubi"
CI_KERNPART="kernel"
CI_ROOTPART="rootfs"
nand_do_upgrade "$1"
;;
teltonika,rutc50)
CI_UBIPART="$(cmdline_get_var ubi.mtd)"
nand_do_upgrade "$1"
;;
nradio,c8-668gl)
CI_DATAPART="rootfs_data"
CI_KERNPART="kernel_2nd"
CI_ROOTPART="rootfs_2nd"
emmc_do_upgrade "$1"
;;
ubnt,unifi-6-plus)
CI_KERNPART="kernel0"
EMMC_ROOT_DEV="$(cmdline_get_var root)"
emmc_do_upgrade "$1"
;;
unielec,u7981-01*)
local rootdev="$(cmdline_get_var root)"
rootdev="${rootdev##*/}"
rootdev="${rootdev%p[0-9]*}"
case "$rootdev" in
mmc*)
CI_ROOTDEV="$rootdev"
CI_KERNPART="kernel"
CI_ROOTPART="rootfs"
emmc_do_upgrade "$1"
;;
*)
CI_KERNPART="fit"
nand_do_upgrade "$1"
;;
esac
;;
*)
nand_do_upgrade "$1"
;;
esac
}
PART_NAME=firmware
platform_check_image() {
local board=$(board_name)
[ "$#" -gt 1 ] && return 1
case "$board" in
abt,asr3000|\
acer,predator-w6x-ubootmod|\
asus,zenwifi-bt8-ubootmod|\
bananapi,bpi-r3|\
bananapi,bpi-r3-mini|\
bananapi,bpi-r4|\
bananapi,bpi-r4-2g5|\
bananapi,bpi-r4-poe|\
bananapi,bpi-r4-lite|\
bazis,ax3000wm|\
cmcc,a10-ubootmod|\
cmcc,rax3000m|\
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|\
gatonetworks,gdsp|\
h3c,magic-nx30-pro|\
jcg,q30-pro|\
jdcloud,re-cp-03|\
konka,komi-a31|\
mediatek,mt7981-rfb|\
mediatek,mt7988a-rfb|\
mercusys,mr90x-v1-ubi|\
nokia,ea0326gmp|\
netis,nx32u|\
openwrt,one|\
netcore,n60|\
qihoo,360t7|\
qihoo,360t7-ubi|\
routerich,ax3000-ubootmod|\
tplink,tl-xdr4288|\
tplink,tl-xdr6086|\
tplink,tl-xdr6088|\
tplink,tl-xtr8488|\
xiaomi,mi-router-ax3000t-ubootmod|\
xiaomi,redmi-router-ax6000-ubootmod|\
xiaomi,mi-router-wr30u-ubootmod|\
zyxel,ex5601-t0-ubootmod)
fit_check_image "$1"
return $?
;;
creatlentem,clt-r30b1|\
creatlentem,clt-r30b1-112m|\
nradio,c8-668gl)
# tar magic `ustar`
magic="$(dd if="$1" bs=1 skip=257 count=5 2>/dev/null)"
[ "$magic" != "ustar" ] && {
echo "Invalid image type."
return 1
}
return 0
;;
*)
nand_do_platform_check "$board" "$1"
return $?
;;
esac
return 0
}
platform_copy_config() {
case "$(board_name)" in
bananapi,bpi-r3|\
bananapi,bpi-r3-mini|\
bananapi,bpi-r4|\
bananapi,bpi-r4-2g5|\
bananapi,bpi-r4-poe|\
bananapi,bpi-r4-lite|\
cmcc,rax3000m|\
gatonetworks,gdsp|\
mediatek,mt7988a-rfb)
if [ "$CI_METHOD" = "emmc" ]; then
emmc_copy_config
fi
;;
acer,predator-w6|\
acer,predator-w6d|\
acer,vero-w6m|\
airpi,ap3000m|\
arcadyan,mozart|\
glinet,gl-mt2500|\
glinet,gl-mt2500-airoha|\
glinet,gl-mt6000|\
glinet,gl-x3000|\
glinet,gl-xe3000|\
huasifei,wh3000|\
huasifei,wh3000-pro-emmc|\
jdcloud,re-cp-03|\
nradio,c8-668gl|\
smartrg,sdg-8612|\
smartrg,sdg-8614|\
smartrg,sdg-8622|\
smartrg,sdg-8632|\
smartrg,sdg-8733|\
smartrg,sdg-8733a|\
smartrg,sdg-8734|\
ubnt,unifi-6-plus)
emmc_copy_config
;;
esac
}
platform_pre_upgrade() {
local board=$(board_name)
case "$board" in
asus,rt-ax52|\
asus,rt-ax57m|\
asus,rt-ax59u|\
asus,tuf-ax4200|\
asus,tuf-ax4200q|\
asus,tuf-ax6000|\
asus,zenwifi-bt8)
asus_initial_setup
;;
buffalo,wsr-3000ax4p)
update_oem_ubi_volume "rootfs" "ubi_kernel" "4"
update_oem_ubi_volume "rootfs_data" "ubi_kernel"
update_oem_ubi_volume "dpi" "ubi"
;;
buffalo,wsr-6000ax8)
buffalo_initial_setup
;;
elecom,wrc-x6000gsd|\
elecom,wrc-x6000qs)
local delay=$(fw_printenv -n bootmenu_delay)
[ -z "$delay" ] || [ "$delay" -eq "0" ] && \
fw_setenv bootmenu_delay 3
;;
jiorouter,ax6000-jidu6101)
jiorouter_initial_setup
;;
xiaomi,mi-router-ax3000t|\
xiaomi,mi-router-wr30u-stock|\
xiaomi,redmi-router-ax6000-stock)
xiaomi_initial_setup
;;
esac
}