小米路由器3 终极折腾指南

您所在的位置:网站首页 小米路由器版本过低怎么升级 小米路由器3 终极折腾指南

小米路由器3 终极折腾指南

2024-05-19 16:15:57| 来源: 网络整理| 查看: 265

小米路由器3(R3/MI3),终极折腾指南

小米路由器3(R3/MI3),终极折腾指南提醒

刷机有风险,搞机需谨慎,本人不对造成的任何后果负责。

本文默认你有 Linux 以及网络相关的基础知识,比如一些文件上传、路径问题、SSH 如何连接、用什么软件连接、用什么软件搭建 TFTP 服务器、网络配置等,动手之前请先多了解清楚每条命令的作用,很多细节是省略的,请勿直接动手就跟着敲,最后因为文件没上传、路径和我的不一样等问题导致各种悲剧甚至变砖。

文章可能有长,但是很详细,几乎是 R3 能折腾的所有东西了,虽然讲的是 R3,但原理上和其他型号的小米路由器大致通用,就当是学习了。

相关信息

硬件信息

名字 小米路由器3、Xiaomi Mi Router 3、R3、MI3 CPU 联发科 Ralink MT7620A 指令集 MIPS CPU 频率 MIPS 24KEc V5.0 @580 MHz Bootloader 小米定制版 UBoot 系统 小米定制版 Openwrt Flash 芯片 ESMT F59L1G81LA(也可能使用其他型号) Flash 大小 128 MiB NAND RAM 芯片 NT5TU64M16HG-AC RAM 大小 128 MiB DDR2 Wireless 1 SoC-integrated: MT7620A 2×2 MIMO 802.11b/g/n(2.4 GHz) Wireless 2 On-board chip: MT7612E 2×2 MIMO 802.11a/n/ac(5 GHz) Switch MT7620 built-in 10/100 switch w/vlan support USB USB2.0 x 1 串口 支持 (默认禁用状态) 网口 1 x WAN + 2 x LAN 速率 有线百兆,无线千兆

灯光信息

黄灯亮:Boot 启动中、系统启动中、复位键按下。 黄灯闪烁:系统刷机状态。(U 盘刷机,中途不要断电) 红灯亮:系统崩溃。 红灯闪烁:系统恢复模式。(插上U盘,按住复位键直到黄灯闪烁再放开,开始 U 盘刷机) 蓝灯亮:系统启动完成。 蓝灯闪烁:系统有新版本可更新。

管理信息

默认地址:192.168.31.1

默认账户:无

默认密码:首次登录设置

从官方固件刷任何固件之前

从官方固件刷任何固件之前,都先执行以下三步。

一、获取 SSH 权限

只有开发版固件才能开启 SSH,需要先下载开发版固件,然后重命名为 miwifi.bin 或 miwifi_ssh.bin,接着放到 FAT/FAT32 格式的 U 盘根目录并插入路由器,路由器开机时长按复位键 3~5 秒直到黄灯闪烁,便会自动刷入固件。

直接在 Web 管理后台页面也能刷入,但不知道什么原因,这样刷入开发版固件,SSH 不一定会开启

有三种方式获取 root 密码:

通过官方途径

地址:http://d.miwifi.com/rom/ssh

通过 sn 码计算得到

在路由后台主页查看 sn 码 然后 sn 码拼接上6d2df50a-250f-4a30-a5e6-d44fb0960aa0得到 x 对 x 进行 32 位小写 md5 计算得到 y 取 y 前 8 位就是 SSH 密码

通过低版本开发版固件漏洞

U 盘刷入 miwifi_r3_all_55ac7_2.11.20.bin 低版本开发版固件

登录后台,取得浏览器地址栏处的 stok 值

用你的 stok 值替换掉以下网址中的 ,然后在浏览器中逐条访问

Code1234567891011#修改 nvram 中的 ssh 配置#返回:{'msg':'未能连接到指定WiFi(Probe timeout)','code':1616} 代表成功http://192.168.31.1/cgi-bin/luci/;stok=/api/xqnetwork/set_wifi_ap?ssid=Xiaomi&encryption=NONE&enctype=NONE&channel=1%3Bnvram%20set%20ssh%5Fen%3D1%3B%20nvram%20commit#修改 dropbear 配置#返回:{'msg':'未能连接到指定WiFi(Probe timeout)','code':1616} 代表成功http://192.168.31.1/cgi-bin/luci/;stok=/api/xqnetwork/set_wifi_ap?ssid=Xiaomi&encryption=NONE&enctype=NONE&channel=1%3Bsed%20%2Di%20%22%3Ax%3AN%3As%2Fif%20%5C%5B%2E%2A%5C%3B%20then%5Cn%2E%2Areturn%200%5Cn%2E%2Afi%2F%23tb%2F%3Bb%20x%22%20%2Fetc%2Finit.d%2Fdropbear#启动 dropbear#返回:{'msg':'未能连接到指定WiFi(Probe timeout)','code':1616} 代表成功http://192.168.31.1/cgi-bin/luci/;stok=/api/xqnetwork/set_wifi_ap?ssid=Xiaomi&encryption=NONE&enctype=NONE&channel=1%3B%2Fetc%2Finit.d%2Fdropbear%20start

替换以下网址中的 为当前管理密码, 为新密码,此操作会同时重置 Web 密码和 root 密码

Code12#返回:{'code':0} 代表成功http://192.168.31.1/cgi-bin/luci/;stok=/api/xqsystem/set_name_password?oldPwd=&newPwd=

此时 SSH 已开启,账号为 root,密码新设置的密码

二、备份

登录 SSH,使用 cat /proc/mtd 命令,可以查看到官方固件的分区布局

shell12345678910111213141516#注意,显示的数值是十六进制的cat /proc/mtddev: size erasesize namemtd0: 08000000 00020000 "ALL"mtd1: 00040000 00020000 "Bootloader"mtd2: 00040000 00020000 "Config"mtd3: 00040000 00020000 "Bdata"mtd4: 00040000 00020000 "Factory"mtd5: 00040000 00020000 "crash"mtd6: 00040000 00020000 "crash_syslog"mtd7: 00080000 00020000 "reserved0"mtd8: 00400000 00020000 "kernel0"mtd9: 00400000 00020000 "kernel1"mtd10: 02000000 00020000 "rootfs0"mtd11: 02000000 00020000 "rootfs1"mtd12: 03600000 00020000 "overlay"

然后备份各个分区

shell1234567891011121314#一般备份到 U 盘,把 of= 后面的路径改成你的 U 盘挂载路径(df -h 命令可以查看 U 盘挂载路径)dd if=/dev/mtd0 of=/extdisks/sda1/mtd0.bindd if=/dev/mtd1 of=/extdisks/sda1/mtd1.bindd if=/dev/mtd2 of=/extdisks/sda1/mtd2.bindd if=/dev/mtd3 of=/extdisks/sda1/mtd3.bindd if=/dev/mtd4 of=/extdisks/sda1/mtd4.bindd if=/dev/mtd5 of=/extdisks/sda1/mtd5.bindd if=/dev/mtd6 of=/extdisks/sda1/mtd6.bindd if=/dev/mtd7 of=/extdisks/sda1/mtd7.bindd if=/dev/mtd8 of=/extdisks/sda1/mtd8.bindd if=/dev/mtd9 of=/extdisks/sda1/mtd9.bindd if=/dev/mtd10 of=/extdisks/sda1/mtd10.bindd if=/dev/mtd11 of=/extdisks/sda1/mtd11.bindd if=/dev/mtd12 of=/extdisks/sda1/mtd12.bin(我的这里有坏块(地址 0x6000000),无法完整备份) 三、开启 TTL

给自己留一条后路

shell123nvram set uart_en=1 #开启串口(通用异步收发传输器 Universal Asynchronous Receiver/Transmitter)nvram set boot_wait=on #开启引导时等待用户选择启动项nvram commit 四、刷 UBoot(可选)

如果你要刷 Padavan、X-wrt、Openwrt/Lede,那么你可以继续往下读。如果你要刷 PandoraBox,那可以忽略本节,因为 R3 的 PandoraBox 只支持 pb-boot 引导。

小米官方的 BootLoader 就是 Uboot,为什么还要刷入新的 Uboot 呢?原因是官方把 Uboot 环境变量保存到地址段是 0x00040000 到 0x00020000(Config 分区),同时这个分区也被作为官方固件的配置分区,比如保存一些 WIFI 名称、密码等。

在 TTL 的 Uboot 命令行接口界面使用 printenv、 setenv、printenv 这三个命令来分别查看、设置、保存 Uboot 环境变量,在 OpenWrt/Lede 及其衍生版固件中使用 fw_printenv、fw_setenv 来代替(没有保存命令,会自动保存)。

小米的官方固件(Openwrt 的定制版)却没有使用这两条命令,它使用的是和 Padavan 一样的 nvram 命令(Padavan 中使用这条命令来保存固件配置信息),所以你可能会误认为 Padavan 也支持修改 Uboot 环境变量,其实并不能。Padavan 的 nvram 命令把配置保存到地址段是 0x000001600000 到 0x000001680000(虽然名字也是 Config 分区),地址段不同, Uboot 读取不到 Padavan 设置的“环境变量”。

