mt798x uboot 功能介绍

bl-mt798x项目基于mtk原厂提供的ATF及uboot源码,特点如下

  • uboot自带mtk原厂开发的简易webui恢复界面,可以通过webui直接刷入固件或者更新uboot,也可以使用串口+TFTP刷入固件
  • 支持GL.iNet开发的通电后长按RESET按钮自动进入webui恢复界面的功能
  • 支持多种Flash分区布局切换功能(仅支持spi-nand),可以在webui中切换不同的分区布局,完美兼容小米原厂固件

支持机型

路由器型号 CPU型号 BOARD名称 默认IP地址
360 T7/T7U/T7M mt7981 360t7 192.168.1.1
ZR3020 mt7981 livinet_zr-3020 192.168.1.1
Cetron CT3003 mt7981 cetron_ct3003 192.168.1.1
JCG Q30 PRO mt7981 jcg_q30 192.168.1.1
康佳 KOMI-A31 mt7981 konka_komi-a31 192.168.2.1
小米 WR30U/T/M mt7981 wr30u 192.168.31.1
乐橙 LC-HX3001 mt7981 imou_lc-hx3001 192.168.1.1
创联腾 CLT-R30B1 mt7981 clt_r30b1 192.168.1.1
安博通 ABT ASR3000 mt7981 abt_asr3000 192.168.1.1
CMCC A10 mt7981 cmcc_a10 192.168.1.1
CMCC RAX3000M (SPI-NAND) mt7981 cmcc_rax3000m 192.168.1.1
CMCC RAX3000M (EMMC) mt7981 cmcc_rax3000m-emmc 192.168.1.1
H3C NX30 Pro mt7981 h3c_magic-nx30-pro 192.168.1.1
小米 AX3000T mt7981 ax3000t 192.168.31.1
红米 AX6000 mt7986 redmi_ax6000 192.168.31.1
TP-LINK XDR4288/6086/6088 mt7986 tplink_tl-xdr608x 192.168.1.1

源码

https://github.com/hanwckf/bl-mt798x

下载

https://github.com/hanwckf/bl-mt798x/releases/latest

目前最新的release已经更新到2023.07版本的uboot,同时也提供2022.06的旧版uboot下载

编译说明

  1. 拉取源码,安装arm-gcc工具链。对于ubuntu/debian系统,可以使用以下命令安装
1
2
sudo apt update
sudo apt install gcc-aarch64-linux-gnu build-essential flex bison libssl-dev
  1. 运行源码目录下的build.sh开始自动编译,脚本参数如下
1
2
3
4
5
6
7
8
9
SOC=[mt7981|mt7986] BOARD=<board name> MULTI_LAYOUT=[0|1] ./build.sh
# SOC=mt7981 BOARD=360t7 ./build.sh
# SOC=mt7981 BOARD=wr30u MULTI_LAYOUT=1 ./build.sh
# SOC=mt7986 BOARD=redmi_ax6000 MULTI_LAYOUT=1 ./build.sh

# SOC: CPU型号,可以选择mt7981或mt7986
# BOARD: 路由器型号,根据支持机型表格里的BOARD名称填写
# MULTI_LAYOUT: 是否启用多种Flash分区布局支持,默认禁用。目前此功能仅支持小米wr30u和红米ax6000
# FIXED_MTDPARTS: 是否忽略mtdparts环境变量并固定Flash分区布局,默认开启,推荐开启
  1. 编译完成后,在output目录下生成可直接写入Flash的uboot FIP二进制文件

failsafe webui使用说明

  1. 按住路由器的RESET按钮后通电,保持至少15秒后松开,路由器会自动进入failsafe模式
  2. 因uboot不支持DHCP功能,需要把电脑的IP地址设置成固定IP,其中
    • 对于小米路由器,应设置成192.168.31.100
    • 对于康佳KOMI-A31,应设置成192.168.2.100
    • 对于对于其它路由器,应设置成192.168.1.100
  3. 将电脑连接到路由器任一LAN口,使用浏览器的隐身模式访问路由器的IP地址,其中
    • 对于小米路由器,访问192.168.31.1
    • 对于康佳KOMI-A31,访问192.168.2.1
    • 对于其它路由器,访问192.168.1.1
  4. 选择固件文件上传,支持sysupgrade或factory格式的固件,待上传完毕后点击开始刷机
  5. 刷机完成后,路由器会自动重启,请将电脑的IP地址重新设置成DHCP自动获取
  6. 如果要使用webui更新uboot,可以访问http://<路由器IP>/uboot.html(例如http://192.168.31.1/uboot.html),选择FIP格式的uboot二进制并上传刷入即可,如下图所示

自定义failsafe模式触发按钮

