admin 管理员组

文章数量: 887021

嵌入式系统之-小米路由器3G v1

相关汇总:嵌入式系统系列目录
第一篇 嵌入式系统之-小米路由器3G V1
第二篇 …
未完待续,欢迎收藏关注。


目录

  • 嵌入式系统之-小米路由器3G v1
  • 前言
  • 一、开箱和拆机
  • 二、硬件配置
  • 三、开启ssh
    • 3.1 升级到开发版ROM
      • 3.1.1 下载ROM
      • a. web管理端手动更新固件
      • b. U盘更新固件
    • 3.2 刷入ssh解锁包
    • 3.3 修改root密码及开启密钥登录
  • 四、重写Bootloader
    • 4.1 安装breed BootLoader
  • 五、刷入OpenWrt系统
  • 六、配置OpenWrt系统
    • 6.1 配置opkg镜像
    • 6.2 配置luci管理界面语言
    • 6.2 配置ddns服务
      • 6.2.1 安装ddns脚本包和luci界面包
      • 6.2.2 安装ddns-scripts_aliyun_1.0.0-1_all.ipk
      • 6.2.3 启用阿里云DDNS解析
    • 6.3 配置frp服务
  • 七、升级OpenWrt系统
  • 总结


前言

在2016年末入手了1台小米路由器3(至今健在,还能正常使用),入手之后发现可玩性比以前的传统路由器高了非常多,然后就开始了路由器折腾之路,一发不可收拾。19年又淘了一个二手的小米路由器3G V1,也进行了一通折腾,拖拖拉拉现在才来写这篇文章记录一下折腾的过程。主要包括解锁ssh,写入breed Bootloader,刷入OpenWrt系统,升级OpenWrt,进行相关配置等等。


提示:本篇文章算是处女作,下面的代码和方案仅供参考,搞机请注意安全。

一、开箱和拆机

这部分略过,这里放几个其他大神的开箱图和拆机图,有兴趣的可以去翻翻。

  1. 小米路由器3G开箱评测 有一些基本的测试
  2. 低调的新品,小米路由器3g开箱及【全网首拆】以及翻车撒花
  3. 拆个小米路由3G(R3G) 需要登录才能看大图

总体上外观中规中矩,内部设计也算对得起它的价格,家庭使用基本够用。


二、硬件配置

这里简单罗列一些主要部件的配置:

  • SoC:MediaTek MT7621AT, 880MHz, 双核
  • Flash:128MB
  • RAM:256MB
  • 以太网口:千兆口 x 3(1个WAN口与2个LAN口)
  • WLAN芯片:MediaTek MT7603EN, MediaTek MT7612EN
  • 2.4G:b/g/n
  • 5G:a/n/ac
  • USB:3.0 x 1

硬件详情可查阅OpenWrt上的toh mir3g详情
硬件技术数据可查阅OpenWrt上的techdata mir3g技术规格


三、开启ssh

3.1 升级到开发版ROM

3.1.1 下载ROM

官方ROM下载首页:小米路由器ROM
小米路由器3G 开发版ROM 版本2.25.124(2018年10月30日更新)
下载后将ROM文件存放到文件系统格式为FAT或FAT32的U盘中。按照以下两种方式之一,将路由器升级到开发版。

a. web管理端手动更新固件

插上U盘,路由器上电启动后,使用电脑连接到路由器,使用管理密码(第一次上电初始化的时候设置的,如果忘记,请重置路由器),进入 常用设置->系统状态:升级检测 界面,选择系统升级,然后选择ROM进行手动升级,等重启完成后即可。

b. U盘更新固件

  1. 将3.1.1步骤中下载好的ROM包放到U盘的根目录下,并命名为“miwifi.bin”。
  2. 断开路由器电源,插入U盘,用细长工具按住reset,接通电源,待路由器指示灯变为黄灯闪烁时,松开reset。
  3. 大约3-5分钟后,指示灯变成黄色常亮状态时刷机已经完成正在重启,稍等片刻路由器指示灯变蓝就可以正常使用了。

如果在刷机过程中,指示灯黄灯闪烁几秒后变为黄灯常亮状态,说明此次U盘刷机过程失败,请检查以上的刷机过程并重新进行刷机操作。附指示灯说明:

  • 蓝灯:正常运行(长亮)
  • 黄灯:系统升级中(闪烁),系统启动中(长亮)
  • 红灯:安全模式(闪烁),系统故障(长亮)

3.2 刷入ssh解锁包

刷完开发版ROM后,先确定路由器是否可以正常工作,然后按下列步骤开启SSH管理功能,这样我们就能像操作Linux一样操作路由器了。

  1. 先用小米账户绑定路由器(通过手机客户端“小米WiFi”操作),如果已经绑定则跳过。
  2. 到https://d.miwifi/rom/ssh下载SSH工具包,同时记下你的root密码。
  3. 将下载的工具包bin文件复制到U盘(FAT或FAT32格式)根目录下,保证文件名为miwifi_ssh.bin。
  4. 断开小米路由器的电源,将U盘插入USB接口。
  5. 按住reset按钮之后重新接入电源,指示灯变为黄色闪烁状态即可松开reset键。
  6. 等待3-5秒后安装完成之后,小米路由器会自动重启,指示灯变为蓝色即正常运行,之后您就可以尽情折腾啦 😃 。
  7. ssh root@192.168.31.1即可登录到路由器上。密码是前面下载SSH包时记下的密码,如果不出意外,将顺利登录路由器,显示“Welcome to XiaoQiang”和“ARE YOU OK”,这时我们就可以给路由器安装想要的软件了。