所以一旦刷入 Padavan 之后,将不能再使用 nvram 命令修改任何 UBoot 的环境变量,TTL 也就不能再开启。要想再开启 TTL 也可以,就是比较麻烦,Padavan 的 BootEnv 分区(0x000000040000 到 0x0000000c0000)对应官方固件的 Config 分区(0x000000040000 到 0x000000080000)+ Bdata 分区(0x000000080000 到 0x0000000c0000,该分区是备份分区,里面包含了形如 sn 码等一些重要数据备份)。官方固件的 Config 分区中只用到前面的 4096 字节,其中最前的 4 字节是 Little Endian CRC32 校验码。所以只需要把 Padavan 的 BootEnv 分区备份下来,手动更改里面的数据和校验码后使用 mtd 命令(Padavan 中使用 mtd_write)重新刷回即可开启。

修改版的 UBoot 无视环境变量,永久的开启了 TTL,所以 Padavan 推荐刷入,X-Wrt、Openwrt/Lede 就看你心情了,但刷入过程中一定不要断电,否则变砖。如果你有十足的把握开启了 TTL 且不会把环境变量分区玩坏,那你也可以不刷。

把修改版 UBoot.bin 放到 U 盘插入到路由器,并切换到 U 盘路径后:

shell123mtd write UBoot.bin Bootloadermtd verify UBoot.bin Bootloader #校验不通过就重新刷,千万不要断电或重启 从官方固件刷 Padavan分割固件

为了保留官方固件的恢复功能(原因请看“救砖(半砖)”小节),Padavan 把官方的 kernel0 保留了,固件从 kernel1 往后覆盖。从官方固件分区布局知道 kernel1 的大小是 00400000 字节,注意是十六进制,转换成十进制就是 4194304 字节(4MB),所以要把 Padavan 的 trx 格式固件分割成两个文件,part1 为 4MB,剩余 part2 大概 10MB 左右,把 part2 写到 32MB 的 rootfs0 是足够的。

把 Padavan 固件 MI-3_3.4.3.9-099_版本号.trx 放到 U 盘插入到路由器,并切换到 U 盘路径,使用以下命令分割:

shell123dd if=MI-3_3.4.3.9-099_版本号.trx bs=4194304 count=1 2> /dev/null | dd of=MI-3_3.4.3.9-099.trx.part1 2> /dev/nulldd if=MI-3_3.4.3.9-099_版本号.trx bs=4194304 skip=1 2> /dev/null | dd of=MI-3_3.4.3.9-099.trx.part2 2> /dev/null 刷到分区shell123456mtd write MI-3_3.4.3.9-099.trx.part1 kernel1mtd write MI-3_3.4.3.9-099.trx.part2 rootfs0#以下两条执不执行都可以,因为即使启动 kernel0,也会因为启动失败重新启动 kernel1nvram set flag_last_success=1 nvram commit 管理信息 默认地址:192.168.123.1 默认账号:admin 默认密码:admin 刷回官方

“将官方固件命名为 miwifi.bin 放到 FAT/FAT32 格式的 U 盘根目录,开机时长按路由器复位键,直到黄灯闪烁”。直接这么做,在 Padavan 中是没用的,因为该功能是小米 kernel0 的功能,你得先让 Uboot 引导保留的 kernel0。

从下文的“救砖(半砖)”小节可知,同时做到以下两点,就能刷回官方:

使得 UBoot 引导 kernel0,可以有以下方式

flag_try_sys1_failed、flag_try_sys2_failed 同时为 1 时,uboot 则会校验 kernel0 的 CRC32,如果 CRC32 正确就会引导 kernel0 flag_try_sys1_failed、flag_try_sys2_failed 不同时为 1 时,但 flag_last_success 为 0,就会引导 kernel0

使得 kernel0 进入恢复模式,可以有以下方式

U 盘已经插入且复位键被长按,就会进入恢复模式 flag_try_sys1_failed、flag_try_sys2_failed 同时为 1,红灯亮,提示你插入 U 盘并长按复位键直到黄灯闪烁,进入恢复模式

所以有以下方案:

把环境变量 flag_last_success 设为 0( flag_try_sys1_failed=1、flag_try_sys2_failed=1 不同时为 1 时)。

但 Padavan 没有命令能直接修改环境变量,需要手动把 Padavan 的 BootEnv 分区备份下来,然后手动修改这个字段值且重新计算 CRC32 后再刷回去。

重启会进入 kernel0,你需要提前插入 U 盘并按复位键直到黄灯闪烁,进入恢复模式。

把环境变量 flag_try_sys1_failed=1、flag_try_sys2_failed=1 同时设为 1。

但 Padavan 没有命令能直接修改环境变量,需要手动把 Padavan 的 BootEnv 分区备份下来,然后手动修改这两个字段值且重新计算 CRC32 后再刷回去。

重启会进入 kernel0,红灯亮,提示你插入 U 盘并长按复位键直到黄灯闪烁,进入恢复模式。

删除系统 2(Padavan)(推荐)

shell1mtd_write erase Firmware_Stub

系统 2 重启会失败,flag_try_sys2_failed 自动变为 1。

自动重启会进入 kernel0,此时系统 1 也会启动失败,flag_try_sys1_failed 自动变为 1。

再次自动重启会进入 kernel0,红灯亮,提示你插入 U 盘并长按复位键直到黄灯闪烁,进入恢复模式。

从官方固件刷 X-Wrt文件说明

X-Wrt 官网提供了以下五个文件下载:

Code1234567x-wrt-版本号-ramips-mt7620-xiaomi_miwifi-r3-squashfs-breed-factory.binx-wrt-版本号-ramips-mt7620-xiaomi_miwifi-r3-squashfs-factory.binx-wrt-版本号-ramips-mt7620-xiaomi_miwifi-r3-squashfs-kernel1.binx-wrt-版本号-ramips-mt7620-xiaomi_miwifi-r3-squashfs-rootfs0.binx-wrt-版本号-ramips-mt7620-xiaomi_miwifi-r3-squashfs-sysupgrade.bin

同时这里有个第三方编译的,多提供了一个 openwrt-ramips-mt7620-xiaomi_miwifi-r3-initramfs-kernel.bin 文件

分别说明这些文件的用处,更多详细信息参考这里

breed-factory.bin

X-Wrt 作者为从 PandoraBox 刷到 X-Wrt 而订制的,适用于 Breed/pb-boot 恢复界面刷入。

你也可以在 PandoraBox 的 SSH 内,使用如下命令刷入:

shell1mtd write x-wrt-版本号-ramips-mt7620-xiaomi_miwifi-r3-squashfs-breed-factory.bin firmware

刷入重启后登录后台管理界面,再使用 sysupgrade.bin 升级即可

但采用此方法刷入,pb-boot 作为引导程序时,不可以固件内使用 sysupgrade.bin 升级,因为分区布局不同,固件内升级时会不升级 kernel,只会升级 rootfs。(这里也不太确定,有错请指正)

factory.bin

factory 固件比 sysupgrade 固件包含更多的信息,一般用于从厂商的固件刷成 Openwrt 的固件。

Openwrt 官方给出的解释原文

a factory image is one built for the bootloader flasher or stock software flasher a sysupgrade image (previously named trx image) is designed to be flashed from within openwrt itself

The two have the same content, but a factory image would have extra header information or whatever the platform needs. Generally speaking, the factory image is to be used with the OEM GUI or OEM flashing utilities to convert the device to OpenWrt. After that, use the sysupgrade images.

kernel1.bin

内核

rootfs0.bin

根文件系统

sysupgrade.bin

一般作为固件内升级包,之前叫 trx ,包含 kernel 和 rootfs。

也可以用于 TTL 中先在 RAM 运行 initramfs-kernel.bin,然后在管理页面把 sysupgrade.bin 永久刷到 Flash 中,具体看这里的视频教程。 这种方法刷入的好处是有坏块越过机制,否则有坏块时 mtd 命令有可能刷不进去。

initramfs-kernel.bin

包含了 Initial Ram File System 和 kernel,一个只运行在 RAM 中的完整系统。

刷到分区

和 Padavan 一样,把 kernel1 和 rootfs0 刷入即可

shell12mtd write x-wrt-版本号-ramips-mt7620-xiaomi_miwifi-r3-squashfs-kernel1.bin kernel1mtd write x-wrt-版本号-ramips-mt7620-xiaomi_miwifi-r3-squashfs-rootfs0.bin rootfs0 管理信息

默认地址:192.168.15.1

默认账户:root

默认密码:admin

刷回官方

“将官方固件命名为 miwifi.bin 放到 FAT/FAT32 格式的 U 盘根目录,开机时长按路由器复位键,直到黄灯闪烁”。直接这么做,在 X-Wrt 中是没用的,因为该功能是官方 kernel0 的功能,你得先让 Uboot 引导保留的 kernel0。

从下文的“救砖(半砖)”小节可知,同时做到以下两点,就能刷回官方:

使得 UBoot 引导 kernel0,可以有以下方式

flag_try_sys1_failed、flag_try_sys2_failed 同时为 1 时,uboot 则会校验 kernel0 的 CRC32,如果 CRC32 正确就会引导 kernel0 flag_try_sys1_failed、flag_try_sys2_failed 不同时为 1 时,但 flag_last_success 为 0,就会引导 kernel0

