最近lean的lede仓库添加了对AX6的支持

终于能用上OpenWrt了(虽然目前还没有breed/uboot有uboot)

事前准备

  • 一台电脑(能ssh执行命令的设备)

  • 一个OpenWrt系统的路由器(我使用的是小米路由器3G,以下简称R3G)

配置OpenWrt服务器

电脑连接R3G(无线或有线均可)

ssh连接R3G后执行如下命令创建文件

vi /usr/lib/lua/luci/controller/admin/xqsystem.lua

输入以下内容并保存

module("luci.controller.admin.xqsystem", package.seeall)
function index()
local page = node("api")
page.target = firstchild()
page.title = ("")
page.order = 100
page.index = true
page = node("api","xqsystem")
page.target = firstchild()
page.title = ("")
page.order = 100
page.index = true
entry({"api", "xqsystem", "token"}, call("getToken"), (""), 103, 0x08)
end
local LuciHttp = require("luci.http")
function getToken()
local result = {}
result["code"] = 0
result["token"] = "; nvram set ssh_en=1; nvram commit; echo -e 'admin\nadmin' | passwd root; sed -i 's/channel=.*/channel=\"debug\"/g' /etc/init.d/dropbear; /etc/init.d/dropbear start;"
LuciHttp.write_json(result)
end

之后将R3G lan接口的IPv4地址修改为169.254.31.1

并取消勾选动态DHCP

应用更改后手动设置电脑的静态ip地址

重新连接后执行以下命令(也可以用浏览器访问curl后的网址)

curl http://169.254.31.1/cgi-bin/luci/api/xqsystem/token

返回类似以下结果即服务器正常运行

启用SSH

电脑使用网线连接AX6

登录管理界面如下图获取stok备用

再依次执行以下命令(可使用浏览器访问curl后的网址代替命令)

curl http://192.168.31.1/cgi-bin/luci/;stok=STOK/api/misystem/extendwifi_connect?ssid=SSID&password=PWD

curl http://192.168.31.1/cgi-bin/luci/;stok=STOK/api/xqsystem/oneclick_get_remote_token?username=xxx&password=xxx&nonce=xxx

第一条命令中

STOK为AX6的stok值

SSID为R3G的WIFI名称

PWD为R3G的WIFI密码(未设置密码可缺省)

第二条命令仅需替换STOK

返回code为0即执行成功

两条命令均执行成功后可以admin为密码ssh连接AX6

刷入QSDK

备份(ssh连接AX6后执行,非必需)

dd if=/dev/mtd9 of=/tmp/mtd9

保存至电脑

scp -r root@192.168.31.1:/tmp/mtd9 ./

设置env

nvram set flag_last_success=0
nvram set flag_boot_rootfs=0
nvram set flag_boot_success=1
nvram set flag_try_sys1_failed=0
nvram set flag_try_sys2_failed=0
nvram set boot_wait=on
nvram set uart_en=1
nvram set telnet_en=1
nvram set ssh_en=1
nvram commit

上传qsdk固件

scp xiaomimtd12.bin root@192.168.31.1:/tmp

写入并重启

mtd write /tmp/xiaomimtd12.bin rootfs

reboot

重启后qsdk后台地址为192.168.1.1 无密码

上传a6minbib.bin

scp a6minbib.bin root@192.168.1.1:/tmp

重新分区并重启

. /lib/upgrade/platform.sh

switch_layout boot; do_flash_failsafe_partition a6minbib "0:MIBIB"

reboot

上传OpenWrt

scp openwrt-ipq807x-generic-redmi_ax6-squashfs-nand-factory.ubi root@192.168.1.1:/tmp

刷入OpenWrt并重启

ubiformat /dev/mtd13 -y -f /tmp/openwrt-ipq807x-generic-redmi_ax6-squashfs-nand-factory.ubi

fw_setenv flag_last_success 1

fw_setenv flag_boot_rootfs 1

reboot

重新启动后就是OpenWrt了(后台192.168.1.1 密码password)

注意

刷入qsdk前 后台/ssh ip为192.168.31.1

启用ssh后密码为admin

刷入qsdk后 后台/ssh ip为192.168.1.1 无密码

scp上传/下载文件直接在本地执行

操作路由器的命令在ssh连接路由器后执行

目前没有breed/uboot不建议更新OpenWrt以免变砖


02-23更新

现已有uboot可供ax6使用

刷如方法如下

ssh连接ax6之后执行以下命令切换至QSDK

OpenWrt当前mtd分区

fw_setenv flag_last_success 0

fw_setenv flag_boot_rootfs 0

reboot

QSDK没有无线需使用网线连接

上传uboot文件至ax6 /tmp目录

再依次执行以下命令刷入

mtd erase /dev/mtd1

mtd write /tmp/ax6-mibib.bin /dev/mtd1

mtd erase /dev/mtd7

mtd write /tmp/uboot-redmi-ax6.bin /dev/mtd7

路由器断电状态按住reset再通电即可启动uboot

电脑使用网线连接ax6 lan口

设定ip地址为192.168.1.2子网掩码225.225.225.0(目前的uboot不能广播dhcp)

浏览器访问192.168.1.1即为uboot界面

因为刷入ax6-mibib.bin调整了分区大小

因此需要再刷一次OpenWrt固件

选择以factory.ubi结尾的固件再点击Update Firmware(Edge上传固件遇到了意外中断的情况,换用Chrome则没问题)

等待文件上传完毕就会自动刷入OpenWrt并启动

新的分区大小


10-13更新

因为lede仓库的这个提交ipq807x: drop all xiaomi devices support移除了AX6的支持,之前的固件用了半年没更新。最近编译了基于openwrt官方的固件,迫于LuCi太慢并且一些默认设定折腾人(虽然解决了),还是考虑尝试lean的固件。

在lede仓库内执行

git revert edbd8d2e9

会提示有文件冲突,再依次执行

mkdir -p target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/

mv target/linux/ipq807x/files-5.10/arch/arm64/boot/dts/qcom/ipq8071-ax3600.dts target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/

mv target/linux/ipq807x/files-5.10/arch/arm64/boot/dts/qcom/ipq8071-ax3600.dtsi target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/

mv target/linux/ipq807x/files-5.10/arch/arm64/boot/dts/qcom/ipq8071-ax6.dts target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/

git checkout edbd8d2e9 target/linux/ipq807x/patches-5.10/900-arm64-dts-add-OpenWrt-DTS-files.patch

git add . && git revert --continue --no-edit

然后AX6就能正常编译了,如果有使用Github Actions编译的需求可以fork lean的仓库,执行上述操作后提交改动即可。

相关