3.3 修改root密码及开启密钥登录

  1. 以root用户登录后,在命令行输入passwd,按照提示即可重设root账户的密码,密码可以为空。一定要牢记。否则会很麻烦。

  2. 用密钥登录,需要先生成密钥对,可以使用ssh-keygen或其他工具软件。密钥对生成后,将其导入到/etc/dropbear/authorized_keys文件中。具体操作可以参考如下代码:

    scp ./id_rsa.pub root@192.168.31.1:/home/ #将公钥复制到路由器的/home目录
    ssh root@192.168.31.1 #ssh登录路由器
    cat /home/id_rsa.pub >>/etc/dropbear/authorized_keys #将公钥追加写入到authorized_keys文件
    /etc/init.d/dropbear restart
    

到这里路由器原生系统相关的操作就告一段落了,下一步就要开始激动人心的时刻了。😃


四、重写Bootloader

路由器原生系统使用U-boot作为BootLoader,U-boot是德国大神弄的一个非常强大的BootLoader,在不少嵌入式系统中都有应用。但是为了发扬生命不息,折腾不止的精神,本文使用hackpascal大神的breed作为Bootloader,具体操作过程如下。目前也有很多其他的BootLoader,如opboot等,各有其优缺点,在此不一一评述。

4.1 安装breed BootLoader

喝水不忘挖井人,在此先膜拜一下hackpascal大神。相关连接:

  • 在恩山无线论坛的主页:https://www.right/forum/space-uid-200302.html
  • 个人主页:https://www.hackpascal/
  • 恩山论坛上Breed开发blog:https://www.right/forum/forum.php?mod=viewthread&tid=161906
  • Breed BootLoader官方下载页:https://breed.hackpascal/

下面开始我们的正菜。

  1. 从Breed BootLoader官方下载页下载breed固件包,一个bin文件,小米路由器3G v1对应的固件下载地址:https://breed.hackpascal/breed-mt7621-xiaomi-r3g.bin
  2. 然后将文件重命名为breed.bin后,上传到小米路由器,可以使用U盘或者使用SCP上传,上传到/tmp目录下。
  3. ssh登录到小米路由器,使用cat /proc/mtd 查看系统的固件和分区布局,然后开始将breed写入到BootLoader区 mtd -r write /tmp/breed.bin Bootloader
  4. 刷入后,机器会自动重新启动,默认会进入原来的小米路由器固件。
  5. 如果按住reset键开机,等到路由指示灯闪烁时,松开reset键,然后浏览器中输入192.168.1.1即可进入breed web恢复控制台。
  6. 进入breed web恢复控制台,备份原有系统的所有信息。
  7. 重启路由器,回到原来的小米路由器固件,然后ssh登陆准备刷入openwrt。

五、刷入OpenWrt系统

目前OpenWrt中已经上线了小米路由器3G v1的稳定版(release),点这里。
如果喜欢尝鲜可以试试开发版(snapshot),也是点这里。

在这里我们刷入稳定版,具体操作过程如下:

  1. 下载稳定版的固件包 注意版本
    openwrt-19.07.4-ramips-mt7621-xiaomi_mir3g-squashfs-kernel1.bin
    openwrt-19.07.4-ramips-mt7621-xiaomi_mir3g-squashfs-rootfs0.bin
    下载完成后,使用scp或者U盘,将这两个文件复制到路由器的/tmp目录。

  2. 将固件写入系统,ssh登录到小米路由器

    cd /tmp
    mtd write openwrt-19.07.4-ramips-mt7621-xiaomi_mir3g-squashfs-kernel1.bin kernel0
    mtd write openwrt-19.07.4-ramips-mt7621-xiaomi_mir3g-squashfs-kernel1.bin kernel1
    mtd write openwrt-19.07.4-ramips-mt7621-xiaomi_mir3g-squashfs-rootfs0.bin rootfs0
    reboot
    
  3. 重新启动后,ssh登录路由器,按照前面所述重新设置root密码。

至此,openwrt系统安装完毕。


六、配置OpenWrt系统

6.1 配置opkg镜像

镜像由清华大学开源软件镜像站管理。
镜像首页:OpenWrt OPKG Mirror
镜像使用帮助:镜像配置帮助

  • 手工替换
    登录到路由器,并编辑 /etc/opkg/distfeeds.conf 文件,将其中的downloads.openwrt 替换为 mirrors.tuna.tsinghua.edu/openwrt 即可。
  • 自动替换
    执行如下命令自动替换
    sed -i 's_downloads.openwrt_mirrors.tuna.tsinghua.edu/openwrt_' /etc/opkg/distfeeds.conf
    opkg update
    

