小米路由器简单救砖

最近在将小米路由器CR8808刷机时,不小心操作失败,路由器成砖头了。好消息是,按reset可以进入openwrt 恢复控制台;坏消息是,通过恢复控制台上传的所有的固件,都提示无效固件。简单记录下成砖过程和救砖过程。PS:在某鱼上咨询一些救砖人士,至少需要50大洋,我也差一点买编程器。

一、成砖

之前将CR880X系列都根据,恩山论坛的教程都成功将固件刷新为红米AX3000,但是一直没有能刷成功极客固件。

1、刷红米AX3000分区,采用如下命令


tftpboot OpenWrt.mtd1.bin && flash 0:MIBIB
#做完不要断电!继续输入以下命令:
tftpboot OpenWrt.mtd11.bin && flash 0:APPSBL
tftpboot OpenWrt.mtd12.bin && flash 0:APPSBL_1
#确认好步骤,没有报错后直接拔电!
reset #重启

2、重启后,使用小米恢复工具就可以正常输入Redmi AX3000的固件了。

3、本打算使用大分区(CR880X合并分区并刷带web的uboot)。如下命令,但是第三步失败。

tftpboot MIBIB.bin && flash 0:MIBIB
#刷完务必断电重启
#重新卡进uboot   
#继续刷入带web的uboot命令:
tftpboot APPSBL.bin && flash 0:APPSBL
tftpboot APPSBL1.bin && flash 0:APPSBL1.bin

4、重启后就变成砖了。系统自动进入uboot,并且网络不通。尝试使用小米恢复工具,根本网络不通。通过 httpd 可以启动openwrt web恢复界面,但是固件校验都失败,此时网络是通的。Ctrl+C退出httpd后,网络不通。

二、救砖

1、help领命发现,printevn可以查看环境变量,setenv 可以设置变量,saveenv则可保存变量。但是printenv发现,环境变量非常少。大概如下

IPQ5018# printenv
baudrate=115200
bootargs=console=ttyMSM0,115200n8
bootcmd=bootmiwifi
bootdelay=5
eth1addr=44:df:65:5e:8d:9
ethact=eth0
ethaddr=44:df:65:a:2f:3
fdt_high=0x4A400000
fdtcontroladdr=4a9d4004
flash_type=11
ipaddr=192.168.2.1
machid=8040000
netmask=255.255.255.0
serverip=192.168.2.100
soc_hw_version=20180101
soc_version_major=1
soc_version_minor=1
stderr=serial@78AF000
stdin=serial@78AF000
stdout=serial@78AF000Environment size: 450/262140 bytes

2、找到另一台同型号的CR880X(已经刷成Redmi AX3000了),查看环境变量。内容非常多,包含系列号、无线信息、超密等等。

IPQ5018# printenv
CMSN=2411000125813
CountryCode=CN
SN=4484/FVA30551
andlink_dev_key=00010001045A73D1EBD6CDF1285FDF9A62C8DF4A736BF96B9628D299034D31934789873
andlink_prov_code=ZHJ
andlink_svr_try_count=3
boot_wait=on
bootargs=ubi.mtd=rootfs root=mtd:ubi_rootfs rootfstype=squashfs rootwait
bootcmd=bootmiwifi
bootdelay=2
bootfile=miwifi_cr8808_all_fac_release_6.4.52.bin
cmei=11105167225813
color=101
default_netmode=router
eth1addr=4c:c6:4c:65:ca:87
ethact=eth1
ethaddr=4c:c6:4c:1:ee:2d
ethprime=eth1
fdt_high=0x4A400000
fdtcontroladdr=4a9d4004
fileaddr=44000000
filesize=1a8ae28
flag_boot_recovery=0
flag_boot_rootfs=0
flag_boot_success=1
flag_boot_type=2
flag_last_success=0
flag_ota_reboot=0
flag_try_sys1_failed=0
flag_try_sys2_failed=0
flash_type=11
fsbootargs=ubi.mtd=rootfs root=mtd:ubi_rootfs rootfstype=squashfs
gatewayip=192.168.31.1
ipaddr=192.168.31.111
machid=8040000
mgtpsd=y@3jmca
miot_did=69992866
miot_key=6MWwxcU0cAwqNVZ
mode=Router
model=CR8808
mtddevname=fs
mtddevnum=0
mtdids=nand0=nand0
mtdparts=mtdparts=nand0:0x2400000@0xa80000(fs),
netmask=255.255.255.0
no_wifi_dev_times=0
partition=nand0,0
serverip=192.168.31.100
soc_hw_version=20180101
soc_version_major=1
soc_version_minor=1
stderr=serial@78AF000
stdin=serial@78AF000
stdout=serial@78AF000
telnet_en=0
uart_en=0
wifipsd=9h36uk9
wl0_radio=1
wl0_ssid=CMCC-ukw-5G
wl1_radio=1
wl1_ssid=CMCC-ukw
wl_pa_type=xpaEnvironment size: 1505/65532 bytes

