CR8809

前置条件

  • 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账户的密码>

# cd tmp
# cat ctromfile.cfg | grep CMCCAdmin
<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-hpa
in.tftpd --foreground --address :69 --secure <PATH>

uboot 里面

1
printenv serverip

或者也可以手动设置 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
# Download the firmware to the RAM
tftpboot openwrt-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubi

# Flash it as system 2
flash rootfs_1
setenv flag_try_sys2_failed 0
setenv flag_boot_rootfs 1
setenv flag_last_success 1
saveenv

# Reboot
reset

4 Optional: 合并分区

刷好以后查看分区表, 发现有 rootfs_1rootfs, 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/mtd
dev: size erasesize name
mtd0: 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: 01f00000 00020000 "overlay"
mtd21: 00d80000 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/mtd
dev: size erasesize name
mtd0: 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.ipkluci-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

# netfilter-mode用于配置Linux系统上的防火墙规则

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 23
sleep 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


CR8809
https://20040702.xyz/2025/01/07/CR8809/
作者
Seeker
发布于
2025年1月8日
许可协议