6.2 配置luci管理界面语言

进入系统->系统:语言和界面,选择中文,如果选择中文后界面依然为英文,则需要手动安装中文语言包。

  • 命令行安装,ssh登录到路由器

    opkg install luci-i18n-base-zh-cn
    
  • luci web界面安装
    进入系统-软件,首先更新软件列表,然后在filter中输入luci-i18n-base-zh-cn,然后在出来的结果中,点击 安装 即可。

6.2 配置ddns服务

6.2.1 安装ddns脚本包和luci界面包

opkg install ddns-scripts luci-app-ddns luci-i18n-ddns-zh-cn

6.2.2 安装ddns-scripts_aliyun_1.0.0-1_all.ipk

众所周知,OpenWrt自带的DDNS并不支持阿里云的动态DNS解析服务。这里使用sensel大神做的一个脚本来实现阿里云DDNS解析。

项目介绍:
论坛主页:适用于OpenWRT/LEDE自带DDNS功能的阿里云脚本,完美嵌入
Github主页:https://github/sensec/ddns-scripts_aliyun

从github下载ddns-scripts_aliyun_1.0.0-1_all.ipk包,然后执行 opkg install ddns-scripts_aliyun_1.0.0-1_all.ipk 即可安装成功。

6.2.3 启用阿里云DDNS解析

  • 第一步:准备好阿里云accesskey
  • 第二步:在 服务->动态DNS 界面进行详细配置。注意查询主机名字段需要填写你要设置的二级域名,如blog.baidu;如果需要将顶级域名进行解析则直接填写顶级域名,如baidu域名字段填写需要DDNS解析到的二级域名,如前述的blog.baidu;如果是顶级域名则写成@baidu这种形式
  • 第三步:使用HTTPS可以勾选或者不勾选,不影响结果。CA 证书路径字段可以为空。
  • 第四步:切换到高级设置标签,根据路由器是否配置了wan接口,选择使用相应的方式获取路由器公网IP地址来源。本例中,路由器位于内网中,切未配置wan口,所以需要选择用URL方式获取公网IP。默认提供了一个用于监测的URL,可以直接使用,如果不用这个,也可以使用其他的,比如:http://ddns.oray/checkip 或者 http://www.3322/dyndns/getip等等。另外DNS服务器字段建议填一个靠谱的。

配置完成后,保存并应用,回到 服务->动态DNS 界面,启动即可。另外检查一下 系统->启动项 里面是否有ddns,处于启用并启动状态即可。

参考链接:
https://www.sgtfz/2020/07/2651.html
http://blog.zivers/post/2338.html

至此相关的配置告一段落,更多玩法自己去慢慢发现吧。


6.3 配置frp服务

在我之前的一篇博客中对frp进行了一些基本的介绍,frp服务配置及应用。
这里强调一点关于SoC架构和CPU类型方面的暗坑。根据以下指令获取CPU及系统信息:

cat  /proc/cpuinfo
uname -a

对应的输出(截取)

root@OpenWrt:~#cat  /proc/cpuinfo
system type             : MediaTek MT7621 ver:1 eco:3
machine                 : Xiaomi Mi Router 3G
processor               : 0
cpu model               : MIPS 1004Kc V2.15
BogoMIPS                : 584.90
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 32
extra interrupt vector  : yes
hardware watchpoint     : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa                     : mips1 mips2 mips32r1 mips32r2
ASEs implemented        : mips16 dsp mt
Options implemented     : tlb 4kex 4k_cache prefetch mcheck ejtag llsc pindexed_dcache userlocal vint perf_cntr_intr_bit cdmm nan_legacy nan_2008 perf
shadow register sets    : 1
kscratch registers      : 0
package                 : 0
core                    : 0
VPE                     : 0
VCED exceptions         : not available
VCEI exceptions         : not available
root@OpenWrt:~#uname -a
Linux OpenWrt 4.14.195 #0 SMP Sun Sep 6 16:19:39 2020 mips GNU/Linux

以上信息中所看到的与cpu相关的描述都是mips字眼,但均无法提供CPU位数,大小端格式等准确有效的信息。
实际上小米路由器3G V1 使用的CPU是联发科的MT7621AT,属于32位 mips小端little endian架构
同样小米路由器3 使用的CPU为联发科的MT7620A,也属于32位 mips小端little endian架构
故应选择上应选择 frp_VERSION_linux_mipsle.tar.gz 程序包。

具体安装,配置,应用按照本节开头的文章操作即可。这里不再赘述。

开机启动frp服务,可以在 系统->启动项-本地启动脚本 界面设置/etc/rc.local 中的启动脚本,也可以直接编辑该文件。

#启动frpc
/root/frp_0.34.1_linux_mipsle/frps -c /root/frp_0.34.1_linux_mipsle/frps.ini >/dev/null 2>&1
exit 0

七、升级OpenWrt系统

从OpenWrt下载sysupgrade文件,点这里。 注意版本
下载后,进入系统->备份/升级: 刷写新的固件,然后点击升级即可。


总结

以上。本文会偶尔更新。

本文标签: 小米 路由器 嵌入式系统