前置条件
M79版CR8809
Linux系统
TTLtoUSB
想刷成OpenWRT
进查看光猫的管理员密码改桥接 光猫的系统也有点离谱了, 密码直接明文存储在/tmp/ctromfile.cfg
里面
1 2 3 4 5 6 7 8 9 10 11 nix-shell -p busybox telnet 192.168.1.1 tc login: admin Password: <user账户的密码> <Entry0 Active ="Yes" username ="CMCCAdmin" web_passwd ="CMCCAdmin2r%uDUgV" display_mask ="FF FF FF FF FF FF FF FF FF"
准备工作: 进入 Uboot
中断
焊接 ttl
引脚, 连接 usbtottl
(正面从左到右依次是 VCC,RXD,GND,TXD
(VCC
不连))
启动软件 (以 linux-screen
为例 screen /dev/ttyUSB0 115200
(波特率设置成 115200
, 通过 ls /dev/ttyUSB*
来查看有那些串口设备))
重启路由器, 可以在过程中看到 uboot
和其他系统的输出, 但无法中断 uboot
这时候可以先刷 CR8808的6.2.14版本
固件地址 在小米官网下载刷机软件 (😭,没Linux版)
刷机
第一次启动后狂按 enter 就可以进 uboot 了
启用 Uart
1 2 3 setenv boot_wait on setenv uart_en 1 saveenv
准备 tftp
服务器 1 2 nix-shell -p tftp-hpain .tftpd --foreground --address :69 --secure <PATH>
在 uboot
里面
或者也可以手动设置 ip
1 2 setenv printenv serverip <TFTP服务器的IP地址>setenv ipaddr <设备的IP地址>
Linux上设置网卡ip:
1 sudo ifconfig <网卡 > <ip > netmask 255.255.255.0
然后测试一下是否成功
1 2 tftp <TFTP服务器的IP地址>get openwrt-ipq50xx-generic-redmi_ax3000-squashfs-nand-factory .ubi
刷入 OpenWRT
1 2 3 4 5 6 7 8 9 10 11 12 tftpboot openwrt-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubiflash rootfs_1setenv flag_try_sys2_failed 0 setenv flag_boot_rootfs 1 setenv flag_last_success 1 saveenv reset
4 Optional: 合并分区 刷好以后查看分区表, 发现有 rootfs_1
和 rootfs
, data
, 既然我们不需要OTA, 这两个分区对于我们来说应该没用, 登陆后安装软件的可用空间只有几十 M, 可以尝试刷论坛里面的 不死uboot
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 root @OpenWrt:~# cat /proc/mtddev : size erasesize namemtd0 : 00080000 00020000 "0:SBL1" mtd1 : 00080000 00020000 "0:MIBIB" mtd2 : 00040000 00020000 "0:BOOTCONFIG" mtd3 : 00040000 00020000 "0:BOOTCONFIG1" mtd4 : 00100000 00020000 "0:QSEE" mtd5 : 00100000 00020000 "0:QSEE_1" mtd6 : 00040000 00020000 "0:DEVCFG" mtd7 : 00040000 00020000 "0:DEVCFG_1" mtd8 : 00040000 00020000 "0:CDT" mtd9 : 00040000 00020000 "0:CDT_1" mtd10 : 00080000 00020000 "0:APPSBLENV" mtd11 : 00140000 00020000 "0:APPSBL" mtd12 : 00140000 00020000 "0:APPSBL_1" mtd13 : 00100000 00020000 "0:ART" mtd14 : 00080000 00020000 "0:TRAINING" mtd15 : 00080000 00020000 "bdata" mtd16 : 00080000 00020000 "crash" mtd17 : 00080000 00020000 "crash_log" mtd18 : 02400000 00020000 "rootfs" mtd19 : 02400000 00020000 "rootfs_1" mtd20 : 01 f00000 00020000 "overlay" mtd21 : 00 d80000 00020000 "data"
1 2 size: 分区的大小,以字节为单位,通常以十六进制表示。erasesize: 擦除块的大小,以字节为单位,表示最小擦除单元
刷完以后就合并成了一个大分区了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 root @OpenWrt:~# cat /proc/mtddev : size erasesize namemtd0 : 00080000 00020000 "0:SBL1" mtd1 : 00080000 00020000 "0:MIBIB" mtd2 : 00040000 00020000 "0:BOOTCONFIG" mtd3 : 00040000 00020000 "0:BOOTCONFIG1" mtd4 : 00100000 00020000 "0:QSEE" mtd5 : 00100000 00020000 "0:QSEE_1" mtd6 : 00040000 00020000 "0:DEVCFG" mtd7 : 00040000 00020000 "0:DEVCFG_1" mtd8 : 00040000 00020000 "0:CDT" mtd9 : 00040000 00020000 "0:CDT_1" mtd10 : 00080000 00020000 "0:APPSBLENV" mtd11 : 00140000 00020000 "0:APPSBL" mtd12 : 00140000 00020000 "0:APPSBL_1" mtd13 : 00100000 00020000 "0:ART" mtd14 : 00080000 00020000 "0:TRAINING" mtd15 : 00080000 00020000 "bdata" mtd16 : 00080000 00020000 "crash" mtd17 : 00080000 00020000 "crash_log" mtd18 : 07480000 00020000 "rootfs"
刷 UBOOT
变砖警告! 刷完 Uboot
以后不能使用官方的刷机工具进行刷机了, 在进行以下操作之前要确保你知道每一步操作在干啥以及怎么恢复!
1 2 3 4 5 6 tftpboot MIBIB.bin && flash 0:MIBIB # 重启后重新进UBOOT tftpboot APPSBL.bin && flash 0:APPSBL # 按照教程还需要刷APPSBL_1,但实测不需要 # tftpboot APPSBL1.bin && flash 0:APPSBL_1
然后按住 reset, 断电重启, 访问 192.168.10.1
刷固件
在wan口设置Metric 较低的值表示更高的优先级 1
刷错了? 这里有 MIBIB
APPSEL
分区的备份文件 GitHub
安装主题/插件 建议首先 ssh 进去 opkg update
,如果遇到网络问题 export http_proxy=xxxxx &&export https_proxy=xxxxx
然后按照教程来
我的主题是 argon, 去 github
下载 luci-app-argon-config_0.9_all.ipk
和 luci-theme-argon_2.3.1_all.ipk
opkg list-installed
Uci 1 2 3 4 5 uci set wireless.radio1.country ='CN' uci set wireless.radio1.htmode ='HE160' uci set wireless.radio1.channel ='64' uci commit wireless /etc/init.d/network restart
安装 tailscale
内网穿透 1 2 3 4 5 6 7 opkg update opkg install tailscale opkg install iptables-nft tailscale up --netfilter-mode=off --advertise-routes=xxx.xxx.xxx.xxx/xx,yyy.yyy.yyy.yyy/yy --advertise-exit -node --accept-routes=false
Telnet 我希望定时重启路由器/光猫, 但是 openwrt
似乎没有内置 telnet client
,所以想了这个 work_around
1 2 3 (echo "<telnet用户名>" ; sleep 3; echo "<telnet密码>" ; sleep 3; echo "reboot && exit" ; sleep 3) | nc 192.168.1.1 23sleep 20 reboot
然后 crontab -e
编辑, 添加一行 3 * * * /scripts/reboot.sh
每天凌晨 3 点执行这个脚本
控制led灯 1 LED_PATH="/sys/class/leds/<你的LED名称>/brightness"
Refrences&Credits https://github.com/hzyitc/openwrt-redmi-ax3000
https://github.com/blueberry-pie-11/redmi-ax3000-flash
https://github.com/NakanoSanku/StudyShare/blob/master/ax3000/ax3000-cr880x-SSH.md
https://www.right.com.cn/forum/thread-8274491-1-1.html
https://www.right.com.cn/forum/thread-8275543-1-1.html
https://www.right.com.cn/forum/thread-8280964-1-1.html
https://www.right.com.cn/forum/thread-8314226-1-1.html
https://dmm.ink/2024/10/19/cr8809cr880cr8806ax30op/
https://openwrt.org/docs/techref/flash.layout