Also known as the "Xiaomi Router AX3200" in western markets, but only the AX6S is widely installation-capable at this time. SoC: MediaTek MT7622B RAM: DDR3 256 MiB (ESMT M15T2G16128A) Flash: SPI-NAND 128 MiB (ESMT F50L1G41LB or Gigadevice GD5F1GQ5xExxG) WLAN: 2.4/5 GHz 4T4R 2.4 GHz: MediaTek MT7622B 5 GHz: MediaTek MT7915E Ethernet: 4x 10/100/1000 Mbps Switch: MediaTek MT7531B LEDs/Keys: 2/2 (Internet + System LED, Mesh button + Reset pin) UART: Marked J1 on board VCC RX GND TX, beginning from "1". 3.3v, 115200n8 Power: 12 VDC, 1.5 A Notes: U-Boot passes through the ethaddr from uboot-env partition, but also has been known to reset it to a generic mac address hardcoded in the bootloader. However, bdata is also populated with the ethernet mac addresses, but is also typically never written to. Thus this is used instead. Installation: 1. Flash stock Xiaomi "closed beta" image labelled 'miwifi_rb03_firmware_stable_1.2.7_closedbeta.bin'. (MD5: 5eedf1632ac97bb5a6bb072c08603ed7) 2. Calculate telnet password from serial number and login 3. Execute commands to prepare device nvram set ssh_en=1 nvram set uart_en=1 nvram set boot_wait=on nvram set flag_boot_success=1 nvram set flag_try_sys1_failed=0 nvram set flag_try_sys2_failed=0 nvram commit 4. Download and flash image On computer: python -m http.server On router: cd /tmp wget http://<IP>:8000/factory.bin mtd -r write factory.bin firmware Device should reboot at this point. Reverting to stock: Stock Xiaomi recovery tftp that accepts their signed images, with default ips of 192.168.31.1 + 192.168.31.100. Stock image should be renamed to tftp server ip in hex (Eg. C0A81F64.img) Triggered by holding reset pin on powerup. A simple implementation of this would be via dnsmasq's dhcp-boot option or using the vendor's (Windows only) recovery tool available on their website. Signed-off-by: Richard Huynh <voxlympha@gmail.com>
98 lines
1.7 KiB
Bash
Executable File
98 lines
1.7 KiB
Bash
Executable File
REQUIRE_IMAGE_METADATA=1
|
|
|
|
platform_do_upgrade() {
|
|
local board=$(board_name)
|
|
local file_type=$(identify $1)
|
|
|
|
case "$board" in
|
|
bananapi,bpi-r64)
|
|
export_bootdevice
|
|
export_partdevice rootdev 0
|
|
case "$rootdev" in
|
|
mmc*)
|
|
CI_ROOTDEV="$rootdev"
|
|
CI_KERNPART="production"
|
|
emmc_do_upgrade "$1"
|
|
;;
|
|
*)
|
|
CI_KERNPART="fit"
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
esac
|
|
;;
|
|
buffalo,wsr-2533dhp2)
|
|
local magic="$(get_magic_long "$1")"
|
|
|
|
# use "mtd write" if the magic is "DHP2 (0x44485032)"
|
|
# or "DHP3 (0x44485033)"
|
|
if [ "$magic" = "44485032" -o "$magic" = "44485033" ]; then
|
|
buffalo_upgrade_ubinized "$1"
|
|
else
|
|
CI_KERNPART="firmware"
|
|
nand_do_upgrade "$1"
|
|
fi
|
|
;;
|
|
linksys,e8450-ubi)
|
|
CI_KERNPART="fit"
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
linksys,e8450)
|
|
if grep -q mtdparts=slave /proc/cmdline; then
|
|
PART_NAME=firmware2
|
|
else
|
|
PART_NAME=firmware1
|
|
fi
|
|
default_do_upgrade "$1"
|
|
;;
|
|
mediatek,mt7622-rfb1-ubi|\
|
|
totolink,a8000ru|\
|
|
xiaomi,redmi-router-ax6s)
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
*)
|
|
default_do_upgrade "$1"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
PART_NAME=firmware
|
|
|
|
platform_check_image() {
|
|
local board=$(board_name)
|
|
local magic="$(get_magic_long "$1")"
|
|
|
|
[ "$#" -gt 1 ] && return 1
|
|
|
|
case "$board" in
|
|
buffalo,wsr-2533dhp2)
|
|
buffalo_check_image "$board" "$magic" "$1" || return 1
|
|
;;
|
|
mediatek,mt7622-rfb1-ubi|\
|
|
totolink,a8000ru|\
|
|
xiaomi,redmi-router-ax6s)
|
|
nand_do_platform_check "$board" "$1"
|
|
;;
|
|
*)
|
|
[ "$magic" != "d00dfeed" ] && {
|
|
echo "Invalid image type."
|
|
return 1
|
|
}
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
return 0
|
|
}
|
|
|
|
platform_copy_config() {
|
|
case "$(board_name)" in
|
|
bananapi,bpi-r64)
|
|
export_bootdevice
|
|
export_partdevice rootdev 0
|
|
if echo $rootdev | grep -q mmc; then
|
|
emmc_copy_config
|
|
fi
|
|
;;
|
|
esac
|
|
}
|