小米路由器R3Gv2安装openwrt记录

前言

小米路由器R3Gv2的硬件配置与小米路由器4A千兆版一致,但bootloader有所不同,因此openwrt的固件不要互刷。另外,R3Gv2和R3G、4A百兆版是不同的设备,切勿混淆。

硬件信息

OpenWrt参数页-Xiaomi MiWiFi 3G v2
CPU:联发科 MediaTek MT7621A,双核880MHz
闪存:16MB
内存:128MB
千兆WAN口:1个
千兆LAN口:2个
2.4G无线芯片:MediaTek MT7603E
5G无线芯片:MediaTek MT7612E
USB:无

需要准备的工具

下面的软件,如果电脑上已经有相同功能的软件了,可平替

  • 安装 Python3,用于执行特殊py脚本获取telnet权限。如果已安装了Anaconda,就不用重复安装python了。
  • 使用 pip 安装 requests 包,pip install requests
  • 安装 Xampp,用于搭建Http服务器,存放并上传固件文件。
  • 安装 putty,用于telnet、ssh客户端使用。
  • 安装 WinSCP,用于FTP客户端。
  • 下载 OpenWRTInvasion 脚本,整个Source Code全下载。
  • 下载 breed 固件,breed-mt7621-pbr-m1。
  • 下载 OpenWrt 固件,当前版本 23.05.4,openwrt-23.05.4-mirouter-3gv2

正式步骤

  1. 路由器接好,lan口网线连电脑,登录路由器完成初始设置(设置好管理员密码、wifi密码)
  2. 将下载好的 OpenWRTInvasion 解压,使用文本编辑器打开 remote_command_execution_vulnerability.py 文件,这里需要改动几处代码。
    如图所示,跳过对windows的检测,根据原作者描述windows上使用有时会出问题,所以对windows加了判断,检测windows直接退出。但是脚本代码中并没有什么平台相关的特殊操作,我测试在windows上是可以运行的(Win11 23H2)。router_ip_address强制使用 192.168.31.1,防止 miwifi.com 域名解析错误。
    在这里插入图片描述
  3. 在此目录中,右击,在终端中打开(或者命令行中 cd 进入此目录)
    执行 python remote_command_execution_vulnerability.py,根据提示,输入路由器ip,默认192.168.31.1,没变化直接回车,然后脚本会尝试获取STOK,提示输入管理员密码。如果脚本获取失败,则需手动登录网页获取URL中的STOK输入到脚本中。
    提示 Which option do you prefer 时,选默认直接回车就行。
    在这里插入图片描述
  4. 脚本执行结束后,此时路由器就已经开启了 telnet 和 ftp 了,使用 putty 登录 192.168.31.1,协议选 telnet,登录用户名和密码都是 root
    执行cat /proc/mtd,查看分区情况
cat /proc/mtd
dev:    size   erasesize  name
mtd0: 01000000 00010000 "ALL"
mtd1: 00030000 00010000 "Bootloader"
mtd2: 00010000 00010000 "Config"
mtd3: 00010000 00010000 "Bdata"
mtd4: 00010000 00010000 "Factory"
mtd5: 00010000 00010000 "crash"
mtd6: 00010000 00010000 "cfg_bak"
mtd7: 00100000 00010000 "overlay"
mtd8: 00d00000 00010000 "OS1"
mtd9: 00b30000 00010000 "rootfs"
mtd10: 00180000 00010000 "disk"

备份mtd分区文件。
然后使用WinSCP或其他FTP工具,将备份文件拷贝至本地电脑。(步骤略)

