移动 RAX3000M 刷机记录
准备工作
路由器到手了,先判断版本与批次。我买的是 RAX3000M 算力版,观察机身背面存在 CH EC
字样也可以确定是算力版,生产日期是 20240117。
下载必要文件
immortalwrt-24.10.1-mediatek-filogic-cmcc_rax3000m-squashfs-sysupgrade.itb
immortalwrt-24.10.1-mediatek-filogic-cmcc_rax3000m-emmc-bl31-uboot.fip
immortalwrt-24.10.1-mediatek-filogic-cmcc_rax3000m-emmc-gpt.bin
immortalwrt-24.10.1-mediatek-filogic-cmcc_rax3000m-emmc-preloader.bin
immortalwrt-24.10.1-mediatek-filogic-cmcc_rax3000m-initramfs-recovery.itb
此外,还需要终端工具(连接 telnet)、 tftp 服务器和 http 服务器工具,自行下载准备即可。
开启 SSH 或 telnet
登录路由器管理,导出配置文件。
然后把配置文件传到 linux 环境中,解密配置文件。
解密配置文件
实际测试中,我发现我手上这台的配置并没有根据 SN 码加密,而是固定密钥。
CMCC_PASSWD='#RaX30O0M@!$'
openssl aes-256-cbc -d -pbkdf2 -k "$CMCC_PASSWD" -in cfg_export_config_file.conf -out cfg_export_config_file_decrypt.conf
查阅资料过程中还发现其他一些密码
这样我们就得到了解密的配置文件,实际上就是一个 .tar.gz
的压缩包,我直接使用 7-Zip 修改里面的文件。
打开 SSH
打开 /etc/config/dropbear
,右键-编辑,把 enable 修改为 1
,保存并关闭
删除 root 密码
打开 /etc/shadow
,把 root:$1$xxxxxx$xxxxxx:19179:0:99999:7:::
修改为 root::19179:0:99999:7:::
打开 Telnet
部分版本已经删掉了 dropbear,那就只能用 telnet 了。
打开 /etc/rc.local
,在文件开头添加以下内容
telnetd -p 23 -l /bin/ash
加密配置文件
到这里配置文件已经修改完成,进行加密后即可上传。
openssl aes-256-cbc -pbkdf2 -k "$CMCC_PASSWD" -in cfg_export_config_file_decrypt.conf -out cfg_export_config_file_new.conf
上传后设备会自动重启,接下来用 ssh 或者 telnet 登录。
刷写固件
先查看一下分区情况
root@RAX3000M:~# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 14.5M 14.5M 0 100% /rom
tmpfs 240.7M 332.0K 240.3M 0% /tmp
/dev/mmcblk0p8 254.0M 85.7M 168.3M 34% /overlay
overlayfs:/overlay 254.0M 85.7M 168.3M 34% /
tmpfs 512.0K 0 512.0K 0% /dev
/dev/mmcblk0p10 6.4M 6.4M 0 100% /mnt/mmcblk0p11
/dev/mmcblk0p11 6.4M 6.4M 0 100% /mnt/mmcblk0p11
/dev/mmcblk0p12 55.9G 52.0M 53.0G 0% /mnt/mmcblk0p12
/dev/mmcblk0p9 58.0M 1.3M 52.2M 2% /mnt/mmcblk0p9
/dev/mmcblk0p12 55.9G 52.0M 53.0G 0% /extend
/dev/mmcblk0p9 58.0M 1.3M 52.2M 2% /plugin
/dev/mmcblk0p10 6.4M 6.4M 0 100% /tmp/cmcc/framework
root@RAX3000M:~# fdisk -l
Found valid GPT with protective MBR; using GPT
Disk /dev/mmcblk0: 122126336 sectors, 2288M
Logical sector size: 512
Disk identifier (GUID): 2bd17853-102b-4500-aa1a-8a21d4d7984d
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 120800000
Number Start (sector) End (sector) Size Name
1 8192 9215 512K u-boot-env
2 9216 13311 2048K factory
3 13312 17407 2048K fip
4 17408 82943 32.0M kernel
5 82944 214015 64.0M rootfs
6 214016 279551 32.0M kernel2
7 279552 410623 64.0M rootfs2
8 410624 934911 256M rootfs_data
9 934912 1065983 64.0M plugins
10 1065984 1098751 16.0M fwk
11 1098752 1131519 16.0M fwk2
12 1131520 120800000 57.0G data
root@RAX3000M:~# blkid
/dev/mmcblk0p1: PARTLABEL="u-boot-env" PARTUUID="19a4763a-6b19-4a4b-a0c4-8cc34f4c2ab9"
/dev/mmcblk0p2: PARTLABEL="factory" PARTUUID="8142c1b2-1697-41d9-b1bf-a88d76c7213f"
/dev/mmcblk0p3: PARTLABEL="fip" PARTUUID="18de6587-4f17-4e08-a6c9-d9d3d424f4c5"
/dev/mmcblk0p4: PARTLABEL="kernel" PARTUUID="971f7556-ef1a-44cd-8b28-0cf8100b9c7e"
/dev/mmcblk0p5: TYPE="squashfs" PARTLABEL="rootfs" PARTUUID="309a3e76-270b-41b2-b5d5-ed8154e7542b"
/dev/mmcblk0p6: PARTLABEL="kernel2" PARTUUID="9c17fbc2-79aa-4600-80ce-989ef9c95909"
/dev/mmcblk0p7: PARTLABEL="rootfs2" PARTUUID="f19609c8-f7d3-4ac6-b93e-7fd9fad4b4af"
/dev/mmcblk0p8: LABEL="rootfs_data" UUID="74e29c26-ddaa-4471-9801-3f105ac65652" BLOCK_SIZE="4096" TYPE="f2fs" PARTLABEL="rootfs_data" PARTUUID="a4a43b93-f17d-43e2-b7a7-df0bdf610c77"
/dev/mmcblk0p9: LABEL="plugins" UUID="dc616cd8-ed8e-4dd5-bdd1-6bedc5a46974" BLOCK_SIZE="1024" TYPE="ext4" PARTLABEL="plugins" PARTUUID="518c1031-c234-4d49-8301-02e7ebe31231"
/dev/mmcblk0p10: TYPE="squashfs" PARTLABEL="fwk" PARTUUID="6e2bd585-7b0b-45b5-a8a1-4cf5436b1f73"
/dev/mmcblk0p11: TYPE="squashfs" PARTLABEL="fwk2" PARTUUID="fd8708ae-59c7-4ed5-a467-54bfe357cb48"
/dev/mmcblk0p12: LABEL="extend" UUID="b7e1e6e9-24f1-4d4d-82d7-bdc707abdac8" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="data" PARTUUID="3c058515-54c3-452f-9b87-7a4f957b5cd1"
备份分区
直接粘贴下面的命令即可,命令来自 RAX3000M-eMMC_XR30-eMMC
dd if=/dev/mmcblk0boot0 bs=512 count=2048 of=/mnt/mmcblk0p12/boot0_bl2.bin conv=fsync
dd if=/dev/mmcblk0 bs=512 count=34 of=/mnt/mmcblk0p12/mmcblk0_GPT.bin conv=fsync
dd if=/dev/mmcblk0 bs=512 skip=34 count=8158 of=/mnt/mmcblk0p12/mmcblk0_unpartitioned.bin conv=fsync
dd if=/dev/mmcblk0p1 of=/mnt/mmcblk0p12/mmcblk0p1_u-boot-env.bin conv=fsync
dd if=/dev/mmcblk0p2 of=/mnt/mmcblk0p12/mmcblk0p2_factory.bin conv=fsync
dd if=/dev/mmcblk0p3 of=/mnt/mmcblk0p12/mmcblk0p3_fip.bin conv=fsync
dd if=/dev/mmcblk0p4 of=/mnt/mmcblk0p12/mmcblk0p4_kernel.bin conv=fsync
dd if=/dev/mmcblk0p5 of=/mnt/mmcblk0p12/mmcblk0p5_rootfs.bin conv=fsync
dd if=/dev/mmcblk0p6 of=/mnt/mmcblk0p12/mmcblk0p6_kernel2.bin conv=fsync
dd if=/dev/mmcblk0p7 of=/mnt/mmcblk0p12/mmcblk0p7_rootfs2.bin conv=fsync
dd if=/dev/mmcblk0p8 of=/mnt/mmcblk0p12/mmcblk0p8_rootfs_data.bin conv=fsync
dd if=/dev/mmcblk0p9 of=/mnt/mmcblk0p12/mmcblk0p9_plugins.bin conv=fsync
dd if=/dev/mmcblk0p10 of=/mnt/mmcblk0p12/mmcblk0p10_fwk.bin conv=fsync
dd if=/dev/mmcblk0p11 of=/mnt/mmcblk0p12/mmcblk0p11_fwk2.bin conv=fsync
sync
用 winscp 登录进去,协议选择 sfp,打开 /mnt/mmcblk0p12
,把备份的文件下载下来。
如果传输遇到问题,连接时打开高级设置,高级站点设置-连接,关闭优化连接缓冲大小
上传文件
上传下面列出的3个文件到 /mnt/mmcblk0p12/files
先校验
cd /mnt/mmcblk0p12/files/
md5sum ./*
确保文件 md5 值正确
445820274ed839be47a7b3fa8d4351f0 ./immortalwrt-24.10.1-mediatek-filogic-cmcc_rax3000m-emmc-bl31-uboot.fip
f36ef539a2d1a14ac194ab8d2d571271 ./immortalwrt-24.10.1-mediatek-filogic-cmcc_rax3000m-emmc-gpt.bin
10e615e3de08f2196e78752f49ef458e ./immortalwrt-24.10.1-mediatek-filogic-cmcc_rax3000m-emmc-preloader.bin
刷入分区表
dd if=immortalwrt-24.10.1-mediatek-filogic-cmcc_rax3000m-emmc-gpt.bin of=/dev/mmcblk0 bs=512 seek=0 count=34 conv=fsync
刷入 mmcblk0boot0
echo 0 > /sys/block/mmcblk0boot0/force_ro
dd if=/dev/zero of=/dev/mmcblk0boot0 bs=512 count=8192 conv=fsync
dd if=immortalwrt-24.10.1-mediatek-filogic-cmcc_rax3000m-emmc-preloader.bin of=/dev/mmcblk0boot0 bs=512 conv=fsync
刷入 uboot
dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=13312 count=8192 conv=fsync
dd if=immortalwrt-24.10.1-mediatek-filogic-cmcc_rax3000m-emmc-bl31-uboot.fip of=/dev/mmcblk0 bs=512 seek=13312 conv=fsync
tftp 上传固件
把 immortalwrt-24.10.1-mediatek-filogic-cmcc_rax3000m-initramfs-recovery.itb
删掉版本号, 即为 immortalwrt-mediatek-filogic-cmcc_rax3000m-initramfs-recovery.itb
,放到 tftp 根目录下。
如果需要 (例如后面刷成半砖了), ...preloader.bin
也可以删掉版本号,一起放到 tftp 根目录下刷进去。
给电脑配置静态 IP 地址 192.168.1.254
, 网关 192.168.1.1
。
接下来可以断开电源,按住 RESET 不要松开, 插电,等 tftp 上传固件。
tip: 按住 MESH 键也可以, 而且还更好按。
可以用 ping 192.168.1.1 -t
观察路由器状态,并且等 tftpd64 开始传输文件,就可以松掉按键了。
上传完成后,打开 192.168.1.1
管理页面,密码为空直接进入,上传 sysupgrade 固件。
即 immortalwrt-24.10.1-mediatek-filogic-cmcc_rax3000m-squashfs-sysupgrade.itb
等待更新完成,至此安装步骤完成。
参考与鸣谢
RAX3000M 普通版
警告:本教程适用于普通版(SPI-NAND版)的RAX3000M,我这台机器生产日期20230515,刷机有风险,变砖概不负责。
如何查询RAX3000M的版本,根据存储类型分为常见的128M
SPI-NAND版(普通版)(PCB号:RAX3000M_D4_PCB_P3,生产批次20230515和20230606)。 以及64G
EMMC版(PCB号:RAX3000M_D4_SL_P1,生产批次20230626)。
看设备背面标签上的生产批次基本就能确定你的版本,其中SPI-NAND版可以正常刷机,设备背面的标签,写的 CH 就是普通版,写的 CH 加
EC 就是EMMC版本 (目前EMMC版也可以刷机,但是本教程不适用EMMC版),不是SPI-NAND版,禁止使用本教程,会变砖。警告!!!必看:有网友反馈如下问题。
收了个新版本的RAX3000M(生产批次20231027)想开启SSH,用本贴的导入配置文件方法无效,据说是新版的配置文件加密了。那么此贴的配置文件可能不适用于新版本的RAX3000M(生产批次20231027)
2023/12/10更新帖子,在论坛看到已有新版RAX3000M的配置文件,导入即可用于(生产批次20231027)开启SSH,自行在论坛搜索一下。
——RAX3000M开启ssh以及刷uboot和刷机教程
RAX3000M 算力版 (64G eMMC)
通过备份配置文件,解密、解压、修改后重新打包再上传配置的方法,开启 SSH/Telnet。
新版本固件已经开始对配置文件进行加密(根据SN码加密、不根据SN码加密),解密教程参考下面第一篇文章和第三篇文章。
SN=081116000043333 mypassword=$(openssl passwd -1 -salt aV6dW8bD "$SN") mypassword=$(eval "echo $mypassword") echo $mypassword openssl aes-256-cbc -pbkdf2 -k "$mypassword" -in RAX3000M_XR30_cfg-telnet-20240117.conf -out cfg_import_config_file_new.conf
教程 CMCC RAX3000M eMMC 算力版 20240115版开telnet 刷UBOOT
移动RAX3000M 64G EMMC 算力版开启ssh以及刷uboot和刷机教程
CMCC RAX3000M算力版刷机OpenWrt&玩机报告
RAX3000M搞机目录
补充:RAX3000M-eMMC_XR30-eMMC 这篇教程比较完整