使得 kernel0 进入恢复模式,可以有以下方式

U 盘已经插入且复位键被长按,就会进入恢复模式 flag_try_sys1_failed、flag_try_sys2_failed 同时为 1,红灯亮,提示你插入 U 盘并长按复位键直到黄灯闪烁,进入恢复模式

所以有以下方案:

把环境变量 flag_last_success 设为 0( flag_try_sys1_failed=1、flag_try_sys2_failed=1 不同时为 1 时)。

shell1fw_setenv flag_last_success 0

重启会进入 kernel0,你需要提前插入 U 盘并按复位键直到黄灯闪烁,进入恢复模式。

把环境变量 flag_try_sys1_failed=1、flag_try_sys2_failed=1 同时设为 1。(推荐)

shell12fw_setenv flag_try_sys1_failed 1fw_setenv flag_try_sys2_failed 1

重启会进入 kernel0,红灯亮,提示你插入 U 盘并长按复位键直到黄灯闪烁,进入恢复模式。

删除系统 2(X-Wrt)

shell1mtd erase kernel

系统 2 重启会失败,flag_try_sys2_failed 自动变为 1。

自动重启会进入 kernel0,此时系统 1 也会启动失败,flag_try_sys1_failed 自动变为 1。

再次自动重启会进入 kernel0,红灯亮,提示你插入 U 盘并长按复位键直到黄灯闪烁,进入恢复模式。

从官方固件刷 Openwrt\Lede

Openwrt 官方没有支持 R3,但 X-Wrt 支持 R3(X-Wrt 是 Openwrt 的 fork 版本)。如果只编译有 Openwrt 的 sysupgrade.bin 文件,那可以先刷入 X-Wrt ,然后在 X-Wrt 后台管理界面上传 Openwrt 的 sysupgrade.bin 升级即可。如果编译有所有的文件,所需操作和 X-Wrt 基本一致。

文件说明

刷到分区

管理信息

刷回官方

从官方固件刷 PandoraBox

PandoraBox 已经停止更新,所有不怎么推荐。

下载地址:https://mega.nz/folder/WY0FiTIS#Cl_Dzm4yhzrQZFazYG3i8Q/folder/eEd3VIQa

下载地址:http://downloads.openwrt.org.cn/PandoraBox/

刷 pb-bootshell123mtd write pb-boot-xiaomi3-20190317-61b6d33.img Bootloadermtd verify pb-boot-xiaomi3-20190317-61b6d33.img Bootloader #校验不通过就重新刷,千完不要断电或重启

注:

pb-boot 固定引导 kernel0 位置,且 R3 的 PandoraBox 只支持使用 pb-boot 引导。刷 PandoraBox 后,UBoot 和小米官方固件的 kernel 都将被覆盖,它们提供的恢复功能都没有了。

pb-boot 虽然可以刷入其他同类型固件(Openwrt 衍生版),但经测试 X-wrt、Openwrt/Lede 都只能运行到 kernel 阶段就会不断重启。

刷入 PandoraBox 重启路由器,按住复位键直到黄灯闪烁。 打开 192.168.1.1,你将看到 PandoraBox 固件升级页面,选择 Pandorabox 固件 (sysupgrade.bin) 并上传。 管理信息

默认地址: 192.168.1.1

默认账号:root

默认密码:admin

刷回官方

正常情况下, OpenWrt 固件的引导分区是被锁定的(其 fork 版本 Pandorabox 也一样),所以不能直接用 mtd 命令把备份的Bootloader 刷回去。

方案一

先在 Web 后台页面刷入一个未锁定引导分区的固件(openwrt-ramips-mt7620-xiaomi_miwifi-r3-squashfs-pb-boot.bin 来源),然后登录管理页面(192.168.1.1,没有密码)配置密码并启用 SSH,然后把备份的官方 uboot.bin 和 kernel0.bin 刷回去

shell12345678mtd write uboot.bin Bootloader #校验不通过就重新刷,千完不要断电或重启mtd write kernel0.bin kernel0_rsvd #校验不通过就重新刷,千完不要断电或重启#开启 TTLfw_setenv boot_ wait onfw_setenv uart_en 1reboot

接着将官方固件命名为 miwifi.bin 或 miwifi.bin 放到 FAT/FAT32 格式的 U 盘根目录,开机后长按路由器复位键,直到黄灯闪烁,便会刷回官方。

方案二

用备份的官方固件 all 分区,恢复到 Pandora 的 fullflash 分区。(不推荐,危险,且有坏块 mtd 可能刷不进去)

方案三(推荐):

因为小米官方固件不是标准的 Openwrt 兼容固件,所以不能在 pb-boot 中直接刷入,但pb-boot-xiaomi3-20190317-61b6d33.img 这个版本已经支持直接刷入。(虽然系统启动失败,但是可以进入小米的 kernel0 了,所以可以使用 kernel0 的恢复功能)

所以,先在 pb-boot 中刷入小米的官方固件包(名字不包含 all 的,即不包含 Bootloader 的,否则不给刷),然后将官方固件命名为 miwifi.bin 或 miwifi.bin 放到 FAT/FAT32 格式的 U 盘根目录,开机几秒后(等 kernel0 先运行,不然会先进入 pb-boot 的恢复页面)长按路由器复位键,直到黄灯闪烁便会刷回官方。

救砖(半砖)

有两种方式可以救半砖:小米官方固件 kernel 提供的恢复功能,不用拆机也不用购买设备,前提是你没有破环 Uboot 也没有破坏 kernel 才行。以及 Uboot 提供的 TTL 恢复功能,得拆机,以及购买 TTL 转 USB 的设备和杜邦线。

只有你刷的是 Padavan、X-Wrt、Openwrt/Lede,才可以使用小米官方自带的恢复功能,因为他们都保留了官方的 Uboot 以及 kernel0。

如果你刷的 PandoraBox,那这两种方式都不适用,因为 Uboot 已经被 pb-boot 取代,以及 kernel0 和 kernel1 都被覆盖了,但 pb-boot 提供 Web 恢复功能,所以也没那么容易变全砖。

kernel 恢复功能

把官方固件命名为 miwifi.bin 或 miwifi_ssh.bin 放到 FAT/FAT32 格式的 U 盘根目录,开机长按路由器复位键直到黄灯闪烁,便会自动刷回官方。这是小米官方固件的 kernel 提供的功能,接下来学习下原理。

官方 UBoot 期望在地址 0x200000 或 0x600000 找到可引导的 kernel,他们分别对应两个系统的内核,其中一个损坏了可以引导另一个。

UBoot 通过 flag_last_success、flag_try_sys1_failed、flag_try_sys2_failed 这三个环境变量来决定引导哪个系统(来源):

flag_try_sys1_failed、flag_try_sys1_failed 同时为 1,说明两个系统都启动失败,将会校验系统 1 的内核 CRC32

如果能通过,则引导系统 1,此时 kernel0 检测到同时为 1,红灯闪烁提示你插入 U 盘并长按恢复键,进入恢复模式 如果不通过,则引导系统 2,此时 kernel1 检测到同时为 1,红灯闪烁提示你插入 U 盘并长按恢复键,进入恢复模式

flag_try_sys1_failed、flag_try_sys1_failed 不同时为 1,则由 flag_last_success 的值决定引导哪个系统

flag_last_success 为 0 时,则会引导内核 1,此时如果检测到有插入 U 盘且复位键被长按,进入恢复模式 flag_last_success 为 1 时,则会引导内核 2,此时如果检测到有插入 U 盘且复位键被长按,进入恢复模式

注:如果被引导的系统启动不成功,则 UBoot 会设置系统的失败标志,除非启动成功否则不会清除失败标志,这样 flag_try_sys1_failed 和 flag_try_sys2_failed 就会同时为 1。

所以从 Padavan、X-Wrt、Openwrt/Lede 刷回官方总结就是:一,得使 Uboot 引导 kernel0;二,得使 kernel0 进入恢复模式。

TTL 恢复功能

UBoot 提供了通过 TTL 恢复的功能,你需要购买一个 TTL 转 USB 的设备和一根杜邦线。

TTL 线的接法:TTL RX 接路由器 TX、TTL TX 接路由器 RX、TTL GND 接路由器 GND、VCC 不用接,波特率 115200 bps。

刷机前如果你已经开启了 TLL 功能,启动时 U-Boot 会提示选择操作:

Code123456Please choose the operation: 1: Load system code to SDRAM via TFTP. 2: Load system code then write to Flash via TFTP. 3: Boot system code via Flash (default). 4: Entr boot command line interface. 9: Load Boot Loader code then write to Flash via TFTP.

(不知道什么原因 uboot 阶段会出现乱码但不影响使用,应该不是接触不良,因为从引导 kernel 后就不会出现乱码了)

选项 1 是把一个系统加载到 RAM 中执行,你可以用来执行小米官方的内核,然后使用内核提供的功能刷回官方,步骤如下:

将 kernel0.bin 放到 TFTP 服务器,并启动 TFTP 服务器

将小米官方固件重命名为 miwifi.bin 或 miwifi_ssh.bin 放在 FAT/FAT32 格式的 U 盘,然后插到路由器

启动路由器并选择选项 1

会提示设置路由器 IP 和设置 TFTP 服务器 IP,以及要运行的文件名

