按照网上的说法,CR8808/CR8806/CR8809/红米AX3000都可以参考
开启:http://192.168.3.7/cgi-bin/luci/;stok=91a4a2bb9f1663078e0fc5ec11eadddd/api/misystem/set_telnet?enable=1
查看: http://192.168.3.7/cgi-bin/luci/;stok=99bda34ee768d74282ae25ed02886335/api/misystem/get_telnet
用户名:root 密码:路由器后面贴的默认登录密码:w38eehct
密码不对的话看这个mgtpsd值: http://192.168.3.7/cgi-bin/luci/api/xqsystem/bdata
一键脚本开启:
function handle_error(obj) { //{"code":401,"msg":"Invalid token"} if (obj.code != 0) { alert("发生错误,需要刷新页面:\r\n" + JSON.stringify(obj, null, 4)) throw new Error('发生错误'); } } const base_url=(function() { var currentUrl = document.URL; var stok = currentUrl.match(/stok=(\S*)\/web/)[1]; var host = window.location.hostname + (window.location.port ? ':' + window.location.port : ''); let url = "http://" + host + "/cgi-bin/luci/;stok=" + stok + "/" return url; })(); function get_telnet() { let url = base_url + "api/misystem/get_telnet"; let ret; $.ajax({ url: url, async: false,//同步方式发送请求,true为异步发送 type: "GET", dataType: "json", data: {}, success: function (result) { handle_error(result) ret = result.enable; } }); return ret; } function enable_telnet() { if (get_telnet() == 1) return true; let ret = false; let url = base_url + "api/misystem/set_telnet?enable=1"; $.ajax({ url: url, async: false,//同步方式发送请求,true为异步发送 type: "GET", dataType: "json", data: {}, success: function (result) { handle_error(result) ret = true; } }); return ret; } //得到登录密码 function get_password() { let url = base_url + "api/xqsystem/bdata"; let ret; $.ajax({ url: url, async: false,//同步方式发送请求,true为异步发送 type: "GET", dataType: "json", data: {}, success: function (result) { ret = result.mgtpsd; } }); return ret; } enable_telnet(); let pwd=get_password(); alert("开启telnet成功:"+document.location.host+"\r\n用户:root\r\n密码:"+pwd);
上面的操作只能临时开启,如需要每次开机自动开启,则需要作如下操作
#打开调试模式来解除 bdata 的写保护 zz=$(dd if=/dev/zero bs=1 count=2 2>/dev/null) ; printf '\xA5\x5A%c%c' $zz $zz | mtd write - crash #重启 reboot #修改数据 bdata set ssh_en=1 bdata set telnet_en=1 bdata set uart_en=1 bdata set boot_wait=on bdata commit #重启 reboot #恢复写保护 mtd erase crash #重启 reboot #查看bdata设置对不对 bdata show
在基于前面开启了telnet后,进入telnet环境中开启SSH
nvram set ssh_en=1 nvram set telnet_en=1 nvram set uart_en=1 nvram set boot_wait=on nvram commit sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear /etc/init.d/dropbear restart mkdir /data/auto_ssh cd /data/auto_ssh curl -O https://fastly.jsdelivr.net/gh/lemoeo/AX6S@main/auto_ssh.sh chmod +x auto_ssh.sh uci set firewall.auto_ssh=include uci set firewall.auto_ssh.type='script' uci set firewall.auto_ssh.path='/data/auto_ssh/auto_ssh.sh' uci set firewall.auto_ssh.enabled='1' uci commit firewall uci set system.@system[0].timezone='CST-8' uci set system.@system[0].webtimezone='CST-8' uci set system.@system[0].timezoneindex='2.84' uci commit reboot
来源:https://github.com/NakanoSanku/StudyShare/blob/master/ax3000/ax3000-cr880x-SSH.md
进入SSH后使用命令,查看分区情况,命令: (照理说在telnet下也能做这些操作?)cat /proc/mtd
#这是折腾前CR8808 M79原版分区情况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" #u-boot
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" #我当前的flag_boot_rootfs=0,所以这是原版系统分区位置
mtd19: 02400000 00020000 "rootfs_1" #所以这就是要刷的分区了.
mtd20: 01f00000 00020000 "overlay"
mtd21: 00d80000 00020000 "data"
mtd22: 00364000 0001f000 "kernel"
mtd23: 0158e000 0001f000 "ubi_rootfs"
mtd24: 01b20000 0001f000 "rootfs_data"
mtd25: 00a2c000 0001f000 "data_ignor_reset"
关于rootfs与rootfs_1的说明
一般的硬件只要支持OTA升级(可以理解为在线升级),他就至少要做两个分区
当在分区0下运行时,升级时,会将文件下载到分区1去,然后修改引导标志,下次启动时让分区1引导,这样就实现了升级,
当下次再升级时, 他又会将文件下载到分区0去… 这样循环..
而这个引导标志,这里可使用nvram show命令查看flag_boot_rootfs 值
flag_boot_rootfs=0 时, 由rootfs分区启动
flag_boot_rootfs=1 时, 由rootfs_1分区启动
从这里也能确定,路由器当前的系统是装在哪个分区
所以刷机时, 刷在另一个分区就对了, 刷机完后, 将这个数值改掉, 就能引导我们自己刷的系统了.
#######################################################################刷op固件
#下载固件,这里有两个选择,
#
#这个版本自带不可描述的东西-但公网只能跑两百兆宽带(20MB/s左右) – 这个版本东西比较全,装完没空间了
#从https://openwrt.ai下载固件 – 注意选择M79/M81版本
#
#这个版本能跑满千兆宽带 – 这个版本基本算是原版OP,要能折腾,还有20MB空间
#https://github.com/hzyitc/openwrt-redmi-ax3000/releases
#注意选择文件名带qsdk的,不带的话同样网速上不去
#刷机……………………
#我这里下载好的文件名为: openwrt-06.14.2024-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubi
#使用winscp上传固件到/tmp文件夹
#恢复到/dev/mtd19(rootfs_1)分区
ubiformat /dev/mtd19 -y -f /tmp/openwrt-06.14.2024-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubi
#其它贴子中讲的无法保存配置,我使用这个版本是能保存的
#修改启动分区为1 (rootfs_1为1, 原厂的rootfs为0)
nvram set flag_last_success=1
nvram set flag_boot_rootfs=1
nvram commit
reboot
#至此,重启后不出意外就进入op了
########################################################################后悔药… 切换为原厂固件
###注意!!! 刷入op后,OP不带nvram命令, 需要以下命令修改uboot环境变量
#fw_printenv 打印所有变量
#fw_printenv 变量名 打印单个变量
#fw_setenv 修改变量
#切换回原厂固件 设置为第0个rootfs分区
fw_setenv flag_last_success 0
fw_setenv flag_boot_rootfs 0
reboot
#######################################################################
#将不死uboot上传进去后,把APPSBL分区格了写进去就得mtd erase /dev/mtd11
mtd -r write /tmp/APPSBL.bin /dev/mtd11
#然后这条命令跑完就提示重启, 重启后灯就不亮了———–当时以为变砖了 -_-!
#然后断电, 按住reset, 通电, 8秒后松开reset… 开始闪灯,然后进入了op的web版u-boot (看来是正常刷入了,只是不识别原有的分区表格式,无法引导)
#网卡dhcp自动配置ip..
#浏览器进入(路由器)ip好像是192.168.10.1, 如果不对看网络连接里面的网关ip
#从网页版的u-boot再次选择上面的openwrt-06.14.2024-ipq50xx-arm-redmi_ax3000-squashfs-nand-factory.ubi固件
#上传安装完… 重启后ok了..
####然后发现了个很奇异的事情,可用空间有72MB了…
#进去一看,分区表变了,被合并了
####(??? 为什么网上流传都要替换mtd1(MIBIB)才能实现合并分区呢? 是哪里出了问题?):
####而且.我一开始就备份过MIBIB分区, 与我下载回来的用来合并分区的MIBIB的CRC32是一致的
####再并且.. 我这个分区被合并后,我又重新把MIBIB分区备份下来, 比较了CRC32,同样是一致的,所以得出结果MIBIB并不是什么分区表????
一个回复
我的版本是cr8809电信版的M79 刷完后2.4G 信号特别差