
说实话这台小米路由器4A千兆版我已经折腾过不止一次了。最开始只是觉得原厂固件后台操作偶尔卡顿晚上指示灯又亮得实在睡不着就想着刷个更可控的固件。后来一路走下来发现整个过程比想象中复杂的地方不是“刷”这个动作而是刷之前的识别、备份和参数匹配。这篇文章把我的完整操作记录和踩坑经历整理出来适合手里正好有这台机器、想提高稳定性和可玩性、同时也想让夜间灯光不再刺眼的朋友参考。1. 刷机前的基本功硬件识别、固件选型与备份逻辑1.1 千兆版和百兆版到底差在哪小米路由器4A这个型号下其实有两个硬件版本一个百兆版一个千兆版外壳看起来几乎一模一样但主板方案完全是两回事。千兆版用的是MT7621DA双核处理器频率880MHz内存128MB闪存16MB2.4G芯片是MT7603EN5G芯片是MT7612EN百兆版用的是MT7628AN这类单核方案内存64MB所有网口均只有百兆速率。这个区别直接决定了后面刷机时的固件选择因为Breed引导器和Padavan固件都是按CPU平台和无线芯片方案区分的。刷错版本最轻的是开机无Wi-Fi最重的是彻底变砖。所以刷机前第一件事就是确认你手上到底是不是千兆版。怎么确认我最推荐的办法是拆机看主芯片丝印MT7621DA就是千兆版。不想拆机的话看管理后台里的WAN口连接速率如果显示1000Mbps基本可以确认是千兆版再或者看机身底部标签上面会印着“千兆版”字样。有些批次外壳上的型号标识不太显眼容易混淆所以从后台确认更稳妥。1.2 Breed与Padavan的分工逻辑很多第一次刷机的朋友容易把Breed和Padavan混在一起其实它们的角色完全不同。我习惯用电脑来打比方Breed相当于BIOS/UEFI引导器主要负责硬件初始化和引导系统Padavan则是操作系统本身。电脑装系统之前你得先确保引导器能正常工作路由器也是一样。Breed的核心价值有两个一是刷机兜底操作系统的固件刷坏了只要Breed还在按住复位键上电就能进入恢复界面重新刷二是刷机便利它提供网页版控制台不用命令行也能备份、刷写固件。等于说刷入Breed之后这台路由器就获得了很高的“容错率”后续怎么折腾都有后悔药吃。Padavan则是基于华硕路由器固件二次开发的第三方系统老玩家习惯叫它“老毛子”固件。相比小米原厂系统它最大的优势是功能组织清晰、内核驱动维护更积极内置了流控、广告过滤、DDNS、KMS等功能后台界面也直观很多。对于这台百元级路由器来说刷上Padavan之后硬件潜力才算真正释放出来。1.3 备份思维为什么必须先备份Factory分区我见过太多人刷完机之后无线信号奇差甚至5G彻底消失排查半天最后发现是Factory分区也叫eeprom没有备份刷机过程中被覆盖或者损坏了。Factory分区里保存的是每台设备出厂时校准的无线参数包括2.4G和5G的发射功率、频偏数据、射频调校信息。每一台机器的数据都不完全一样固件可以随便换但这个分区里的数据是属于你这台设备独有的。它丢了之后网上找别人的eeprom虽然能应急但发射功率、频偏未必匹配你的硬件信号表现会打折扣。所以在刷Breed之前我强烈建议先把Bootloader和Factory这两个分区备份出来存到电脑里。整个备份过程只需要几十秒但能避免后面几小时的折腾。这个操作的具体命令下面讲开启SSH时一起给出。2. 通过原厂固件漏洞开启SSH进入路由器系统2.1 命令注入的初步原理与Stok的作用小米路由器原厂固件里后台管理是通过一个叫stok的令牌来鉴权的。你每次登录路由器后台之后地址栏URL里都会带一段stokxxx的字符串这个令牌相当于当前管理会话的“钥匙”很多操作接口都依赖它。问题在于原厂固件里有一部分接口在拼接命令时没有对参数做严格的过滤这就给了命令注入的空间。简单说一个本来用于修改无线密码的接口会在系统里执行类似iwconfig ... 密码这样的命令如果我们把密码参数改成新密码;telnetd -l /bin/sh -p 99/这种形式分号后面的内容就会被系统当成新的命令执行从而在路由器上启动一个telnet服务。这个思路听起来像漏洞攻击但对于玩家来说它其实就是官方固件预留的“解锁通道”。刷第三方固件本质上就是这样先用一定手段进入系统然后把引导器换掉后面的操作就不再受原厂限制。2.2 从登录后台到telnet和SSH的具体步骤先确保路由器能正常联网电脑有线连接路由器的LAN口。登录192.168.31.1用管理员密码进入后台。登录成功后地址栏会变成类似这样http://192.168.31.1/cgi-bin/luci/;stokabcdef1234567890/web/home把stok后面对应的字符串复制出来这就是当前会话的令牌。然后打开一个新的浏览器标签页访问下面的地址把oldPwd替换成当前后台密码newPwd替换成你想设置的新密码并在最后加上注入的命令http://192.168.31.1/cgi-bin/luci/;stok你的stok/api/xqsystem/set_wifi_password?oldPwd当前密码newPwd新密码;telnetd -l /bin/sh -p 99/访问之后页面可能会返回一段JSON数据显示“密码修改成功”之类的内容不用管它关键看telnet端口是否已经监听。终端执行telnet 192.168.31.1 99如果能看到/ #之类的提示符说明已经进入路由器的root shell了。Windows用户建议用PuTTY连接原生的telnet客户端虽然能用但粘贴长命令时体验不好。进入shell之后第一步看分区表cat /proc/mtd输出内容类似下面这样不同固件版本分区数量可能不一样但关键的两个分区名称一般就是Bootloader和factorydev: size erasesize name mtd0: 00030000 00010000 Bootloader mtd1: 00010000 00010000 Config mtd2: 00010000 00010000 Bdata mtd3: 00100000 00010000 factory mtd4: 00e00000 00010000 kernel mtd5: 00e00000 00010000 rootfs mtd6: 01000000 00010000 OS1 mtd7: 00180000 00010000 rootfse先把Bootloader和factory分区备份出来cat /dev/mtd0 /tmp/backup_Bootloader.bin cat /dev/mtd3 /tmp/backup_factory.bin备份文件生成在/tmp目录下。为了把文件下载到电脑可以先启动dropbeardropbear然后用WinSCP等工具通过SCP协议连接路由器用户名root密码填你当前后台密码端口22把/tmp下的两个备份文件下载到电脑本地。存好之后后续就算刷机出问题也能靠这两个文件恢复。2.3 用mtd_write写入Breed的完整命令与注意点备份完成后开始上传Breed镜像。小米4A千兆版对应的Breed镜像是breed-mt7621-pci-mt7603-mt7612.bin其中pci表示无线芯片走PCIe接口。不同来源的文件名可能有细微差别但凡是MT7621MT7603MT7612这个组合的Breed基本都能用。把文件通过SCP上传到路由器的/tmp目录后执行写入命令mtd_write write /tmp/breed-mt7621-pci-mt7603-mt7612.bin Bootloader如果固件版本较老mtd_write命令不存在可以试试mtd -r write /tmp/breed-mt7621-pci-mt7603-mt7612.bin Bootloader写入过程中会看到类似这样的输出Unlocking Bootloader... Writing from /tmp/breed-mt7621-pci-mt7603-mt7612.bin to Bootloader ...整个写入过程一般不超过30秒。写完之后千万别急着断电我建议至少等两分钟让闪存的数据彻底稳定下来。刷Breed后立刻断电导致引导区数据不完整的情况我见过不止一次属于低概率但后果严重的操作完全没必要赌。3. 进入Breed控制台烧录Padavan固件3.1 Breed的进入方式与界面功能说明Breed写入完成后路由器的引导方式就变了。以后想进Breed控制台方法是拔掉电源用尖锐物体按住机身RESET孔或RESET键不要松手重新插上电源保持按住大约5到10秒看到指示灯出现特殊闪烁状态再松手。这时电脑有线连接路由器的LAN口浏览器访问192.168.1.1就能看到Breed Web恢复控制台。如果打不开手动把电脑网卡的IPv4地址改成192.168.1.100子网掩码255.255.255.0网关192.168.1.1刷新页面再试。Breed控制台的主要菜单项我整理了一张表菜单作用使用建议固件更新刷写完整固件镜像或单独分区刷Padavan时选这个恢复出厂设置清空配置、NVRAM等刷机前后使用防止配置残留环境变量编辑修改MAC、SN等参数一般不需要动除非换主板LED和GPIO控制控制LED灯颜色和GPIO输出刷机阶段观察状态可用备份编程器固件备份整颗闪存内容强烈建议做一次完整备份重启重启设备操作完成后使用第一次进入Breed之后我建议先做一次完整的编程器固件备份把整颗闪存的内容保存下来。这个备份文件平时用不到但万一以后需要恢复成出厂状态它就是最完整的“整机镜像”。3.2 Padavan固件选择的几个判断标准Padavan的编译版本非常多不是随便下一个就能用的。选固件时我主要看三个标准。第一看源码分支是否包含这台机器对应的无线方案。小米4A千兆版的无线芯片是MT7603ENMT7612EN固件必须内置对应的驱动和初始化参数否则刷完会出现无Wi-Fi的情况。第二看功能是否符合需求不要贪多。我个人偏好较纯净的版本比如hanwckf的nano分支或chongshengB的简洁版基础功能都有系统资源占用少。Hiboy的版本功能很全但预装组件太多长期运行内存占用偏高4A千兆版虽然128MB内存但剩余空间不如纯净版充裕。第三看维护时间和社区反馈。尽量选择近半年内有更新的版本不要只因为某篇帖子说“稳定运行一年”就选老版本。路由器的固件直接暴露在公网上安全性更新很重要老版本可能存在已知漏洞。下载固件时留意文件名一般会标注MI-4A、MI4A_100M等字样。文件后缀是.trx的属于完整固件镜像可以直接在Breed里刷。3.3 Breed中刷固件的实际操作与双保险在Breed控制台里选择“固件更新”然后注意两个选项区域一个是“固件”一个是“eeprom”。“固件”区域点击选择文件选中下载好的Padavan trx文件。Breed会自动识别镜像格式然后点击上传等待MD5校验和写入完成。“eeprom”区域要特别注意Breed在刷入固件时默认会保留原厂的Factory分区也就是eeprom数据除非你手动选择覆盖。我建议这里留空不放文件让Breed自动保留原厂eeprom。如果你发现固件刷完之后无线信号异常再回到Breed里单独刷一次自己备份的factory分区即可这就是双保险的意义。固件写入完成后先别急着点重启。我习惯先点“恢复出厂设置”把可能残留的旧配置清空再重启这样进入系统时不容易出现配置冲突导致的奇怪问题。点重启之后Breed会引导进入刚写入的Padavan系统。如果刷完黑屏、指示灯全灭也别慌重新按住RESET进Breed确认固件文件是否选对再刷一次。3.4 首次启动的初始化验证顺序Padavan首次启动后默认管理地址一般是192.168.2.1管理账号和密码都是admin。有些版本默认地址可能是192.168.123.1或192.168.1.1如果打不开可以用ipconfig查看电脑获取到的网关地址来确认。登录之后按顺序做这几件事修改默认密码避免设备暴露在局域网风险中。设置Wi-Fi名称和密码确认2.4G和5G都正常广播。在无线设置里把国家代码设置为CN这个参数会影响信道列表和发射功率上限。把WAN口接上光猫在“外部网络-外网设置”里选择PPPoE拨号填入宽带账号密码测试能否正常获取IP。做5分钟稳定性测试Ping网关、Ping外网、测无线速率。这里有一个细节不同作者的Padavan版本WAN口的物理映射可能不一样。也就是说背面四个LAN口中哪个口被当成WAN口使用不是统一的。首次启动后如果拨号不成功先到“系统状态”页面看接口状态确认哪个网口被识别为WAN再决定怎么插线。4. 关闭LED灯后台配置与GPIO命令实战4.1 为什么一定要把LED灯关掉这个需求可能有人觉得小题大做但如果你家卧室空间小路由器只能放床头柜晚上那几颗灯珠亮着就像一个小型夜灯翻个身都能被晃到。我也想过用黑色胶布贴掉但时间一长老化留胶还会影响散热通风。最优雅的办法当然是从软件层面把灯彻底关掉。原厂固件里其实没有提供关闭LED的选项想关灯要么拆机剪线要么只能忍受。刷了Padavan之后就不一样了LED的控制逻辑完全开放既可以在Web界面里简单勾选也可以通过GPIO命令精确控制每一颗灯灵活性高很多。4.2 Padavan自带的LED控制功能怎么用大部分Padavan版本在后台都能直接设置LED灯。常见位置在“系统管理-服务-其他服务”里会有一个“LED灯控制”区域不同编译版本的入口名称略有差异有的叫“关闭LED灯”有的叫“LED控制模式”都是在高级设置或者系统管理的子菜单里。这个方式的优点是操作简单勾选保存就能生效。但有一个问题部分版本的“LED灯控制”只控制系统状态灯网口状态灯不在控制范围内结果就是电源灯和Wi-Fi灯灭了网口的灯还在一闪一闪的。如果你遇到这种情况或者根本找不到后台的LED选项那就要上GPIO方式了。4.3 通过GPIO命令彻底熄灭LED的步骤Padavan系统底层是Linux每一颗LED灯本质上是由一个GPIO引脚驱动的。系统提供了gpio命令可以直接读写GPIO状态所以关灯的本质就是找到每颗灯对应的GPIO编号然后把电平设为“灭”的状态。先登录SSH执行不带参数的gpio命令它会列出当前所有GPIO状态输出格式类似gpio 0: 0 (input) gpio 1: 1 (output) gpio 13: 0 (output, level 0) ...想找出哪个GPIO对应哪颗LED最快的办法是逐个测试。执行gpio 13 0 gpio 13 1观察对应LED灯状态有没有变化。如果某一颗灯的亮灭状态跟着变化说明这个编号就是它的控制脚。需要注意的是0和1哪个代表灭取决于硬件电路是高电平点亮还是低电平点亮不同设备设计方案可能相反所以测试时要两个值都试一下。找到映射关系后把需要关闭的灯全部设为灭。我在这台小米4A千兆版的某个Padavan版本上实测下来控制电源灯的是GPIO 13互联网状态灯是GPIO 14无线相关的是GPIO 15和GPIO 16附近具体编号在当前固件下可能偏移一定要以实际测试为准。把这个关灯操作写进开机自启脚本位置在“系统管理-设置-自定义脚本0开机启动脚本”里。编辑这个脚本在末尾追加内容然后应用设置sleep 10 gpio 13 0 gpio 14 0 gpio 15 0 gpio 16 0有个细节值得注意脚本前面为什么要加sleep 10因为系统开机过程中网络驱动和无线模块会在初始化时重新设置LED状态如果开机脚本执行得太早关灯动作会被后续的初始化程序覆盖结果灯灭了一下又亮回来。等10秒再关相当于在系统完成初始化之后再做最终干预实测有效。设置完成之后重启路由器验证如果一切正常开机后等待十几秒LED就会保持熄灭状态不会再亮。4.4 关灯过程中我踩过的三个坑第一个坑是照着网上的GPIO编号盲抄。我一开始就是抄了一篇帖子里的编号结果执行完不但没关掉指示灯反而把另一颗本来不亮的灯点亮了情况变得更糟。后来才意识到不同编译版本的Padavan对GPIO编号的映射并不完全一致必须用当前固件实际测试不能直接跨版本照搬。第二个坑是命令执行成功了但重启后灯又亮了。原因就是前面说的命令只是临时生效没有写进开机自启脚本或者写了脚本但没加sleep被系统初始化过程覆盖。把sleep 10加上之后这个现象就消失了。第三个坑是Breed里的LED配置和系统里的配置搞混。Breed的“LED和GPIO控制”只能影响Breed运行阶段的状态刷完系统之后LED的最终状态由系统自己接管。所以想关灯重点是在Padavan系统里配而不是在Breed里调。5. 刷机后的实测结果与日常使用观察5.1 连续运行一个月的稳定性和发热表现这台4A千兆版刷完Padavan之后我放在家里当主路由连续运行了一个月没有主动重启过一次。期间每天正常使用家里大概十几个设备连接包含手机、电脑、电视、智能家居设备整体表现稳定没有出现断流或者后台无响应的情况。原厂固件偶尔出现的“管理页面卡死”现象在Padavan上没再遇到过。发热方面MT7621DA这颗处理器的功耗本身就不高加上Padavan对CPU调度更高效机身外壳摸上去只是温热比原厂固件长时间运行后的烫手感觉要好一些。当然这也和放置位置通风有关系路由器尽量别塞在密闭弱电箱里。内存占用方面纯净版Padavan开机后空闲内存大约在80MB以上运行一个月的整体占用也就多了十几MB余量很充足。如果选的是功能全的版本空闲内存会少一些但日常使用也够。5.2 2.4G与5G信号在不同位置的实测我简单做了一下信号对比测试用手机连接Padavan的Wi-Fi在同一位置分别记录信号强度。测试位置2.4G信号5G信号说明路由器旁1米-35dBm左右-40dBm左右均满格隔一堵墙-55dBm左右-65dBm左右5G略降可正常用隔两堵墙-68dBm左右不稳定建议使用2.4G最远卧室-75dBm左右搜索不到2.4G可勉强使用这个结果和原厂固件相比差别不大毕竟信号覆盖硬件决定固件影响有限。真正明显的差异是连接的稳定性Padavan在弱信号环境下重连速度比原厂固件更快不会长期卡在“已保存但无法访问互联网”的状态。5.3 折腾完之后回头看刷Breed和Padavan到底值不值如果只看功能层面刷机之后获得的最大收益其实是可维护性。原厂固件一旦厂商停止更新路由器的安全性就停滞了而Padavan社区还在持续维护相当于这台硬件能继续获得新的安全修复和功能优化。对于一台百元级路由器来说这种“续命”能力非常关键。至于LED灯关闭这件事反而成了我周围朋友体验最直观的改动。灯灭了晚上再也不用承受那一排小夜灯的干扰这个体验上的提升虽然不起眼但每天都在受益。如果你也受不了路由器上的指示灯强烈建议刷完系统之后顺手把这个配置做掉。