Code1234Please Input new ones /or Ctrl-C to discard Input device IP (192.168.1.1) ==:192.168.1.1 Input server IP (192.168.1.3) ==:192.168.1.3 Input Linux Kernel filename () ==:kernel0.bin

设置好后回车,会自动把文件从 TFTP 服务器传输到路由器

传输完后会自动运行,此时你需要按住复位键直到黄灯闪烁,它将刷回官方固件

选项 2,是把 kernel 刷到 Flash 中,配置过程和选项 1 类似。

UBoot 会先把下载来的数据写到闪存的 0x200000 位置 (也就是 kernel0),再把数据写到 0x600000 位置 (kernel1),这样 kernel0 和 kernel1 数据是相同的。

选项 3,是默认选项,系统正常启动

选项 4,是命令行接口,提供一些操作,比如设置 Uboot 环境变量等

选项 9,是把 BootLoader 刷到 Flash 中(谨慎操作),配置过程和选项 1 类似。

救砖(全砖)买 Nand 编程器

土豪随意,购买 Nand 编程器后,你可以随便折腾,全砖了再刷回来即可。

硬改 MINI

NAND Flash 的编程器价格昂贵,一般接近千元,普通玩家没必要购买。但小米路由器 3 和小米路由器 MINI 的配置非常相似,最大的不同就是:MINI 是 16MB 的 NOR Flash,R3 是 128MB 的 NAND Flash。处理器 MT7620A 可以 Parallel NAND 和 SPI NOR 并存,且 R3 的电路版上预留有 SPI 的引脚,经大神实测可以把 R3 改成 MINI。

image-20210707214837130

MT7620A 使用 SPI_MOSI、SPI_CLK、TXD2、GPIO0 这四个引脚的值来决定启动模式

3482555-a9e5ea4bfbb7bedd

从 datasheet 可以看到主要有好几个正常模式,我们主要关心这两个:

正常模式 1(从 ROM+NAND 闪存引导,4 cycle address/2 KB page size )

正常模式 2(从 SPI 引导,3-Byte Addr)

观察小米路由器 MINI 和小米路由器 3 这四个引脚的连接方式,如下:

引脚 MINI R3 SPI_MOSI R135 R135 SPI_CLK R127 R127 TXD2 R137 R139 GPIO0 R126 R124

MINI 的四个启动引脚的电路如下(NI 指 Not Install,即不安装的意思):

3482555-2482bbe365de6ca5

MINI 的四个脚位的值:SPI_MOSI (R135) - 0 (接地)、SPI_CLK (R127) - 0 (接地)、TXD2 (R137) - 1 (通过4.7kΩ 电阻拉高)、GPIO0 (R126) - 0 (接地),对应的二进制的 0010,也就是正常模式 2。

所以 R3 改 MINI 需要:将 R139 拆下接到 R137,这样就把 TXD2 设置为 1,再将 R124 拆下接到 R126,这将 GPIO0 设置为 0。

R139 和 R137 在电路板正面,R124 和 R126 在电路板反面:

image-20210707214122276image-20210707214426456

然后把 MINI 的引导程序(这里用的是 breed)用编程器先刷到 NOR Flash 上,然后再焊接到主板上(主板上的白点对应 Flash 的凹点),最后在 breed 里面再刷入固件即可。

买 NOR Flash 时需要注意,最好买和 MINI 一样的容量(16M,型号 Winbond W25Q128FVSIG),这样可以直接刷入 MINI 的固件,否则需要自己编译内核(修改 target/linux/ramips/dts/MIWIFI-MINI.dts的值)。其次要买一个你的编程器能识别的型号。

改成 MINI 后,WAN 和 LAN 接口会互换,但不影响使用,其次是 WIFI 信号可能会较差,需要在 breed 中刷入备份的 R3 的 EEPORM(原固件 Factory 分区)。

根据 R3G/R3P 的改法,还可以双刀开关接 J90 & J91 改双启动,不知道 R3 行不行。

也可以尝试把 R3 备份的 Bootloader(UBoot)当作 MINI 的固件刷入,看是否能引导 NAND Flash 中的系统把其救回来。

参考链接1、参考链接2

总结

TODO

主要参考地址 Openwrt 小米路由器 3:https://openwrt.org/toh/xiaomi/mir3 Openwrt 小米路由器 3 讨论:https://forum.openwrt.org/t/xiaomi-mi-wifi-3-support/2252/1 Openwrt 开源项目:https://github.com/openwrt/openwrt/commit/f2107fc328ff7f9817fe9ca64f84bba9e32abfc6 俄罗斯论坛:https://4pda.to/forum/index.php?showtopic=736801&st=1220#entry50915904 恩山论坛用户(醉老仙):https://www.right.com.cn/forum/home.php?mod=space&uid=409954&do=index 恩山论坛用户(fyi2000):https://www.right.com.cn/forum/space-uid-448988.html 恩山论坛用户(ysc3839):https://www.right.com.cn/forum/thread-308330-1-1.html 恩山论坛用户(ptpt52):https://www.right.com.cn/forum/thread-261964-1-1.html 入门问题收集

在不同系统中修改 UBoot 环境变量的命令(只针对 R3)

在 UBoot 命令行接口界面

printenv、setenv、saveenv

在小米官方固件

nvram show、nvram set、nvram commit

在 Padavan

不支持

在 Opentrt/Lede 及其衍生版(包括 X-Wrt、PandoraBox 等)

fw_printenv、fw_setenv、(没有保存命令,会自动保存)

不同系统中是否锁定 Bootloader 分区(只针对 R3)

小米官方固件

不锁定

Pavadan

不锁定

在 Opentrt/Lede 及其衍生版(包括 X-Wrt、PandoraBox 等)

锁定

COM、串口、TTL、UART 的关系、CMOS电平

TTL、RS-232、RS-485、CMOS 是指的电平标准(电信号)

TTL:Transistor Transistor Logic,晶体管-晶体管逻辑电平。+5V 等价于逻辑“1”,0V 等价于逻辑“0”

TTL:Time To Live,生存时间值。在 IPV4 包头叫跳数,用来避免 IP 包在网络中的无限循环和收发,每经过一次路由跳数减 1,当减到 0 时,把包丢弃。在域名系统中 TTL 是指 DNS 记录在 DNS 服务器上缓存时间。

UART:Universal Asynchronous Receiver/Transmitter,通用异步收发传输器。一种通用串行数据总线协议,用于异步通信

起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。 资料位:紧接着起始位之后。资料位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。 波特率:是衡量资料传送速率的指标。表示每秒钟传送的符号数(symbol)。一个符号代表的信息量(比特数)与符号的阶数有关。例如传输使用256阶符号,每8bit代表一个符号,资料传送速率为120字符/秒,则波特率就是120baud,比特率是120*8=960bit/s。这两者的概念很容易搞错。

MTD 分区是在哪里进行的

分区一般是内核中进行的,也有在 Bootloader 中进行的

EEPROM 分区和 ART 分区、Factory 分区的区别

这三个东西在路由器界就是指同一个东西,注意 EEPROM 不是指硬件,太他妈混乱了

Atheros Radio Test 无线电测试

eeprom 是储存器件名称eeprom一般封装是sop8脚储存器同类的有harddisk一般是磁盘封装的储存器,即是硬盘Flash代表闪存 封装有tsop和bag等等。另外储存器件还有很多,如emmc,emcp,等等应用在手机数码上的。而eeprom一般用在小型电子产品同时sop8封装的储存器还有spi,norflash等等,不是全是eeprom。但目前大部分玩家都把eeprom当作分区名,不过大家都不是专业的,喜欢把eeprom当成什么都可以,只要大家都理解就行。

以前EEPROM 本来是 电可擦只读存储器现在类似功能的存储器件都可以这么说比如nor内存.大家把出厂每一个器件都有可能不一样的固件分区成为EEPROM是受了计算机概念的影响因为标准计算机有BIOS的 有内存 有硬盘固件类器件没有硬盘所以出厂时 EEPROM里面有BIOS 的部分有硬盘的部分BIOS的部分是不能随便丢失的就被引申为EEPROM了硬盘部分就是所谓的固件说的比较乱..

CFE 和 BootLoader 的区别

这两货也是同一个东西

引导加载程序分区 固件分区 特殊配置数据 Atheros U-Boot firmware ART 博通 CFE firmware NVRAM Atheros RedBoot firmware FIS recovery、RedBoot config、boardconfig

NVRAM 是有专门的硬件吗,还是 Flash 划分出来的

Non-Volatile Ram即非易失性存储空间。简单来说就是一段掉电也不丢失数据的存储空间。这类存储介质有很多,像多数的eeprom,Rom都是可以作为该类空间的介质,(严格来说 Flash 不上,因为它不是随机访问的)。而具体到BIOS的话,多数情况下可以理解为在BIOS-Rom中挖了一段空间,用来作为我们希望掉电也不丢失数据的存储空间

NVRAM、Flash 、EEPROM 的区别

三种存贮东东都是非易失性的,至于其中存贮什么东东要看硬件的设计和系统的安排了。

在路由器中一般:

EEPROM 用来保存路由器硬件调教参数

NVRAM 用来保存路由器配置参数

Flash 用来保存系统

