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

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

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



前言

在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.com/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大神。相关连接:

下面开始我们的正菜。

  1. 从Breed BootLoader官方下载页下载breed固件包,一个bin文件,小米路由器3G v1对应的固件下载地址:https://breed.hackpascal.net/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.org 替换为 mirrors.tuna.tsinghua.edu.cn/openwrt 即可。
  • 自动替换
    执行如下命令自动替换
    sed -i 's_downloads.openwrt.org_mirrors.tuna.tsinghua.edu.cn/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.com/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.com;如果需要将顶级域名进行解析则直接填写顶级域名,如baidu.com域名字段填写需要DDNS解析到的二级域名,如前述的blog.baidu.com;如果是顶级域名则写成@baidu.com这种形式
  • 第三步:使用HTTPS可以勾选或者不勾选,不影响结果。CA 证书路径字段可以为空。
  • 第四步:切换到高级设置标签,根据路由器是否配置了wan接口,选择使用相应的方式获取路由器公网IP地址来源。本例中,路由器位于内网中,切未配置wan口,所以需要选择用URL方式获取公网IP。默认提供了一个用于监测的URL,可以直接使用,如果不用这个,也可以使用其他的,比如:http://ddns.oray.com/checkip 或者 http://www.3322.net/dyndns/getip等等。另外DNS服务器字段建议填一个靠谱的。

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

参考链接:
https://www.sgtfz.cn/2020/07/2651.html
http://blog.zivers.com/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文件,点这里注意版本
下载后,进入系统->备份/升级: 刷写新的固件,然后点击升级即可。


总结

以上。本文会偶尔更新。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ARM微控制器和嵌入式系统是两个密切相关的概念。ARM微控制器是一种基于ARM架构的微处理器,常用于嵌入式系统中。嵌入式系统是一种被嵌入在其他设备中的计算机系统,用于控制和管理该设备的各种功能。 ARM微控制器是一种非常常见的微处理器架构,具有低功耗、高性能和高可靠性的特点。它被广泛用于各种嵌入式应用中,比如智能手机、平板电脑、家用电器等。ARM架构具有良好的兼容性,可以支持不同的软件开发工具和操作系统,如Android、Linux等。 嵌入式系统是一种专门设计用于控制和管理设备的计算机系统。它通常由硬件和软件两部分组成,硬件部分包括处理器、存储器、输入输出接口等,软件部分包括操作系统和应用程序。嵌入式系统通常需要满足一些特定需求,如实时性、低功耗、小体积等。 在嵌入式系统中,ARM微控制器被广泛应用。它具有丰富的外围接口和强大的计算能力,可以满足各种设备的控制和管理需求。ARM微控制器的软硬件资源丰富,可供开发人员进行灵活的开发和定制。同时,ARM的生态系统也非常完善,有各种开发工具和支持资源可供选择。 清华MOOC是清华大学开设的在线教育平台,其中也有关于ARM微控制器和嵌入式系统的相关课程。通过学习清华MOOC中的课程,可以深入了解ARM微控制器和嵌入式系统的原理和应用,掌握相应的开发技能。这对于希望从事嵌入式系统开发的人而言,是一种很好的学习资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值