cd /tmp
mkdir backupB9AD
cd backupB9AD
dd if=/dev/mtd0 of=/tmp/backupB9AD/mtd0-ALL.bin
dd if=/dev/mtd1 of=/tmp/backupB9AD/mtd1-Bootloader.bin
dd if=/dev/mtd2 of=/tmp/backupB9AD/mtd2-Config.bin
dd if=/dev/mtd3 of=/tmp/backupB9AD/mtd3-Bdata.bin
dd if=/dev/mtd4 of=/tmp/backupB9AD/mtd4-Factory.bin
dd if=/dev/mtd5 of=/tmp/backupB9AD/mtd5-crash.bin
dd if=/dev/mtd6 of=/tmp/backupB9AD/mtd6-cfg_bak.bin
dd if=/dev/mtd7 of=/tmp/backupB9AD/mtd7-overlay.bin
dd if=/dev/mtd8 of=/tmp/backupB9AD/mtd8-OS1.bin
dd if=/dev/mtd9 of=/tmp/backupB9AD/mtd9-rootfs.bin
dd if=/dev/mtd10 of=/tmp/backupB9AD/mtd10-disk.bin
  1. 使用WinSCP或其他FTP工具,将下载好的 breed-mt7621-pbr-m1.bin 上传至路由器 /tmp 目录下。
    刷入 breed,mtd -r write /tmp/breed-mt7621-pbr-m1.bin Bootloader

  2. breed刷入完成后,会自动重启进入breed刷机模式,浏览器访问192.168.1.1即可进入breed web页面。如果没能进入,断开路由器电源,按住Reset不放,插上电源,当看到路由器的部分或全部LED连闪4次(大约等待5-8秒),松开Reset,浏览器重新访问192.168.1.1。电脑IP需设置为自动获取(DHCP)
    然后,在固件备份中备份 编程器固件 以及 EEPROM

  3. 在breed的web页面,启用环境变量,然后添加一个环境变量,变量名autoboot.command,值boot flash 0x180000,重启 breed 。

  4. 官方原版的openwrt固件中firmware地址在0x180000,由于breed的web界面上,没有对应的闪存布局可以选,所以刷入Openwrt时,只能命令行手动刷入。breed后台关于文件传输能用的命令只有 wget,所以需要准备一个 http 服务器,打开 xampp 控制面板,启用 Apache。
    在这里插入图片描述
    将下载好的 openwrt 固件复制到Xampp的htdocs目录,并改个短点名字。例如 D:\MyTools\Xampp\htdocs\me\op-r3gv2.bin

  5. 使用 putty 登录 192.168.1.1,协议选 telnet,进入 breed 后台,然后输入命令:
    wget http://192.168.1.2/me/op-r3gv2.bin,下载固件到路由器。
    下载完成后,会有提示信息:

wget http://192.168.1.2/me/op-r3gv2.bin
Length: 6554243/0x640283 (6MB) [application/octet-stream]
Saving to address 0x80001000

然后手动擦除一块闪存区域。

flash erase 0x180000 0x800000
# 含义为从0x180000的地址开始,擦除大小为0x800000的内存区域,擦除的区域大小必须大于固件的大小。

复制固件到指定位置

flash write 0x180000 0x80001000 0x640283
#从0x180000这个地址写入保存在0x80001000的数据,写入的大小为 0x640283
  1. 打开breed的web页面,固件刷入,刷入步骤6中备份的EEPROM文件。刷入完成后,重启即可。
    在这里插入图片描述

参考链接

小米路由器4A千兆版 折腾记录 完美刷入官方openwrt 2022-08-09更新
终于解决了breed刷机后不能正常启动的问题
小米路由器4A千兆版刷openWRT保姆级教程

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小猿口算APP脚本(协议版)

小猿口算是一款专注于数学学习的教育应用,主要面向小学阶段的学生。它提供多种数学练习和测试,包括口算、速算、应用题等。通过智能化的题目生成和实时批改功能,帮助学生提高数学计算能力。此外,它还提供详细的学习报告和分析,帮助家长和教师了解学生的学习进度和薄弱环节…

[含文档+PPT+源码等]精品大数据项目-基于python爬虫实现的大数据岗位的挖掘与分析

大数据项目——基于Python爬虫实现的大数据岗位的挖掘与分析,其背景主要源于以下几个方面: 一、大数据时代的来临 随着互联网、物联网、云计算等技术的快速发展,数据呈现出爆炸式增长。根据国际数据公司(IDC)的预测&…

新电脑 Windows 系统初始配置

文章目录 前言1 前置配置2 安装软件2.1 通讯工具2.2 后端开发工具2.3 硬件开发工具2.4 前端开发工具2.4 其它工具 3 Windows 11 优化4 写在最后 前言 分区(个人习惯):1TB SSD 分为 2 个分区,一个 256GB 分区为系统盘,剩…

003 Springboot操作RabbitMQ

Springboot整合RabbitMQ 文章目录 Springboot整合RabbitMQ1.pom依赖2.yml配置3.配置队列、交换机方式一:直接通过配置类配置bean方式二:消息监听通过注解配置 4.编写消息监听发送测试5.其他类型交换机配置1.FanoutExchange2.TopicExchange3.HeadersExcha…

【AIGC】寻找ChatGPT最佳推理步骤:CoT思维链技术的探索与应用

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯CoT思维链概述💯CoT思维链在大型语言模型中的应用💯CoT思维链改变对模型推理能力的理解和改进方式多样化应用场景挑战与未来发展总结 &#x1f4a…

力扣 前缀和

找子数组的个数了解前缀和的基础。 前缀和大致理解为到达某个位置,前面几个数的总和,即s[i1]s[i]a[i1],可以通过一次循环获得。然后几个前缀和作差,即可得到某个位置到某个位置的和,根据map的键值对进行更新次数。 题…