从硬件来说他们一般不是同一个类东西,但在软件实现上就不一样了,比如把 Flash 划分一段空间来当 NVRAM 或 EEPROM 用。

什么叫不死 Boot

一般是指提供了 Web 恢复界面的 Boot,它们可以在该界面内刷入任意固件,即使开不了机也能重新刷

什么是锁 Bootloader 分区

小米官方固件和 Padavan 没有锁引导分区,(padavan 下解锁引导分区:mtd_write unlock Bootloader)

默认 Openwrt 极其衍生版(比如 X-Wrt、PandoraBox)都锁了一些重要分区,比如引导分区,不能在系统内刷入 Bootloader

注意:这里是“锁 Bootloader 分区”术语,不是类似手机中常说的“Bootloader 锁”。手机中说的 BL 锁是指 Bootloader 会对它所引导的系统镜像做一个签名校验,如果不通过就不引导。这里说的“锁 Bootloader 分区”,是指内核把 Bootloader 分区给锁定了,不给刷入新的 Bootloader。Openwrt 中可以安装 kmod-mtd-rw_内核版本号 然后使用 insmod mtd-rw.ko i_want_a_brick=1 命令加载来解锁 Bootloader 分区(这里有个疑惑 mtd unlock xxx 命令可以解锁吗:由于某些原因 mtd 的 unlock 功能在内核被取消了(谷歌搜索 m25p80.c 解锁/取消保护))

还有一种就算硬件级别的锁定,TODO

不刷 Padavan 的 boot,只刷 kernel 和 rootfs 会改变分区布局吗?

会,分区是在 kernel 里面分的

不刷 Padavan 的 boot,只刷 kernel 和 rootfs,Padavan 的 mtd 命令会变成 mtd_writte 吗?

会 MTD 命令是在内核实现的,只不过 Padavan 搞特殊,用到命令是 mtd_writte

分区布局是储存在哪的

一般是内核中实现,也有少部分在 Bootloader

什么叫过渡固件

initramfs-kernel.bin(带有坏块回收机制,有坏块也能刷入固件)

factory.bin 具体包含的信息

注意和 factory 分区不是一个东西,太他妈混乱了

坏块处理是在哪里处理的,flsah驱动?bootloader?内核?

TODO

有坏块还能使用 MTD 命令吗

有坏块使用 dd 命令备份将不能完成备份, MTD 导入

坏块为什么影响刷机

一般认为小米原固件有坏块回收机制,第三方没有,所以,小米用原固件一般不会有什么大问题,刷第三方就有可能莫名其妙的问题,如丢5G,或2.4G等等

没看懂什么叫处理不了坏块,坏块不是OP处理的,OP是操作系统,而坏块是nand驱动在bootloader层面处理的,驱动把坏块报告给OP,OP读写时避开坏块,理论上是这样。但是如果坏块在某个分区很靠前的位置,貌似OP无法避开,因为理论上分区靠前部分必须是可读写的。参见op 官网对nand的解释

除了上古遗迹,比如老毛子、华硕的博通系列,所有固件都可以处理坏块,,即使博通官方已经推荐 ubifs 了华硕还是用 jffs2 坚持不处理坏块,这两个就是上古遗迹的代表,也就是说现在所有使用nand的芯片官方都已经切换到ubifs来自动处理坏块了

而老毛子的RootFS格式为SquashFS,应该是不支持坏块处理,hiboy和hanwckf版固件都比较小,具体还是要看分区布局才知道是否有影响,如果会云端编译固件,那就只要避开坏块即可

什么是 overlay 分区,以及扩容该分区

https://blog.csdn.net/misisippi68/article/details/105431455

OpenWRT 一般使用的文件系统是 SquashFS ,建议下载固件的时候也下载这种固件。这个文件系统的特点就是:只读、压缩。一个只读的文件系统,是怎么做到保存设置和安装软件的呢?用/overlay分区。固件中已经写入了有个/overlay分区,但它的指向可以更改。

img

虽然原来的文件不能修改,但我们把修改的部分放在 overlay 分区上,然后映射到原来的位置,读取的时候就可以读到我们修改过的文件了。当系统故障,reset的时候,把固件中配置文件拷贝到overlay层,就恢复到最初设置了。由于/overlay本身的指向配置也在overlay层,所以可以新建一个更大的分区,然后把overlay指向这个新分区,就相当于把overlay扩容了。这个可能有点绕。

附录附:各种固件的分区布局

官方固件

shell1234567891011121314151617181920212223242526272829cat /proc/mtddev: size erasesize namemtd0: 08000000 00020000 "ALL"mtd1: 00040000 00020000 "Bootloader"(引导分区)mtd2: 00040000 00020000 "Config" (环境变量分区以及配置分区)mtd3: 00040000 00020000 "Bdata" (备份分区)mtd4: 00040000 00020000 "Factory" (EEPROM,ART(无线校验数据)分区)mtd5: 00040000 00020000 "crash"mtd6: 00040000 00020000 "crash_syslog"mtd7: 00080000 00020000 "reserved0"mtd8: 00400000 00020000 "kernel0" (系统 1 内核)mtd9: 00400000 00020000 "kernel1" (系统 2 内核)mtd10: 02000000 00020000 "rootfs0" (系统 1 根文件系统)mtd11: 02000000 00020000 "rootfs1" (系统 2 根文件系统)mtd12: 03600000 00020000 "overlay"dmesg0x000000000000-0x000000040000 : "Bootloader"0x000000040000-0x000000080000 : "Config"0x000000080000-0x0000000c0000 : "Bdata"0x0000000c0000-0x000000100000 : "Factory"0x000000100000-0x000000140000 : "crash"0x000000140000-0x000000180000 : "crash_syslog"0x000000180000-0x000000200000 : "reserved0"0x000000200000-0x000000600000 : "kernel0"0x000000600000-0x000000a00000 : "kernel1"0x000000a00000-0x000002a00000 : "rootfs0"0x000002a00000-0x000004a00000 : "rootfs1"0x000004a00000-0x000008000000 : "overlay"

Padavan

shell12345678910111213141516171819202122cat /proc/mtddev: size erasesize namemtd0: 00040000 00020000 "Bootloader"mtd1: 00080000 00020000 "BootEnv"mtd2: 00540000 00020000 "Factory"mtd3: 00160000 00020000 "Kernel"mtd4: 00ea0000 00020000 "RootFS"mtd5: 00080000 00020000 "Config"mtd6: 00080000 00020000 "Storage"mtd7: 06900000 00020000 "RWFS"mtd8: 01000000 00020000 "Firmware_Stub"dmesg0x000000000000-0x000000040000 : "Bootloader"0x000000040000-0x0000000c0000 : "BootEnv"0x0000000c0000-0x000000600000 : "Factory"0x000000600000-0x000000760000 : "Kernel"0x000000760000-0x000001600000 : "RootFS"0x000001600000-0x000001680000 : "Config"0x000001680000-0x000001700000 : "Storage"0x000001700000-0x000008000000 : "RWFS"0x000000600000-0x000001600000 : "Firmware_Stub"

X-Wrt

shell123456789101112131415161718192021222324cat /proc/mtddev: size erasesize namemtd0: 00040000 00020000 "Bootloader"mtd1: 00040000 00020000 "Config"mtd2: 00040000 00020000 "Bdata"mtd3: 00040000 00020000 "factory"mtd4: 00040000 00020000 "crash"mtd5: 00040000 00020000 "crash_syslog"mtd6: 00080000 00020000 "reserved0"mtd7: 00400000 00020000 "kernel_stock"mtd8: 00400000 00020000 "kernel"mtd9: 07600000 00020000 "ubi"dmesg0x000000000000-0x000000040000 : "Bootloader"0x000000040000-0x000000080000 : "Config"0x000000080000-0x0000000c0000 : "Bdata"0x0000000c0000-0x000000100000 : "factory"0x000000100000-0x000000140000 : "crash"0x000000140000-0x000000180000 : "crash_syslog"0x000000180000-0x000000200000 : "reserved0"0x000000200000-0x000000600000 : "kernel_stock"0x000000600000-0x000000a00000 : "kernel"0x000000a00000-0x000008000000 : "ubi"

Openwrt/LEDE

shell123456789101112131415161718192021222324cat /proc/mtddev: size erasesize namemtd0: 00040000 00020000 "Bootloader"mtd1: 00040000 00020000 "Config"mtd2: 00040000 00020000 "Bdata"mtd3: 00040000 00020000 "Factory"mtd4: 00040000 00020000 "crash"mtd5: 00040000 00020000 "crash_syslog"mtd6: 00080000 00020000 "reserved0"mtd7: 00400000 00020000 "kernel0_rsvd"mtd8: 00400000 00020000 "kernel"mtd9: 07600000 00020000 "ubi"dmesg0x000000000000-0x000000040000 : "Bootloader"0x000000040000-0x000000080000 : "Config"0x000000080000-0x0000000c0000 : "Bdata"0x0000000c0000-0x000000100000 : "factory"0x000000100000-0x000000140000 : "crash"0x000000140000-0x000000180000 : "crash_syslog"0x000000180000-0x000000200000 : "reserved0"0x000000200000-0x000000600000 : "kernel0_rsvd"0x000000600000-0x000000a00000 : "kernel"0x000000a00000-0x000008000000 : "ubi"