3、经过对比,使用 setenv,saveenv恢复环境变量。最后可以启动、网络也通了。刷红米AX3000分区。使用小米恢复工具恢复后,可以正常启动了,wifi也可以接入。但是,路由器管理密码不对,怀疑miot_key、nv_sys_pwd每台路由器不同,但是这2个我已经复制过去了。尝试了很多密码都无法登录。再次使用小米恢复工具时,悲催的是路由器和电脑网络有不通了。恢复环境变量的时候,没有将TTL开启,启动后TTL直接无法中断了。

三、后续计划。

1、操作TTL的时候,西安执行永久开启TTL的命令,如下:

setenv boot_wait on
setenv uart_en 1
saveenv

2、寻找CR8808开启ssh方法,类似于CR660X系列解锁ssh方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/6793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正则表达式之子表达式与分组替换

参考地址 一、正则表达式元字符 字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,’n’ 匹配字符 “n”。’\n’ 匹配一个换行符。序列 \\ 匹配 “\” 而 "\(" 则匹配 “(“。^匹配输入字符串的开…

“使用Spring Boot构建微服务应用的最佳实践“

标题:使用Spring Boot构建微服务应用的最佳实践 摘要:本文将介绍如何使用Spring Boot构建微服务应用的最佳实践。我们将讨论微服务架构的概念、Spring Boot的优势以及一些最佳实践,同时提供示例代码帮助读者更好地理解和实践。 正文&#x…

关于Docker的基本概念和使用

关于Docker的基本概念和使用 一、Docker 概述1、Dcker的概念2、容器的优势3、Docker与虚拟机的区别4、容器在内核中支持2种重要技术5、Docker核心概念 二、安装 Docker1、安装依赖包2、设置阿里云镜像源3、安装 Docker-CE并设置为开机自动启动3、查看 docker 版本信息4、docker…

AI智能化技术对项目管理的挑战与应对︱腾讯CSIG能源行业总经理王磊

腾讯CSIG能源行业总经理王磊先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾,演讲议题:AI智能化技术对项目管理的挑战与应对。大会将于8月12-13日在北京举办,敬请关注! 议题简要: 自从DALLE、Midjourney、…

sql关键字和字段冲突

问题描述:包含key字段名的条件查询sql语句执行居然报错 select * from goods_table where key"apple";执行报错: 报错原因 sql语句的字段和关键字发生冲突,导致无法解析sql 报错解决 key加反引号后,即可解决 sele…

程序员面试系列,docker常见面试题

原文链接 什么是Docker?它的主要作用是什么?Docker和虚拟机之间有什么区别?Docker的主要组件有哪些?Docker镜像和容器的区别是什么?如何构建Docker镜像?请简要描述构建过程。如何创建和启动一个Docker容器…

linux升级mysql

linux升级mysql 一.介绍二.下载三.文件配置1.查找删除mysql2.解压配置 四.修改配置五.初始化mysql服务六.启动mysql七.配置数据库七.测试 一.介绍 由于最近业务需要,不得不将之前的mysql5.7.26升级到mysql8.0加了 Linux安装mysql(5.7.26)&…

flask结合mysql实现用户的添加和获取

1、数据库准备 已经安装好数据库,并且创建数据库和表 create database unicom DEFAULT CHARSET utf8 COLLATE utf8_general_ci; CREATE TABLE admin( id int not null auto_increment primary key, username VARCHAR(16) not null, password VARCHAR(64) not null…

初识 Spring (存储和获取 bean)

目录 初识 Spring总结 DI(依赖注入)Spring 项目的创建创建一个 Maven 项目添加 Spring 框架支持添加启动类 存储 bean 对象创建 bean将 bean 注册到容器中 获取并使用 bean 对象获取 bean 的方法一获取 bean 的方法二获取 bean 的方法三 ApplicationCont…

(Chrome Ext)谷歌扩展程序-谷歌插件渗透测试方法记录

文章目录 前言一、本地获取谷歌插件/扩展程序源码二、工具化信息收集总结 前言 在工作岗位变更之后,越来越多“奇奇怪怪”的东西要去渗透和测试,在我之前干安服的时候,最多的就是测一下web,极少情况下测测app,但是现在…

Langchain 的 Conversation buffer memory

Langchain 的 Conversation buffer memory 本笔记本展示了如何使用 ConversationBufferMemory 。该存储器允许存储消息,然后将消息提取到变量中。 我们可以首先将其提取为字符串。 示例代码, from langchain.memory import ConversationBufferMemorym…

C++学习——static静态函数的用途

在C中,static修饰函数有两种不同的含义和作用,取决于它是用于全局函数还是类成员函数。 静态局函数(Static Global Functions): 作用域限制:static修饰的全局函数只能在定义它的源文件中可见,…

read、write等系统调用

用户态的read、write等系统调用,陷入内核态,会首先调用到 SyS_read、SyS_write函数 1、write 用户态的系统调用:write SyS_write vfs_write __vfs_write fops->write 先看看 SyS_write 的定义 // fs/read_write.c577 SYSCALL_DEFINE3(…

根据UIL下载图片/视频、根据URL自动下载图片/视频、GUI自动下载想要的图片

1,根据UIL下载图片/视频 def downForInterface(file_path):count 1value_rows []with open(file_path, encodingUTF-8) as file:f_csv csv.reader(file)for r in f_csv:value_rows.append(r)for file_path in value_rows:cunmulu if . in file_path[0]:print(cu…

网页生成PDF表格诡异多出空白

环境: axios: 0.27.0 egg: 2.35.0 pdf-lib: 1.17.1 puppeteer-core: 17.1.3 node: 16.20.0 element-plus: 2.3.2 vue: 3.2.47 背景: 一个报告页面含有多个统计表格和描述文字,生成PDF用于下载查看,页面使用vue3element-plus…

用 Node.js 手写 WebSocket 协议

目录 引言 从 http 到 websocekt 的切换 Sec-WebSocket-Key 与 Sec-WebSocket-Accept 全新的二进制协议 自己实现一个 websocket 服务器 按照协议格式解析收到的Buffer 取出opcode 取出MASK与payload长度 根据mask key读取数据 根据类型处理数据 frame 帧 数据的发…

多种语言示例采集数据【淘宝天猫1688拼多多API系列】可高并发线程

长话短说,节约彼此宝贵时间,我们以淘宝商品详情数据为例: 请求方式:HTTPS POST GET 请求地址:https://o0b.cn/anzexi taobao.item_get 公共参数 名称类型必须描述技术交流18179014480keyString是调用key&#xf…

rust学习-智能指针

适用场景 有一个在编译时未知大小的类型,想在需要确切大小的上下文使用该类型值 示例1 无意义的例子:将一个单独的值存放在堆上并不是很有意义,b更应该放到栈上 fn main() {let b Box::new(5);// box 在 main 的末尾离开作用域时&#x…

[论文阅读笔记24]Social-STGCNN: A Social Spatio-Temporal GCNN for Human Traj. Pred.

论文: 论文地址 代码: 代码地址 作者在这篇文章中直接用GNN对目标的轨迹时空特征进行建模, 并用时序CNN进行预测, 代替了训练难度较大和速度较慢的RNN类方法. 0. Abstract 行人轨迹预测是一个比较有挑战性的任务, 有着许多的应用. 一个行人的轨迹不仅是由自己决定的, 而且受…

NodeJS获取当前目录、运行文件所在目录、运行文件的上级目录

参考链接: NodeJS获取当前目录和运行文件所在目录 node如何获取当前文件的上级目录路径? const { resolve } require(path)// 返回运行文件所在的目录 console.log(__dirname : __dirname) // __dirname : /Desktop// 当前命令所在的目录 console.lo…