路由器参数:
- 处理器:MT7621A MIPS双核880MHz
- ROM :128MB SLC Nand Flash
- 内存:256MB DDR3-1200
- 2.4G:2X2(支持IEEE 802.11N协议,最高速率可达300Mbps)
- 5G :2X2(支持IEEE 802.11AC协议,最高速率可达867Mbps)
- 天线:外置全向高增益天线4根(2.4G最大增益5dBi 2根 5G最大增益6dBi 2根)
- 散热:鳍片式大面积铝材散热器
- USB: 1个 3.0接口(DC output:5V/1A)
- LAN:2个 10/100/1000M自适应LAN口(Auto MDI/MDIX)
- WAN:1个 10/100/1000M自适应WAN口(Auto MDI/MDIX)
https://www.mi.com/miwifi3g/s...
刷机大致步骤
- 将路由器固件升级到开发版;
- 开启路由器 ssh 登录功能;
- ssh 登录路由器并从命令刷入第三方固件;
- 或者,ssh登录路由器刷入第三方引导 Breed,再通过 Breed 网页界面刷入三方固件;
这里的 Breed 也是一种 bootloader,类似于 Android 刷机时用到的 Recovery TWRP.
注意事项
这个放在前面,不然容易踩坑(针对 OpenWrt)。
目前(2020/02/23),Breed 还不能直接刷入原生的 OpenWrt,原因是:
Breed固件升级界面一次只能选择一个固件,而 OpenWrt 的固件是分开的两个文件(见下方),单刷1个无法正常开机;
解决方法:
- 路由器开启 ssh 后,上传 OpenWrt原生固件使用命令行刷入;
- 使用 Breed 刷入将OpenWrt整合过后的固件,比如:
小米R3G固件OpenWrt R20.1.24 by Lean支持4G,独家支持从Breed刷入
不过我试过这个固件,OpenWrt 20的开发版,刷完后在命令行安装软件时,提示 /overlay 空间不足,然后崩溃了,固件丢失并且回到了 bread 界面
其他固件,如 潘多拉和华硕的,都是单文件,没有这个问题。
文件准备
OpenWrt镜像站
- 官方固件开发版
地址:http://miwifi.com/miwifi_down...
文件:miwifi_r3g_firmware_12f97_2.25.124.bin
下载 OpenWrt
当前版本:19.07.1- openwrt-19.07.1-ramips-mt7621-xiaomi_mir3g-squashfs-kernel1.bin
- openwrt-19.07.1-ramips-mt7621-xiaomi_mir3g-squashfs-rootfs0.bin
- 下载 ssh 工具包并使用U盘刷入
地址:https://d.miwifi.com/rom/ssh
文件:miwifi_ssh.bin
登录上面的地址,在对应的路由器后面下载工具包,文件名固定为miwifi_ssh.bin
,将其放入一个 FAT32 的U盘根目录,U盘不能是启动盘;
同时记下生成的root账号和密码; - 下载 Breed 这个不死 bootloader
地址:https://breed.hackpascal.net
文件:breed-mt7621-xiaomi-r3g.bin
Breed 还有个WEB控制台助手,我们可以下载它,打开后配置路由器ssh信息,选择对应的型号,远程刷入 breed。
当前版本为:路由器breed_Web控制台助手v5.9版本.7z
,自行百度。 - 下载潘多拉固件(固件第二选择)
地址:http://opt.cn2qq.com/padavan
文件:MI-R3G_3.4.3.9-099.trx
(当前版本)
刷机过程
- 升级 ROM 为开发版
a. 打开 http://miwifi.com/miwifi_down... ,在下载中心点击右侧的 ROM,找到 小米路由器3G 开发版,下载对应固件;
b. 登录 http://192.168.31.1, 在高级中完成固件升级; 开启路由器 SSH
开启了ssh 才可以通过远程把文件上传到路由器上,所有刷机都要经历这一步。按照小米官网页面的说明执行,即可顺利完成ssh开启。简单步骤为:
插U盘 - 断电 - 按住reset - 通电 - 等待指示灯闪烁(全程大约10秒)。开启后,待路由器重启成功,使用 ssh 工具登录看能否成功:
ssh root@192.168.31.1
成功拔掉U盘,进入下一步。
安装 breed
使用 ssh 工具将breed-mt7621-xiaomi-r3g.bin
上传到/tmp
目录,并执行下面的命令刷入:mtd -r write /tmp/breed-mt7621-xiaomi-r3g.bin Bootloader
没问题的话,bootloader 就刷好了。这时候我们就可以重置路由器,这样开机后就进入到了 Breed 的刷机页面。
重置路由器:断电 - 按住Reset不放 - 通电,等待大约5秒,指示灯有规律闪烁即可。使用 Breed 刷机
- 在 Breed 页面中,先备份所有的数据,
固件备份
选项里能点的都点一下; - 在
小米 R3G 设置
中,找到并删除normal_firmware_md5
这个键值,因为刷新刷的固件 md5 值与原来的不一致会导致无法开机; - 在
环境变量编辑
中,添加一个环境变量,变量名为xiaomi.r3g.bootfw
,值为2
。这个操作的解释如下:
breed的启动流程如下:
a. 如果 kernel0 存在,那么启动 kernel0
b. 如果 kernel0 不存在,kernel1 存在,那么启动 kernel1
c. 如果 kernel0 和 kernel1 都存在,则检查环境变量 xiaomi.r3g.bootfw 的值,如果存在且值为2,那么启动 kernel1,否则启动 kernel0 - 在
固件更新
中的固件
后,上传需要刷入的固件(只能是单一固件),确定后点击更新,完成刷机; - 根据不同的固件类型,登录路由器的管理页面地址也有不同,目前已知:
a. padavan: http://192.168.123.1 admin/admin
b. 华硕:
- 在 Breed 页面中,先备份所有的数据,
ssh 刷入原生 OpenWrt
如果你觉得三方的固件集成东西太多,也可以自己手动刷入原生的 OpenWrt,我就是这是干的。- 使用breed 刷入官方的开发版固件;
将上面准备的2个OpenWrt文件上传到 /tmp 目录下,执行下面的命令写入固件:
mtd write openwrt-ramips-mt7621-mir3g-squashfs-kernel1.bin kernel1 mtd write openwrt-ramips-mt7621-mir3g-squashfs-rootfs0.bin rootfs0 reboot
也许你在其它地方看见还有下面这条:
mtd write openwrt-ramips-mt7621-mir3g-squashfs-kernel1.bin kernel0
即将同一个 OpenWrt kernel 固件刷写到 kernel0 和 kernel1 上,这样也可以避免 Breed 启动到了 kernel0 上别的固件里面去了;
但是我们设置了环境变量 xiaomi.r3g.bootfw 为 2, 就没必要多刷一个 kernel0 了。- 重启成功就可以进入管理页面了,OpenWrt 为:http://192.168.1.1,初始账户密码为空,需要设置;
从 OpenWrt Breed 适配版刷回官方ROM
在 breed 恢复界面中,选择官方的开发版ROM上传并刷入即可;
使用 privoxy 将 socks5转换为http
这里遇到了一个坑,使用了 openert privoxy 插件生成的配置不能访问国外网站,但国内的可以,很奇怪;
已知 privoxy 3.0.22 版本以后默认使用了新的配置文件路径和格式,但还是没能用新的方式使用代理google,因此改为老的方式,后面又根据老的方式修改了新的方式,现在两种配置文件都可用。
- 旧的配置文件
confdir /etc/privoxy
logdir /var/log
filterfile default.filter
logfile privoxy.log
actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.
actionsfile default.action # Main actions file
listen-address 192.168.100.1:9446
forward-socks5 / 192.168.100.1:9440 .
toggle 0
enable-remote-toggle 1
enable-remote-http-toggle 0
enable-edit-actions 1
enforce-blocks 0
buffer-limit 4096
forwarded-connect-retries 0
accept-intercepted-requests 0
allow-cgi-request-crunching 0
split-large-forms 0
keep-alive-timeout 300
socket-timeout 300
permit-access 192.168.0.0/16
debug 1 # show each GET/POST/CONNECT request
debug 4096 # or Startup banner and warnings
debug 8192 # or Errors - *we highly recommended enabling this*
- 新的配置文件
config system 'system'
option boot_delay '10'
config privoxy 'privoxy'
option confdir '/etc/privoxy'
option logdir '/var/log'
option logfile 'privoxy.log'
list filterfile 'default.filter'
list actionsfile 'match-all.action'
list actionsfile 'default.action'
list forward_socks5 '/ 192.168.100.1:9440 .'
list listen_address '192.168.100.1:9446'
list permit_access '192.168.0.0/16'
option toggle '0'
option enable_remote_toggle '1'
option enable_remote_http_toggle '0'
option enable_edit_actions '1'
option enforce_blocks '0'
option buffer_limit '4096'
option forwarded_connect_retries '0'
option accept_intercepted_requests '0'
option allow_cgi_request_crunching '0'
option split_large_forms '0'
option keep_alive_timeout '300'
option socket_timeout '300'
option debug_1 '0'
option debug_512 '1'
option debug_1024 '0'
option debug_4096 '1'
option debug_8192 '1'
两者的差异化:
- 新配置文件使用 privoxy 插件生成,短横线改成了下划线;
- 转发配置由
forward_socks5 '192.168.100.1:9440
改为forward_socks5 '/ 192.168.100.1:9440 .'
参考文档
- https://www.imemm.com/index.p...
- https://beyondkmp.com/post/xi...
- https://www.right.com.cn/foru...
- https://blog.csdn.net/weixin_...
在小米路由器开发版固件上安装 ss
本部分为续集。
起因是发现将路由器刷机到OpenWrt 后,网络测速变慢了,200M的网怎么测速都只有 100M 左右,但是记得刚开始用小米自身固件时可以达到200M的,于是又想刷回官方开发版。
同时,在路由器上使用 ss 的功能还是要保留,于是就有了后续在 小米固件上安装 ss 的经历。
- 安装 opkg
mkdir -p /userdisk/xxx/opt
mount -o bind /userdisk/xxx/opt /opt
cd /userdisk/xxx
wget http://pkg.entware.net/binaries/mipsel/installer/installer.sh
chmod +x installer.sh
# 如果安装较慢的话,建议手动下载里面的文件到对应的目录
./installer.sh
- 安装软件
export PATH=/opt/sbin:/opt/bin:$PATH
# 这里如果下载较慢,可以手动下载并使用 opkg install 文件名 进行安装
opkg update
opkg install shadowsocks-libev-config shadowsocks-libev-ss-local
# 安装 socks5 转 http 工具,因为有些软件只支持 http 代理
opkg install privoxy vim
# 修改配置文件并启动服务
/opt/bin/vim /opt/etc/shadowsocks.json
/opt/bin/vim /opt/etc/privoxy/config
/opt/etc/init.d/S22shadowsocks start
/opt/etc/init.d/S24privoxy start
- 环境变量及开机启动
/opt/bin/vim /etc/profile
export PATH=/opt/sbin:/opt/bin:$PATH
/opt/bin/vim /etc/rc.local
/opt/etc/init.d/S22shadowsocks start
/opt/etc/init.d/S24privoxy start
mount -o bind /userdisk/xxx/opt /opt
此部分完全参考:https://www.jianshu.com/p/09c...
已留言感谢。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。