PandoraBox

shell123456789101112131415161718192021222324252627282930cat /proc/mtddev: size erasesize namemtd0: 00040000 00020000 "u-boot"mtd1: 00040000 00020000 "u-boot-env"mtd2: 00040000 00020000 "Bdata"mtd3: 00040000 00020000 "Factory"mtd4: 00040000 00020000 "crash"mtd5: 00040000 00020000 "crash_syslog"mtd6: 00080000 00020000 "reserved0"mtd7: 07d00000 00020000 "firmware"mtd8: 00200000 00020000 "kernel"mtd9: 07ac0000 00020000 "ubi"mtd10: 00040000 00020000 "panic_oops"mtd11: 00100000 00020000 "factory_bbt"mtd12: 08000000 00020000 "fullflash"dmesg0x000000000000-0x000000040000 : "u-boot"0x000000040000-0x000000080000 : "u-boot-env"0x000000080000-0x0000000c0000 : "Bdata"0x0000000c0000-0x000000100000 : "Factory"0x000000100000-0x000000140000 : "crash"0x000000140000-0x000000180000 : "crash_syslog"0x000000180000-0x000000200000 : "reserved0"0x000000200000-0x000007f00000 : "firmware"0x000000200000-0x000000400000 : "kernel"0x000000400000-0x000007ec0000 : "ubi"0x000007ec0000-0x000007f00000 : "panic_oops"0x000007f00000-0x000008000000 : "factory_bbt"0x000000000000-0x000008000000 : "fullflash" 附:mtd 命令shell12345678910111213141516171819202122232425Usage: mtd [ ...] [ ...] [:...]The device is in the format of mtdX (eg: mtd4) or its label.mtd recognizes these commands: unlock unlock the device refresh refresh mtd partition erase erase all data on device verify |- verify (use - for stdin) to device write |- write (use - for stdin) to device jffs2write append to the jffs2 partition on the device fixseama fix the checksum in a seama header on first bootFollowing options are available: -q quiet mode (once: no [w] on writing, twice: no status messages) -n write without first erasing the blocks -r reboot after successful command -f force write without trx checks -e erase before executing the command -d directory for jffs2write, defaults to "tmp" -j integrate into jffs2 data when writing an image -s skip the first n bytes when appending data to the jffs2 partiton, defaults to "0" -p write beginning at partition offsetExample: To write linux.trx to mtd4 labeled as linux and reboot afterwards mtd -r write linux.trx linux 附:nvram 命令Code1nvram [get name] [set name=value] [unset name] [show] [commit] [clear file]. 附:UBoot 命令行接口

该接口所带的命令并不是唯一的,而是根据编译时所配置的,小米 Uboot 支持的命令如下:

Code123456789101112131415161718192021222324252627MT7620 # help? - alias for 'help'help - print online helpversion - print mo▒▒▒▒▒versionbootm boot application image from memoryintena - intenኍ▒▒▒ena - intenago - start application at addressmd - memory displaynm - memory modify (constant addre▒󩊍mm - memory modify (auto-incrementing)mdio - Ralink PHY register R/W command ▒▒▒▒rf -▒▒▒▒▒write rf registernand -▒▒▒▒▒ commandreadcnt -▒▒▒▒▒▒ntreset - Perform RESET of the CPU(重启)printenv- print environment variablessetenv - set environment▒▒▒▒▒ablessaveenv - save environment var▒▒▒▒▒s to persistent storagetftpboot- boot image via network using TFTР▒▒▒▒ocoltrap_init - trap_init 附:UBoot 环境变量值(包括 nvram 值)shell1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253root@XiaoQiang:~# nvram showbootcmd=tftp (boot时要执行的命令)flag_boot_type=2 (boot类型???)ethaddr="00:AA:BB:CC:DD:10" (UBoot下一些恢复操作时,MAC地址)ipaddr=192.168.1.1 (UBoot下一些恢复操作时,本路由器默认地址)serverip=192.168.1.3 (UBoot下一些恢复操作时,TFTP服务器默认地址)stdin=serial (基本输入流)stdout=serial (基本输出流)stderr=serial (基本错误流)boot_wait=off (引导等待)bootdelay=5 (启动延迟)uart_en=0 (开启串口)telnet_en=0 (开启telnet)ssh_en=1 (开始SSH)flag_boot_success=1 (上一次boot成功)flag_try_sys1_failed=0 (上一次系统1启动失败)flag_try_sys2_failed=0 (上一次系统2启动失败)flag_last_success=1 (上一次启动成功的系统)flag_boot_rootfs=0 (本次boot的rootfs)normal_firmware_md5=964e8652bf4d1c9a0bde74902f5914bc (Factory分区的MD5)flag_ota_reboot=0 (OTA升级需要重启标志)Router_unconfigured=0 (系统未配置)restore_defaults=0 (恢复默认)no_wifi_reboot_times=0 (无WIFI时重启次数)no_wifi_dev_times=0 (无WIFI时的 ? 次数)mode=Router (路由器模式)SN=12937/21766960 (SN码)model=R3 (路由器型号)os1_version=2.11.20 (系统版本)CountryCode=CN (国家代码)ColorType=101 (指示灯颜色???)wl0_ssid=Xiaomi_9A46_65B9_5G (5G WIFI 名称)wl1_ssid=Xiaomi_9A46_65B9 (2.4G WIFI 名称)wl0_radio=1 (开启5G WIFI)wl1_radio=1 (开启2.4G WIFI)nv_sys_pwd=65016f39d14ee3a59721fabbf37c998914e3dfcc (管理密码,非明文)nv_wifi_ssid=Xiaomi_9A46 (2.4G WIFI名称)nv_wifi_enc=mixed-psk (2.4G WIFI加密类型)nv_wifi_pwd=12345678 (2.4G WIFI密码)nv_wifi_ssid1=Xiaomi_9A46_5G (5G WIFI名称)nv_wifi_enc1=mixed-psk (5G WIFI加密类型)nv_wifi_pwd1=12345678 (5G WIFI密码)nv_wan_type=dhcp (WAN 类型)nv_device_id=c44b046f-61e8-8b27-0f61-2f6cf8ee6645 (设备ID)nv_channel_secret=ORPAJYe0uTE2qZsCFJ40eeCRLVHDqogyHOecEgpTTAs= (通道密钥) 附:官方固件启动日志(来源)Code123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464U-Boot 1.1.3 (Apr 15 2016 - 17:46:32)Board: Ralink APSoC DRAM: 128 MBPower on memory test. Memory size= 128 MB...OK!relocate_code Pointer at: 87fb8000enable ephy clock...done. rf reg 29 = 5SSC disabled.!!! nand page size = 2048, addr len=4..============================================Ralink UBoot Version: 4.2.S.1--------------------------------------------ASIC 7620_MP (Port5None)DRAM_CONF_FROM: Auto-detectionDRAM_TYPE: DDR2DRAM component: 1024 MbitsDRAM bus: 16 bitTotal memory: 128 MBytesFlash component: NAND FlashDate:Apr 15 2016 Time:17:46:32============================================icache: sets:512, ways:4, linesz:32 ,total:65536dcache: sets:256, ways:4, linesz:32 ,total:32768 ##### The CPU freq = 580 MHZ #### estimate memory size =128 MbytesPlease choose the operation: 1: Load system code to SDRAM via TFTP. 2: Load system code then write to Flash via TFTP. 3: Boot system code via Flash (default). 4: Entr boot command line interface. 9: Load Boot Loader code then write to Flash via TFTP.3: System Boot system code via Flash.Booting System 2..ranand_erase_write: offs:40000, count:20000.Done!done## Booting image at bc600000 ... Image Name: MIPS OpenWrt Linux-2.6.36 Image Type: MIPS Linux Kernel Image (lzma compressed) Data Size: 2284520 Bytes = 2.2 MB Load Address: 80000000 Entry Point: 80000000................................... Verifying Checksum ... OK Uncompressing Kernel Image ... OKcommandline uart_en=0 factory_mode=0 mem=128mNo initrd## Transferring control to Linux (at address 80000000) ...## Giving linux memsize in MB, 128Starting kernel ...LINUX started... THIS IS ASIC[ 0.000000] Initializing cgroup subsys cpuset[ 0.000000] Initializing cgroup subsys cpu[ 0.000000] Linux version 2.6.36 (jenkins@JenkinsServer) (gcc version 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) ) #1 Fri Apr 15 17:59:34 CST 2016[ 0.000000][ 0.000000] The CPU feqenuce set to 580 MHz[ 0.000000] PCIE: bypass PCIe DLL.[ 0.000000] PCIE: Elastic buffer control: Addr:0x68 -> 0xB4[ 0.000000] disable all power about PCIe[ 0.000000] CPU revision is: 00019650 (MIPS 24Kc)[ 0.000000] Software DMA cache coherency[ 0.000000] Determined physical RAM map:[ 0.000000] memory: 08000000 @ 00000000 (usable)[ 0.000000] User-defined physical RAM map:[ 0.000000] memory: 08000000 @ 00000000 (usable)[ 0.000000] Initrd not found or empty - disabling initrd[ 0.000000] Zone PFN ranges:[ 0.000000] Normal 0x00000000 -> 0x00008000[ 0.000000] Movable zone start PFN for each node[ 0.000000] early_node_map[1] active PFN ranges[ 0.000000] 0: 0x00000000 -> 0x00008000[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512[ 0.000000] Kernel command line: console=ttyS1,115200n8 root=/dev/ram0 uart_en=0 factory_mode=0 mem=128m[ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)[ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)[ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)[ 0.000000] Primary instruction cache 64kB, VIPT, , 4-waylinesize 32 bytes.[ 0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes[ 0.000000] Writing ErrCtl register=00078fdb[ 0.000000] Readback ErrCtl register=00078fdb[ 0.000000] allocated 655360 bytes of page_cgroup[ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups[ 0.000000] Memory: 123760k/131072k available (3348k kernel code, 7312k reserved, 1028k data, 868k init, 0k highmem)[ 0.000000] SLUB: Genslabs=7, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1[ 0.000000] NR_IRQS:128[ 0.000000] console [ttyS1] enabled[ 0.010000] Calibrating delay loop... 385.84 BogoMIPS (lpj=1929216)[ 0.220000] pid_max: default: 32768 minimum: 301[ 0.220000] Mount-cache hash table entries: 512[ 0.220000] Initializing cgroup subsys cpuacct[ 0.230000] Initializing cgroup subsys memory[ 0.230000] Initializing cgroup subsys net_cls[ 0.230000] devtmpfs: initialized[ 0.240000] NET: Registered protocol family 16[ 0.240000] RALINK_GPIOMODE = 121b1c[ 0.240000] RALINK_GPIOMODE = 101b1c[ 0.440000] PPLL_CFG1=0xe6c000[ 0.450000] MT7620 PPLL lock[ 0.450000] PPLL_DRV =0x80080504[ 0.650000] Deassert the PCIE0 RESET.[ 0.650000] start PCIe register access[ 1.150000] RALINK_RSTCTRL = 2400000[ 1.160000] RALINK_CLKCFG1 = 75afffc0[ 1.160000][ 1.160000] *************** MT7620 PCIe RC mode *************[ 1.660000] PCIE0 enabled[ 1.670000] init_rt2880pci done[ 1.670000] bio: create slab at 0[ 1.680000] SCSI subsystem initialized[ 1.680000] usbcore: registered new interface driver usbfs[ 1.680000] usbcore: registered new interface driver hub[ 1.690000] usbcore: registered new device driver usb[ 1.690000] pci 0000:00:00.0: BAR 0: can't assign mem (size 0x80000000)[ 1.700000] pci 0000:00:00.0: BAR 8: assigned [mem 0x20000000-0x200fffff][ 1.700000] pci 0000:00:00.0: BAR 9: assigned [mem 0x20100000-0x201fffff pref][ 1.710000] pci 0000:00:00.0: BAR 1: assigned [mem 0x20200000-0x2020ffff][ 1.710000] pci 0000:00:00.0: BAR 1: set to [mem 0x20200000-0x2020ffff] (PCI address [0x20200000-0x2020ffff][ 1.720000] pci 0000:01:00.0: BAR 0: assigned [mem 0x20000000-0x200fffff 64bit][ 1.720000] pci 0000:01:00.0: BAR 0: set to [mem 0x20000000-0x200fffff 64bit] (PCI address [0x20000000-0x200fffff][ 1.730000] pci 0000:01:00.0: BAR 6: assigned [mem 0x20100000-0x2010ffff pref][ 1.730000] pci 0000:00:00.0: PCI bridge to [bus 01-01][ 1.740000] pci 0000:00:00.0: bridge window [io disabled][ 1.740000] pci 0000:00:00.0: bridge window [mem 0x20000000-0x200fffff][ 1.750000] pci 0000:00:00.0: bridge window [mem 0x20100000-0x201fffff pref][ 1.750000] BAR0 at slot 0 = 0[ 1.760000] bus=0x0, slot = 0x0[ 1.760000] res[0]->start = 0[ 1.760000] res[0]->end = 0[ 1.760000] res[1]->start = 20200000[ 1.770000] res[1]->end = 2020ffff[ 1.770000] res[2]->start = 0[ 1.770000] res[2]->end = 0[ 1.770000] res[3]->start = 0[ 1.780000] res[3]->end = 0[ 1.780000] res[4]->start = 0[ 1.780000] res[4]->end = 0[ 1.780000] res[5]->start = 0[ 1.790000] res[5]->end = 0[ 1.790000] bus=0x1, slot = 0x0[ 1.790000] res[0]->start = 20000000[ 1.790000] res[0]->end = 200fffff[ 1.800000] res[1]->start = 0[ 1.800000] res[1]->end = 0[ 1.800000] res[2]->start = 0[ 1.800000] res[2]->end = 0[ 1.810000] res[3]->start = 0[ 1.810000] res[3]->end = 0[ 1.810000] res[4]->start = 0[ 1.810000] res[4]->end = 0[ 1.820000] res[5]->start = 0[ 1.820000] res[5]->end = 0[ 1.820000] Switching to clocksource MIPS[ 1.830000] NET: Registered protocol family 2[ 1.830000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)[ 1.840000] TCP established hash table entries: 4096 (order: 3, 32768 bytes)[ 1.850000] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)[ 1.850000] TCP: Hash tables configured (established 4096 bind 4096)[ 1.860000] TCP reno registered[ 1.860000] UDP hash table entries: 256 (order: 0, 4096 bytes)[ 1.870000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)[ 1.870000] NET: Registered protocol family 1[ 2.570000] RT3xxx EHCI/OHCI init.[ 2.580000] msgmni has been set to 241[ 2.580000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)[ 2.590000] io scheduler noop registered (default)[ 2.600000] RALINK_REG_PIO7140DATA b0000670 = 0[ 2.700000] RALINK_REG_PIO7140DATA b0000670 = 2000000[ 2.710000] Ralink gpio driver initialized[ 2.710000] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled[ 2.720000] serial8250: ttyS0 at MMIO 0x10000500 (irq = 37) is a 16550A[ 2.720000] serial8250: ttyS1 at MMIO 0x10000c00 (irq = 12) is a 16550A[ 2.730000] init reset module![ 2.740000] brd: module loaded[ 2.740000] !!! nand page size = 2048, addr len=4[ 2.750000] ra_nand_init: alloc 1350, at 87fd0000 , btt(87fd10c0, 100), ranfc_mtd:87fd11c0[ 2.760000] Creating 13 MTD partitions on "ra_nfc":[ 2.760000] 0x000000000000-0x000008000000 : "ALL"[ 2.790000] 0x000000000000-0x000000040000 : "Bootloader"[ 2.800000] 0x000000040000-0x000000080000 : "Config"[ 2.810000] 0x000000080000-0x0000000c0000 : "Bdata"[ 2.810000] 0x0000000c0000-0x000000100000 : "Factory"[ 2.820000] 0x000000100000-0x000000140000 : "crash"[ 2.820000] 0x000000140000-0x000000180000 : "crash_syslog"[ 2.830000] 0x000000180000-0x000000200000 : "reserved0"[ 2.840000] 0x000000200000-0x000000600000 : "kernel0"[ 2.840000] 0x000000600000-0x000000a00000 : "kernel1"[ 2.850000] 0x000000a00000-0x000002a00000 : "rootfs0"[ 2.850000] 0x000002a00000-0x000004a00000 : "rootfs1"[ 2.860000] 0x000004a00000-0x000008000000 : "overlay"[ 2.870000] rdm_major = 253[ 2.870000] SMACCR1 -- : 0x000034ce[ 2.870000] SMACCR0 -- : 0x004b3cc1[ 2.880000] Ralink APSoC Ethernet Driver Initilization. v3.0 256 rx/tx descriptors allocated, mtu = 1500![ 2.890000] SMACCR1 -- : 0x000034ce[ 2.890000] SMACCR0 -- : 0x004b3cc1[ 2.900000] PROC INIT OK![ 2.900000] PPP generic driver version 2.4.2[ 2.900000] PPP MPPE Compression module registered[ 2.910000] NET: Registered protocol family 24[ 2.910000] PPTP driver version 0.8.5[ 2.920000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver[ 3.040000] rt3xxx-ehci rt3xxx-ehci: Ralink EHCI Host Controller[ 3.050000] rt3xxx-ehci rt3xxx-ehci: new USB bus registered, assigned bus number 1[ 3.090000] rt3xxx-ehci rt3xxx-ehci: irq 18, io mem 0x101c0000[ 3.110000] rt3xxx-ehci rt3xxx-ehci: USB 0.0 started, EHCI 1.00[ 3.110000] hub 1-0:1.0: USB hub found[ 3.120000] hub 1-0:1.0: 1 port detected[ 3.120000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver[ 3.150000] rt3xxx-ohci rt3xxx-ohci: RT3xxx OHCI Controller[ 3.150000] rt3xxx-ohci rt3xxx-ohci: new USB bus registered, assigned bus number 2[ 3.160000] rt3xxx-ohci rt3xxx-ohci: irq 18, io mem 0x101c1000[ 3.230000] hub 2-0:1.0: USB hub found[ 3.230000] hub 2-0:1.0: 1 port detected[ 3.240000] usbcore: registered new interface driver cdc_acm[ 3.240000] cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters[ 3.250000] Initializing USB Mass Storage driver...[ 3.260000] usbcore: registered new interface driver usb-storage[ 3.260000] USB Mass Storage support registered.[ 3.270000] usbcore: registered new interface driver usbserial[ 3.270000] USB Serial support registered for generic[ 3.280000] usbcore: registered new interface driver usbserial_generic[ 3.290000] usbserial: USB Serial Driver core[ 3.290000] USB Serial support registered for pl2303[ 3.300000] usbcore: registered new interface driver pl2303[ 3.300000] pl2303: Prolific PL2303 USB to serial adaptor driver[ 3.310000] USB Serial support registered for TI USB 3410 1 port adapter[ 3.320000] USB Serial support registered for TI USB 5052 2 port adapter[ 3.320000] usbcore: registered new interface driver ti_usb_3410_5052[ 3.330000] ti_usb_3410_5052: v0.10:TI USB 3410/5052 Serial Driver[ 3.340000] Software Watchdog Timer: 0.07 initialized. soft_noboot=0 soft_margin=60 sec (nowayout= 0)[ 3.340000] u32 classifier[ 3.350000] input device check on[ 3.350000] Actions configured[ 3.350000] Netfilter messages via NETLINK v0.30 with ipset netlink.patch.[ 3.360000] nf_conntrack version 0.5.0 (1933 buckets, 7732 max)[ 3.370000] xt_time: kernel timezone is -0000[ 3.370000] GRE over IPv4 demultiplexor driver[ 3.380000] ip_tables: (C) 2000-2006 Netfilter Core Team, Type=Restricted Cone[ 3.390000] TCP cubic registered[ 3.390000] NET: Registered protocol family 10[ 3.400000] NET: Registered protocol family 17[ 3.400000] L2TP core driver, V2.0[ 3.400000] PPPoL2TP kernel driver, V2.0[ 3.410000] L2TP netlink interface[ 3.410000] 802.1Q VLAN Support v1.8 Ben Greear [ 3.420000] All bugs added by David S. Miller [ 3.440000] Freeing unused kernel memory: 868k freed[ 3.530000] Loading essential drivers...[ 3.530000] Press Ctrl+C to enter RAMFS...[ 4.550000] Check for USB recovery...[ 4.580000] Bringup the system...[ 4.590000] flag_boot_rootfs=1 mounting /dev/mtd11[ 4.600000] UBI: attaching mtd11 to ubi0[ 4.600000] UBI: physical eraseblock size: 131072 bytes (128 KiB)[ 4.610000] UBI: logical eraseblock size: 126976 bytes[ 4.610000] UBI: smallest flash I/O unit: 2048[ 4.620000] UBI: VID header offset: 2048 (aligned 2048)[ 4.620000] UBI: data offset: 4096[ 4.780000] UBI: max. sequence number: 2[ 4.790000] UBI: attached mtd11 to ubi0[ 4.790000] UBI: MTD device name: "rootfs1"[ 4.800000] UBI: MTD device size: 32 MiB[ 4.800000] UBI: number of good PEBs: 256[ 4.810000] UBI: number of bad PEBs: 0[ 4.810000] UBI: max. allowed volumes: 128[ 4.820000] UBI: wear-leveling threshold: 4096[ 4.820000] UBI: number of internal volumes: 1[ 4.830000] UBI: number of user volumes: 1[ 4.830000] UBI: available PEBs: 0[ 4.840000] UBI: total number of reserved PEBs: 256[ 4.840000] UBI: number of PEBs reserved for bad PEB handling: 4[ 4.850000] UBI: max/mean erase counter: 2/1[ 4.850000] UBI: image sequence number: 1481461889[ 4.860000] UBI: background thread "ubi_bgt0d" started, PID 80UBI device number 0, total 256 LEBs (32505856 bytes, 31.0 MiB), available 0 LEBs (0 bytes), LEB size 126976 bytes (124.0 KiB)[ 4.950000] UBIFS: mounted UBI device 0, volume 0, name "system"[ 4.950000] UBIFS: mounted read-only[ 4.960000] UBIFS: file system size: 30093312 bytes (29388 KiB, 28 MiB, 237 LEBs)[ 4.960000] UBIFS: journal size: 9023488 bytes (8812 KiB, 8 MiB, 72 LEBs)[ 4.970000] UBIFS: media format: w4/r0 (latest is w4/r0)[ 4.980000] UBIFS: default compressor: zlib[ 4.980000] UBIFS: reserved for root: 0 bytes (0 KiB)config core 'version' # ROM ver option ROM '2.11.20' # channel option CHANNEL 'stable' # hardware platform R1AC or R1N etc. option HARDWARE 'R3' # CFE ver option UBOOT '1.0.2' # Linux Kernel ver option LINUX '0.1.12' # RAMFS ver option RAMFS '0.1.12' # SQUASHFS ver option SQAFS '0.1.12' # ROOTFS ver option ROOTFS '0.1.12' #build time option BUILDTIME 'Fri, 15 Apr 2016 17:43:41 +0800' #build timestamp option BUILDTS '1460713422' #build git tag option GTAG 'commit dec2379967c2b44760bc6bab36c584cf58e06ae4'mount: mounting proc on /proc failed: Device or resource busymount: mounting sysfs on /sys failed: Device or resource busy[ 5.760000] Raeth v3.0 (Tasklet,SkbRecycle)[ 5.760000][ 5.760000] phy_tx_ring = 0x07ef6000, tx_ring = 0xa7ef6000[ 5.760000][ 5.760000] phy_rx_ring0 = 0x07ef7000, rx_ring0 = 0xa7ef7000[ 5.760000] SMACCR1 -- : 0x000034ce[ 5.760000] SMACCR0 -- : 0x004b3cc1[ 5.790000] ESW: Link Status Changed - Port4 Link UP[ 5.790000] CDMA_CSG_CFG = 81000000[ 5.790000] GDMA1_FWD_CFG = 20710000- preinit -Fri Apr 15 17:59:34 UTC 2016- regular preinit -[ 5.950000] UBI: attaching mtd12 to ubi1[ 5.960000] UBI: physical eraseblock size: 131072 bytes (128 KiB)[ 5.960000] UBI: logical eraseblock size: 126976 bytes[ 5.970000] UBI: smallest flash I/O unit: 2048[ 5.970000] UBI: VID header offset: 2048 (aligned 2048)[ 5.980000] UBI: data offset: 4096[ 6.230000] UBI: max. sequence number: 586[ 6.240000] UBI: attached mtd12 to ubi1[ 6.250000] UBI: MTD device name: "overlay"[ 6.250000] UBI: MTD device size: 54 MiB[ 6.260000] UBI: number of good PEBs: 432[ 6.260000] UBI: number of bad PEBs: 0[ 6.270000] UBI: max. allowed volumes: 128[ 6.270000] UBI: wear-leveling threshold: 4096[ 6.280000] UBI: number of internal volumes: 1[ 6.280000] UBI: number of user volumes: 1[ 6.290000] UBI: available PEBs: 0[ 6.290000] UBI: total number of reserved PEBs: 432[ 6.300000] UBI: number of PEBs reserved for bad PEB handling: 8[ 6.300000] UBI: max/mean erase counter: 2/1[ 6.310000] UBI: image sequence number: 520187673[ 6.310000] UBI: background thread "ubi_bgt1d" started, PID 149UBI device number 1, total 432 LEBs (54853632 bytes, 52.3 MiB), available 0 LEBs (0 bytes), LEB size 126976 bytes (124.0 KiB)[ 6.360000] UBIFS: recovery needed[ 6.420000] UBIFS: recovery completed[ 6.420000] UBIFS: mounted UBI device 1, volume 0, name "data"[ 6.430000] UBIFS: file system size: 52187136 bytes (50964 KiB, 49 MiB, 411 LEBs)[ 6.440000] UBIFS: journal size: 2666496 bytes (2604 KiB, 2 MiB, 21 LEBs)[ 6.440000] UBIFS: media format: w4/r0 (latest is w4/r0)[ 6.450000] UBIFS: default compressor: lzo[ 6.450000] UBIFS: reserved for root: 2464926 bytes (2407 KiB)/lib/preinit.sh: line 1: jffs2_not_mounted: not found- init -[ 7.080000] ra2880stop()...Done[ 7.100000] Free TX/RX Ring Memory!init started: BusyBox v1.19.4 (2016-04-15 17:38:14 CST)Please press Enter to activate this console. rcS S boot: INFO: rc script run time limit to 65 seconds.[ 8.040000] tntfs: module license 'Commercial. For support email [email protected].' taints kernel.[ 8.050000] Disabling lock debugging due to kernel taint[ 8.090000] Tuxera NTFS driver 3015.1.29 [Flags: R/W MODULE].[ 8.190000] Tuxera FAT 12/16/32 driver version 3014.1.24 [Flags: R/W MODULE].[ 8.250000] tun: Universal TUN/TAP device driver, 1.6[ 8.260000] tun: (C) 1999-2004 Max Krasnyansky [ 8.280000] Mirror/redirect action on[ 8.550000] GRE over IPv4 tunneling driver[ 8.780000] ipt: xt_cgroup_MARK installed ok.[ 8.850000] ip_set: protocol 6[ 9.140000] sstack_init[ 10.430000]


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