朋友送我一个坏的小米路由器4,他也不知道故障是如何产生的,总之就是坏了,丢家里很久了,过年清理杂物终于翻出来,知道我喜欢折腾路由器,就丢给我研究了。
这个路由器很奇葩,路由器背面写着小米路由器4,硬件是MT7621+ MT7612EN+MT7603EN ,内存128MB,闪存128MB NAND,小米官网没有这个型号。唯一一个型号相近的是小米路由器4A千兆版。网上搜了下小米路由器4A的参数,发现小米路由器4A除了闪存换成了16MB的spi闪存,其他硬件和这个没有区别。但是主板布局走线有很大不同。小米路由器4A已经改成电解电容了。而我手里这个仍旧是固态电容。
正好赶上肺炎肆虐,呆在家里没有事情,就拿出来研究下,琢磨了很久发现可能是CPU坏了,于是吭哧吭哧折腾着换了一个MT7621CPU,刷了R3G的老毛子固件,正常。唯一不爽的是,R3G的内存是256MB的,而这个路由器是128MB内存,刷了R3G的毛子固件以后,内存显示256MB,这样很不稳定的,一旦超过物理内存,就会内核崩溃。老毛子固件的机制是直接把内存大小写在固件里,这个和openwrt完全不同,openwrt是读取bootloader提供的内存大小。
然后去下载了padavan的代码,一顿编译,固件是做出来了,但是没有我想要的功能,加上不太熟悉毛子固件编译的修改,弃坑转而研究openwrt。
有人可能会问,R3G在breed下面不是不能刷openwrt吗,实际上这个问题已经解决了,这里先挖个坑,一篇讲不完,咱们下篇再说。
然后1月2号的时候更新了某大雕的源码,编译了X86的固件,正常使用没有问题。于是就操刀开始编译R3G的openwrt固件。结果刷进去之后,LAN口死活无法获取IP地址。ifconfig显示lan口的IP地址是192.168.127.1,而WAN可以获取IP地址,这就很奇葩了。由于从来没有怀疑是源码有bug,一度让我以为是不是换上去的MT7621内部集成的交换机有问题,差点想重新再换一片CPU试试,幸好手里没有多余的CPU芯片而作罢。
不死心,以为小米更改了设计,也许这个R4千兆版和R3G的网口硬件顺序定义不同导致R3G默认的VLAN划分不适合这个机器。结果试了各种组合,故障依旧。最后编译一个新三的固件,刷到新三一看,LAN口同样无法获取IP地址,这才如梦初醒,原来是他喵的源码有问题!
当然我这里不是吐槽某大雕,毕竟这不是他的锅,根源在于openwrt的snapshot本来就是实验版本,bug多少几乎是必然的,只是没想到让我在这里中招了,浪费了许多时间。另外要赞一下大雕,他的开源精神值得所有的openwrt爱好者学习。具体名字这里就不方便说了,懂的自然懂,不懂的也不需要懂,哈哈哈。
现在开始回退到之前比较老的版本重新编译,希望问题能解决。
网友评论