默认情况下,开机后按住RESET按钮会进入failsafe模式,可设置glbtn_key环境变量自定义failsafe模式触发按钮

1
2
3
# 在uboot串口控制台设置触发按钮为mesh按键并保存
setenv glbtn_key mesh
saveenv

也可以在openwrt系统内通过fw_setenv命令设置uboot环境变量

1
2
# 在openwrt/immortalwrt系统内设置glbtn_key环境变量
fw_setenv glbtn_key mesh

串口控制台使用说明

  1. uboot的默认波特率为115200,流控关闭
  2. uboot启动阶段会显示mtk的启动菜单,此时选择最后一项,并再次按下任意键即可进入uboot控制台

  1. 使用mtkupgrade fw命令可以通过TFTP刷入固件

  1. 使用mtkupgrade fip命令可以通过TFTP刷入uboot

多种分区布局切换功能

uboot支持在dts里定义多种不同的Flash分区布局,并可在webui刷入固件时进行切换,此功能目前支持小米WR30U和红米AX6000

在uboot串口控制台中,可以使用showlayout查看内置的分区布局信息。 环境变量mtd_layout_label代表当前使用的分区布局,当mtd_layout_label未设置时,默认使用default分区布局

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
MT7981> showlayout 
mtd label: default, mtdids: nmbm0=nmbm0, mtdparts: nmbm0:1024k(bl2),256k(Nvram),256k(Bdata),2048k(factory),2048k(fip),256k(crash),256k(crash_log),34816k(ubi_kernel),79872k(ubi),256k(KF)
mtd label: immortalwrt-112m, mtdids: nmbm0=nmbm0, mtdparts: nmbm0:1024k(bl2),256k(Nvram),256k(Bdata),2048k(factory),2048k(fip),256k(crash),256k(crash_log),112m(ubi),256k(KF)
mtd label: qwrt, mtdids: nmbm0=nmbm0, mtdparts: nmbm0:1024k(bl2),256k(Nvram),256k(Bdata),2048k(factory),2048k(fip),256k(crash),256k(crash_log),1024k(rsv0),110m(ubi)

MT7981> printenv mtd_layout_label
mtd_layout_label=immortalwrt-112m

# 手动设置mtd_layout_label环境变量并保存即可切换分区布局,与webui中选择分区布局的效果完全一致
# 必须在刷入固件之前设置正确的mtd_layout_label才能生效,例如:
# setenv mtd_layout_label default
# saveenv

小米WR30U多种分区布局固件兼容性

固件类型 uboot (default) uboot (immortalwrt-112m) uboot (qwrt)
小米原厂mtd8/mtd9备份文件 × ×
immortalwrt-mt798x stock × ×
OpenWrt stock × ×
immortalwrt stock × ×
X-Wrt stock × ×
immortalwrt-mt798x 112m × ×
GL.iNet by 237176253 × ×
X-Wrt 112m nmbm × ×
OpenWrt 112m nmbm × ×
immortalwrt 112m nmbm × ×
X-Wrt 112m nmbm × ×
QWRT × ×
OpenWrt ubootmod × × ×
immortalwrt ubootmod × × ×
X-Wrt ubootmod × × ×

红米AX6000多种分区布局固件兼容性

固件类型 uboot (default) uboot (immortalwrt-110m)
小米原厂mtd8/mtd9备份文件 ×
immortalwrt-mt798x stock ×
OpenWrt stock ×
immortalwrt stock ×
X-Wrt stock ×
immortalwrt-mt798x ×
GL.iNet by 237176253 ×
X-Wrt ubootlayout ×
OpenWrt ubootmod × ×
immortalwrt ubootmod × ×
X-Wrt ubootmod × ×

其它注意事项

  • 刷入不同分区布局的固件,必须在uboot内切换分区布局并刷入固件,不得在原有系统内刷入
  • uboot支持刷入小米原厂mtd8/mtd9备份文件(可从此处下载),不支持miwifi.com官网下载的固件
  • 刷入小米原厂固件后,首次开机时会自动重启3次,请耐心等待
  • 刷入小米原厂固件后,uboot env环境变量分区将会被小米原厂固件覆盖重写
  • 刷入小米原厂固件后,不得在小米系统内升级固件,如果要更新原厂系统,必须通过uboot刷入新系统的mtd8/mtd9备份文件
  • 由于OpenWrt主线的ubootmod固件未开启nmbm支持,因此不支持任何ubootmod分区布局的主线固件(包括OpenWrt, X-Wrt等带有ubootmod字样的固件),请使用OpenWrt主线提供的uboot启动ubootmod固件
Licensed under CC BY-NC-SA 4.0
最后更新于 Jan 31, 2024
Built with Hugo
主题 StackJimmy 设计