
Hardware specification: SoC: MediaTek MT7986A 4x A53 Flash: 128MB SPI-NAND, 8GB eMMC RAM: 2GB DDR4 Ethernet: 2x 2.5GbE WiFi: MediaTek MT7976C 2x2 2.4G + 3x3 5G Interface: M.2 B-Key, M.2 M-Key, USB 2.0 LED: Power, Status, WLAN2G, WLAN5G, LTE, SSD Button: Reset, Boot switch Power: 12V Type-C PD eMMC Flash instructions: 1. SSH to BPi-R3 Mini, and upload all necessary firmware. 2. Write new GPT table: dd if=immortalwrt-mediatek-filogic-bananapi_bpi-r3-mini-emmc-gpt.bin of=/dev/mmcblk0 bs=512 seek=0 count=34 conv=fsync 3. Erase and write new BL2: echo 0 > /sys/block/mmcblk0boot0/force_ro dd if=/dev/zero of=/dev/mmcblk0boot0 bs=512 count=8192 conv=fsync dd if=immortalwrt-mediatek-filogic-bananapi_bpi-r3-mini-emmc-preloader.bin of=/dev/mmcblk0boot0 bs=512 conv=fsync 4. Erase and write new FIP: dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=13312 count=8192 conv=fsync dd if=immortalwrt-mediatek-filogic-bananapi_bpi-r3-mini-emmc-bl31-uboot.fip of=/dev/mmcblk0 bs=512 seek=13312 conv=fsync 5. Set static IP on your PC: IP 192.168.1.254, GW 192.168.1.1 6. Serve ImmortalWrt initramfs image using TFTP server. 7. Cut off the power and re-engage, wait for TFTP recovery to complete. 8. After ImmortalWrt has booted, perform sysupgrade. 9. Additionally, if you want to have eMMC recovery boot feature: (Don't worry! You will always have TFTP recovery boot feature.) dd if=immortalwrt-mediatek-filogic-bananapi_bpi-r3-mini-initramfs-recovery.itb of=/dev/mmcblk0p4 bs=512 conv=fsync NAND Flash instructions: 1. SSH to BPi-R3 Mini, and upload all necessary firmware. 2. Erase and write new BL2: opkg install kmod-mtd-rw mtd erase BL2 mtd write immortalwrt-mediatek-filogic-bananapi_bpi-r3-mini-snand-preloader.bin BL2 3. Erase and write new FIP: mtd erase FIP mtd write immortalwrt-mediatek-filogic-bananapi_bpi-r3-mini-snand-bl31-uboot.fip FIP 4. Set static IP on your PC: IP 192.168.1.254, GW 192.168.1.1 5. Serve ImmortalWrt initramfs image using TFTP server. 6. Cut off the power and re-engage, wait for TFTP recovery to complete. 7. After ImmortalWrt has booted, erase UBI volumes: umount /mnt/ubi0* ubidetach -p /dev/mtd4 ubiformat -y /dev/mtd4 ubiattach -p /dev/mtd4 8. Create new ubootenv volumes: ubimkvol /dev/ubi0 -n 0 -N ubootenv -s 128KiB ubimkvol /dev/ubi0 -n 1 -N ubootenv2 -s 128KiB 9. Additionally, if you want to have NAND recovery boot feature: (Don't worry! You will always have TFTP recovery boot feature.) ubimkvol /dev/ubi0 -n 2 -N recovery -s 20MiB ubiupdatevol /dev/ubi0_2 immortalwrt-mediatek-filogic-bananapi_bpi-r3-mini-initramfs-recovery.itb 10. Perform sysupgrade. Thank you Banana Pi for providing this board. Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
124 lines
3.6 KiB
Plaintext
124 lines
3.6 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)
|
|
|
|
case "$board" in
|
|
bananapi,bpi-r3|\
|
|
bananapi,bpi-r3-mini)
|
|
rootdev="$(cmdline_get_var root)"
|
|
rootdev="${rootdev##*/}"
|
|
rootdev="${rootdev%%p[0-9]*}"
|
|
case "$rootdev" in
|
|
mmc*)
|
|
local envdev=$(find_mmc_part "ubootenv" $rootdev)
|
|
ubootenv_add_uci_config "$envdev" "0x0" "0x40000" "0x40000" "1"
|
|
ubootenv_add_uci_config "$envdev" "0x40000" "0x40000" "0x40000" "1"
|
|
;;
|
|
mtd*)
|
|
local envdev=/dev/mtd$(find_mtd_index "u-boot-env")
|
|
ubootenv_add_uci_config "$envdev" "0x0" "0x20000" "0x20000" "1"
|
|
ubootenv_add_uci_config "$envdev" "0x20000" "0x20000" "0x20000" "1"
|
|
;;
|
|
ubi*)
|
|
. /lib/upgrade/nand.sh
|
|
local envubi=$(nand_find_ubi ubi)
|
|
local envdev=/dev/$(nand_find_volume $envubi ubootenv)
|
|
local envdev2=/dev/$(nand_find_volume $envubi ubootenv2)
|
|
ubootenv_add_uci_config "$envdev" "0x0" "0x1f000" "0x1f000" "1"
|
|
ubootenv_add_uci_config "$envdev2" "0x0" "0x1f000" "0x1f000" "1"
|
|
;;
|
|
esac
|
|
;;
|
|
cmcc,rax3000m)
|
|
case "$(cmdline_get_var root)" in
|
|
/dev/mmc*)
|
|
local envdev=$(find_mmc_part "ubootenv" "mmcblk0")
|
|
ubootenv_add_uci_config "$envdev" "0x0" "0x40000" "0x40000" "1"
|
|
ubootenv_add_uci_config "$envdev" "0x40000" "0x40000" "0x40000" "1"
|
|
;;
|
|
*)
|
|
. /lib/upgrade/nand.sh
|
|
local envubi=$(nand_find_ubi ubi)
|
|
local envdev=/dev/$(nand_find_volume $envubi ubootenv)
|
|
local envdev2=/dev/$(nand_find_volume $envubi ubootenv2)
|
|
ubootenv_add_uci_config "$envdev" "0x0" "0x1f000" "0x1f000" "1"
|
|
ubootenv_add_uci_config "$envdev2" "0x0" "0x1f000" "0x1f000" "1"
|
|
;;
|
|
esac
|
|
;;
|
|
cmcc,rax3000m-emmc-ubootmod)
|
|
ubootenv_add_uci_config "/dev/mmcblk0p1" "0x0" "0x80000" "0x80000"
|
|
;;
|
|
glinet,gl-mt3000)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x20000"
|
|
;;
|
|
glinet,gl-mt6000)
|
|
local envdev=$(find_mmc_part "u-boot-env")
|
|
ubootenv_add_uci_config "$envdev" "0x0" "0x80000"
|
|
;;
|
|
imou,lc-hx3001-ubootmod)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x80000" "1"
|
|
;;
|
|
livinet,zr-3020|\
|
|
livinet,zr-3020-ubootmod|\
|
|
qihoo,360t7-ubootmod)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" "1"
|
|
;;
|
|
mercusys,mr90x-v1)
|
|
local envdev=/dev/mtd$(find_mtd_index "u-boot-env")
|
|
ubootenv_add_uci_config "$envdev" "0x0" "0x20000" "0x20000" "1"
|
|
;;
|
|
cetron,ct3003-stock|\
|
|
cetron,ct3003-ubootmod|\
|
|
cmcc,rax3000m-nand-ubootmod|\
|
|
netgear,wax220)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000"
|
|
;;
|
|
ubnt,unifi-6-plus)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x10000"
|
|
;;
|
|
xiaomi,mi-router-wr30u-112m-nmbm|\
|
|
xiaomi,mi-router-wr30u-stock|\
|
|
xiaomi,redmi-router-ax6000|\
|
|
xiaomi,redmi-router-ax6000-stock)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x20000"
|
|
ubootenv_add_uci_sys_config "/dev/mtd2" "0x0" "0x10000" "0x20000"
|
|
;;
|
|
h3c,magic-nx30-pro|\
|
|
h3c,magic-nx30-pro-nmbm|\
|
|
qihoo,360t7|\
|
|
tplink,tl-xdr4288|\
|
|
tplink,tl-xdr6086|\
|
|
tplink,tl-xdr6088|\
|
|
xiaomi,mi-router-wr30u-ubootmod|\
|
|
xiaomi,redmi-router-ax6000-ubootmod)
|
|
. /lib/upgrade/nand.sh
|
|
local envubi=$(nand_find_ubi ubi)
|
|
local envdev=/dev/$(nand_find_volume $envubi ubootenv)
|
|
local envdev2=/dev/$(nand_find_volume $envubi ubootenv2)
|
|
ubootenv_add_uci_config "$envdev" "0x0" "0x1f000" "0x20000" "1"
|
|
ubootenv_add_uci_config "$envdev2" "0x0" "0x1f000" "0x20000" "1"
|
|
;;
|
|
zyxel,ex5601-t0)
|
|
local envdev=/dev/mtd$(find_mtd_index "u-boot-env")
|
|
ubootenv_add_uci_config "$envdev" "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
|