小米路由器R2D资料收集

小米路由器ssh开启

开启ssh访问,小米路由器需升级到开发版0.5.28及以上,小米路由器mini需升级到开发版0.3.84及以上。注意:稳定版不支持。

#1.1 烧写开发板 #1.1.1 网址:ROM 2.0 开发版 下载:http://bigota.miwifi.com/xiaoqiang/rom/r2d/brcm4709_r2d_all_6c01b_2.11.67.bin

#1.1.2 烧写: U盘刷机步骤: #1、准备一个系统格式为FAT或FAT32的U盘; #2、到小米路由器的官网miwifi.com下载用来进行刷机的ROM包; 重要的事情再说三遍:U盘刷机会清空硬盘上的数据!会清空硬盘上的数据!!会清空硬盘上的数据!!! #3、将下载好的ROM包放到U盘的根目录下,并命名为“miwifi.bin”; #4、对于指示灯为红色闪烁或者红色常亮的情况,直接将U盘插入路由器的USB接口,用细长的工具按住reset,待路由器指示灯变为黄灯闪烁时,松开reset;对于指示灯为其他状态的情况,需要先断开路由器的电源后,将U盘插入路由器的USB接口,用细长的工具按住reset,接通电源,待路由器指示灯变为黄灯闪烁时,松开reset #5、大约3-5分钟后,指示灯变成黄色常亮状态时可以拔掉U盘,此时刷机已经完成正在重启,稍等片刻路由器指示灯变蓝就可以正常使用了。 如果在刷机过程中,指示灯黄灯闪烁几秒后变为黄灯常亮状态,说明此次U盘刷机过程失败,请检查以上的刷机过程并重新进行刷机操作。 #1.1.3 总结:

#1.2 烧写ssh #1.2.1 网址:MiWiFi开放平台 #1.2.2 下载:https://d.miwifi.com/rom/ssh #1.2.3 烧写: 工具包使用方法:小米路由器需升级到开发版0.5.28及以上,小米路由器mini需升级到开发版0.3.84及以上。注意:稳定版不支持。

#1.2.4 总结: 下载rom 拷贝到u盘 路由器断电、插入u盘(fat32格式) 按住reset上电 等待黄灯闪烁,松开reset 一直等待,直至蓝灯。 #1.3 访问文件系统权限 开启ssh后无法获得系统文件夹写入权限,只能读写外接硬盘的内容。这对有时候系统级别的配置不太方便。

这主要是因为挂载的时候,以只读方式挂载了相应的目录,执行下述命令即可:

$mount -o remount -rw /

#2 小米路由器防火墙配置 #2.1 开启端口 使用WinSCP软件进入192.168.31.1 端口22,用户名 root 密码 admin 文件协议改为SCP进入,进入后打开/etc/config/firewall 这个文件的尾部增加:

0@@

保存后,SSH到路由的22端口执行 /etc/init.d/firewall restart 重启防火墙。 参考:小米路由器防火墙开启端口,让外部网络访问你的小米路由

#2.2 端口转发 修改 /etc/config/firewall

1@@

重启防火墙 /etc/init.d/firewall restart

参考 小米路由器mini如何设置外网访问ssh

#2.3 禁用端口 默认端口不对外开放。

#3 使用opkg在小米路由器软件管理 小米路由器系统是openwrt系统,该系统基于linux,使用 opkg 工具实现软件管理,该工具类似ubuntu中的 apt-get 或者centeros 中的 yum 工具。

目前的现状其实是:找不到适合xiaomi路由器架构的合适的软件源,通过openwrt的所有软件源中相应交叉工具链的信息,发现很难找到和小米路由器相符的软件。这样的结果是,即使使用某一个软件源,强行配置将对应软件安装到小米路由器中,也无法运行。 最稳妥的方式还是使用小米路由器提供的交叉编译工具链,通过源代码交叉编译要使用的软件包,这需要一些专业技术(例如如何通过autotools 配置交叉编译选项等等), 所以对于小米路由器,普通用户其实也很难自由的安装所需软件。下面给出的信息,也算为遇到相关问题的同仁提供一个参考。

使用opkg管理软件的大致方式如下

#3.1 配置软件源地址 配置文件为 /etc/opkg.conf, 下面是一个配置文件完整的例子:

2@@

这里的含义不言而喻,最关键的还是最开始列出的地址信息,指明了软件源中所包括的软件从哪里下载。这里为 http://downloads.openwrt.org/attitude_adjustment/12.09/brcm47xx/generic/packages 。其它为安装时的路径和架构信息,用到之时自然会明白。

#3.2 用opkg在小米路由器(openwrt)上进行软件管理 opkg 使用方法类似 ubuntu下的 apt-get, 具体如下:

更新软件源 当我们修改软件元配置文件 /etc/opkg.conf 中的软件源信息之后,需要更新本地软件源索引,才能继续后面的使用。命令如下:

#opkg update 查看当前系统支持安装的架构

$opkg print-architecture 只有符合这里列出的架构的软件包,才能被安装。

直接下载 *.ipk 安装 我们可以直接下载相应的 *.ipk 文件进行安装, 例如安装screen

$wget -c http://downloads.openwrt.org/attitude_adjustment/12.09/brcm47xx/generic/packages/screen_4.0.3-3_brcm47xx.ipk #opkg install screen_4.2.1-2_ralink.ipk 这里, ipk 文件的地址,通过软件源配置文件可以猜到。

通过软件源配置文件中的软件源库进行安装 配置好软件源库,并且更新后,不用将 .ipk 文件下载,直接可以如下安装:

3@@

安装之后,工具会在 /data/usr/ 相关的子目录中。

查找软件源库中是否存在某软件 假设我们查找是否存在包含 screen 字样的软件,可如下:

4@@

#3.3 软件管理中遇到的问题 #3.3.1 找不到软件,则需更换软件源 我们想安装某软件之前,只需找到包含该软件的相应软件源地址后,填入 opkg.conf 中即可,例如你可能会找到如下的源:

5@@

使用其中一个即可。软件源中实际的软件包文件都是*.ipk格式,是事先用交叉编译方式编译好的二进制程序。

#3.3.2 无法安装,则需配置架构信息 如果无法安装,可能是由于架构不匹配导致,需要通过命令 opkg print-architecture 查看当前系统支持的架构,再根据被安装的安装包名称,确定需支持的架构。

如果当前系统不支持被安装软件包所需支持的架构,那么则修改/etc/opkg.conf 添加类似如下:

6@@

这里安装的软件包为 screen_4.0.3-3_brcm47xx.ipk, 通过名字可知其架构为 brcm47xx; 而添加的 arch brcm47xx 与该软件包的架构匹配。 添加之后,所以即可安装成功。

注意: 安装成功不代表可以成功运行,参见后面。

修改 /etc/opkg.conf 的操作会修改 opkg print-architecture 默认配置。根据列出的结果,依次按照优先级匹配相应的内容。

#3.3.3 安装成功,无法运行,需要更换二进制文件,使之支持当前路由器 cpu 架构 前面配置好架构之后虽然能够安装软件,但是不一定能够运行。这里仍以 screen 为例,如果仍然无法运行 screen 。则需要确认一下其二进制文件中的cpu架构信息。

将安装好的二进制文件 screen, 以及小米路由器上可运行的原生的 busybox 二进制文件拷贝到linux上,用 file 查看其架构是否一样。 这里如下,

screen 中的架构信息为:

$file screen screen: ELF 32-bit LSB executable, MIPS, MIPS32 version 1, dynamically linked (uses shared libs), corrupted section header size 而 busybox 中的架构信息为:

busybox: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped 可见 screen 无法运行,是由于实际cpu架构不一致问题(注意,这里的架构不是前面配置的架构,而是运行所需的实际架构),导致无法运行。

解决方法有二: 直接用小米官网上提供的小米路由器对应的交叉编译工具链,结合相应软件(screen)源代码,编译出一个可执行的程序。 在openwrt相关软件源网站中,寻找能够和当前主机架构一致(或最接近)的架构的软件源。 寻找匹配架构的软件源 这里不讲交叉编译的方法(事实上交叉编译的方法各个软件各不相同)。讲述当软件无法运行之时,如何找到可以运行的软件。 首先,需要确定当前小米路由器上的 busybox 支持的cpu架构。 如前所述,通过 file 命令,可以看到是 ARM, version 1 (SYSV),… 。只有二进制文件中的信息和此相一致之时,才可能运行得起来。 其次,确认配置文件中,软件源中软件所支持的cpu架构。 当然,我们可以先配置好架构信息,将软件安装上,然后类似前面,通过 file 命令查看相应的软件程序所支持的架构。但是这样做,太麻烦了,每检查一个软件源,就需要安装该源的软件,并且查看。其实有更简单的方法。

我们前面配置中使用的是如下软件源: src/gz attitude_adjustment http://downloads.openwrt.org/attitude_adjustment/12.09/brcm47xx/generic/packages, 所以到 http://downloads.openwrt.org/attitude_adjustment/12.09/brcm47xx/generic/ 中,看到如下类似的链接:

7@@

这里,注意 xxxToolchainxxx, 由此可知,之前软件源配置中指定的软件源是mipsel相关的架构(这也和前面我们通过file命令中看到的结果一致),和我们的arm不一致。

用类似的方法可以找到合适的架构,比如我们看到 http://downloads.openwrt.org/attitude_adjustment/12.09/omap4/generic/ 中的信息:

OpenWrt-Toolchain-omap4-for-arm_v7-a-gcc-4.6-linaro_uClibc-0.9.33.2_eabi.tar.bz2 发现这个软件源采用的arm架构,大致上和我们小米路由器上显示的 busybox 的架构更为接近,所以这个软件源中的软件可能会在小米路由器上运行起来。当然这里只是一个例子,还需实践一下(重新配置软件源、添加omap4的架构配置、更新软件源、安装软件、运行),才能确定。

#3.4 参考资料 关于软件源的问题参考

http://www.right.com.cn/FORUM/thread-158625-1-1.html

http://bbs.xiaomi.cn/t-9915018

关于适用与openwrt系统的已有软件源网址,可到如下网站结合自己机器实际情况比对寻找:

https://wiki.openwrt.org/doc/techref/opkg

http://downloads.openwrt.org/snapshots/trunk/bcm53xx/generic/packages/packages

http://downloads.openwrt.org.cn/PandoraBox/ralink/packages/packages/

http://downloads.openwrt.org/attitude_adjustment/12.09/brcm47xx/generic/packages/

https://downloads.openwrt.org/chaos_calmer/15.05.1/bcm53xx/generic/packages/

关于配置软件架构参考

https://wiki.openwrt.org/doc/techref/opkg Adjust Architecturesn 部分的内容。

关于安装最新ipk包提示postinst出错解决方法参见

http://www.ddhow.com/blog/postinst.html https://vaqeteart.github.io/categories/study/linux/misc/xiaomi_router_tips.html=