何当共剪西窗烛
唯有踏浪执子归 人不怜我我自怜

梅林固件384分支非华硕路由移植,WAN口显示注意事项

事情起因于移植梅林固件到DIR-868L上,发现一个不大不小的BUG。就是在有限的代码中修改了wan和lan口的顺序后,实际的物理网口顺序改变,但是网络地图上显示的顺序还是没变。

遍历了所有的C源码,能改的都改了,还是不行,又问了问之前移植梅林的人,热脸贴冷屁股,爱搭不理。

而今终于发现问题所在:

httpd: prevent httpd crash in ej_get_wan_lan_status() when ATE return…

…s an error

If there is no connected Ethernet client, ATE Get_WanLanStatus returns ATE_ERROR
in addition to the port status, causing the json parsing to crash httpd.

rc/sysdeps/broadcom/broadcom.c:GetPhyStatus() is now closed source, so as a
workaround we take care of handling that error message in
ej_get_wan_lan_status() instead.

如以上梅林github上的一个commit中提到的,原先的分支380中,是有rc/sysdeps/broadcom/broadcom.c这个文件的,其中wan_lan_ports的显示顺序写在GetPhyStatus()方法中,可以通过改这个文件该顺序。

然而在384及以后的分支中,broadcom.c闭源了,成了rc/prebuild/RT-AC68U/broadcom.o文件,这是编译过后的elf文件。

而要想改线序,就必须反编译broadcom.o文件,而具体怎么改,我还没研究出来。

只是弄清楚一件事情,顿时变得十分舒心,因为除了原版梅林外,其它的改版梅林现阶段基本上源码停留在380分支上,broadcom.c还没有闭源,所以380分支以前移植到其它机型,可以修改broadcom.c文件而改掉梅林在网络地图中和SYSinfo中的wan口显示顺序,但是384分之后该文件闭源了,移植修改估计我是第一个遇到此问题的,后续将通过研究反编译啃掉此硬骨头。

再说一句,后续移植的梅林固件可能新增一套ROG皮肤,就是红色的那款比较拉风的皮肤,嘿嘿。

 

赞(0) 打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《梅林固件384分支非华硕路由移植,WAN口显示注意事项》
文章链接:https://www.bigxd.com/2019/03/525.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 1

评论前必须登录!

 

  1. #1
    Avatar photo

    这个问题已经解决了?厉害!估计你是第一个解决这个问题的吧,包括EA6700在内,好像都有类似问题

    乐乐4年前 (2020-03-10)

觉得文章有用就打赏一下文章作者

微信扫一扫打赏