【JavaEE】——回显服务器的实现

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:引入 1:基本概念 二:UDP socket API使用 1:socke…

高频股票期货ETF历史高频数据源

【数据源】 银河金融数据库(yinhedata.com) 提供金融数据股票、美股、期货以及ETF等高频tick数据,分钟级别数据。 MACD背离是指MACD指标与价格走势之间发生的方向性差异,这通常被视为市场可能发生趋势反转的信号。以下是一个具体…

petalinux 自动登陆 自动启动程序

PetaLinux 自动登陆 (1) cd 到项目工程目录下; (2) 运行命令:petalinux-config -c rootfs (3) 依次选择 Image Features -> serial-autologin-root 保存退出 创建APP petalinux-create apps --template install --name init-app --enable编辑文件 …

【linux】冯诺依曼架构

🔥个人主页:Quitecoder 🔥专栏:linux笔记仓 目录 01.冯诺依曼体系结构02.操作系统(Operator System)如何理解“管理”操作系统中实现“管理的先描述再组织” 03.系统调用与库函数系统调用库函数 01.冯诺依…

Win10 IDEA连接虚拟机中的Hadoop(HDFS)

获取虚拟机的ip 虚拟机终端输入 ip a关闭虚拟机防火墙 sudo ufw disable修改Hadoop的core-site.xml文件 将localhost修改为虚拟机局域网IP # 位置可能不一样,和Hadoop安装位置有关 cd /usr/local/hadoop/etc/hadoop vim core-site.xmlIDEA 连接 创建Maven项目…

【图论】(二)图论基础与路径问题

图论基础与路径问题 图的构造邻接矩阵邻接表 所有可达路径邻接矩阵存储邻接表存储 字符串接龙有向图的完全可达性 图的构造 这里仅对图论路径问题中图的构造做整理总结归纳,具体详细相关概念请参考代码随想录上的整理总结: 图论理论基础深度优先搜索理…

【万字长文】Word2Vec计算详解(一)CBOW模型

【万字长文】Word2Vec计算详解(一)CBOW模型 写在前面 本文用于记录本人学习NLP过程中,学习Word2Vec部分时的详细过程,本文与本人写的其他文章一样,旨在给出Word2Vec模型中的详细计算过程,包括每个模块的计…

jmeter学习(7)beanshell

beanshell preprocessor 发送请求前执行 beanshell postprocessor 发送请求前执行 获取请求相关信息 String body sampler.getArguments().getArgument(0).getValue(); String url sampler.getPath(); 获取响应报文 String responseprev.getResponseDataAsString(); 获…

论文翻译 | Fairness-guided Few-shot Prompting for LargeLanguage Models

摘要 大型语言模型已经显示出令人惊讶的执行上下文学习的能力,也就是说,这些模型可以通过对由几个输入输出示例构建的提示进行条件反射,直接应用于解决大量下游任务。然而,先前的研究表明,由于训练示例、示例顺序和提示…

熵权法计算评价指标权重——使用Excel VBA实现

[ 熵权法 ] 信息是系统有序程度的一个度量,熵是系统无序程度的一个度量;根据信息熵的定义,对于某项指标,可以用熵值来判断某个指标的离散程度,其信息熵值越小,指标的离散程度越大, 该指标对综合…

科研绘图系列:R语言绘制SCI文章图2

文章目录 介绍加载R包导入数据图a图b图d系统信息介绍 文章提供了绘制图a,图b和图d的数据和代码 加载R包 library(ggplot2) library(dplyr) library(readxl) library(ggpmisc)导入数据 数据可从以下链接下载(画图所需要的所有数据): 百度网盘下载链接: https://pan.baid…

遍历有向图链路(DFS算法)- 优化版

在上一节基础上,去除了节点的pre集合,只保留节点next的结合,对数据模型进行了优化,实现思想做了优化。 有向图示例: 基本思路 构建有向图数据模型校验有向图不能出现回路,即当前节点不能出现在历史链路中首…

股指期货的杠杆是怎么体现和使用的?

股指期货的杠杆效应是通过保证金交易实现的。投资者只需支付合约价值的一小部分作为保证金,即可控制整个合约的价值。例如,如果一个股指期货合约的价值为100,000元,而保证金比例为10%,那么投资者只需支付10,000元即可控制这个合约…

SpringBoot教程(二十四) | SpringBoot实现分布式定时任务之Quartz(基础)

SpringBoot教程(二十四) | SpringBoot实现分布式定时任务之Quartz(基础) 简介适用场景Quartz核心概念Quartz 存储方式Quartz 版本类型引入相关依赖开始集成方式一:内存方式(MEMORY)存储实现定时任务1. 定义任务类2. 定…