恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10593|回复: 59

[k2p] 发一个 K2P B1 华硕 3.0.0.4.382.50624 固件

    [复制链接]
发表于 2019-3-29 22:57 | 显示全部楼层 |阅读模式
本帖最后由 spoon 于 2019-3-31 07:52 编辑

链接:https://share.weiyun.com/5IffjRh 密码:evsu87
主要是家用,希望放在一边稳定运行不用管,所以只留下了必要的基础功能,如果你也有同样需求的话可以下载。

启用的功能有:
IPV6SUPP AUTODICT BBEXTRAS EBTABLES GRO DNSMQ SHP MDNS REBOOT_SCHEDULE JFFS2 SSH UTF8_SSID PROXYSTA REPEATER QUAGGA

使用的配置项列表为:
  1. export RT-AC1200G+ := IPV6SUPP=y ARM=y BCM57=n AUTODICT=y BBEXTRAS=y EBTABLES=y PARENTAL2=n GRO=y APP="none" DNSMQ=y SHP=y NVRAM_64K=y RTAC1200G=y BCMWL6=y BCMWL6A=y TUNEK="n" BCM5301X=n LANWAN_LED=n OPTIMIZE_XBOX=n MDNS=y DUMP_OOPS_MSG=y DEBUGFS=n BCM9=y TEMPROOTFS=y BTN_WPS_ALLLED=n REBOOT_SCHEDULE=y JFFS2=y JFFS2LOG=n HTTPS=n SSH=y ODMPID=n LAN50=y ATCOVER=n GETREALIP=n SW_HW_AUTH=y NATNL_AIHOME=n UTF8_SSID=y BUILD_NAME="RT-AC1200G+" ACCEL_p p t pD=n PROXYSTA=y NEW_USER_LOW_RSSI=y virtual**C=n REPEATER=y DISABLE_REPEATER_UI=y MULTICASTIPTV=n QUAGGA=y NO_SAMBA=y NO_FTP=y NOIPTV=y
复制代码
如果其中去掉了你需要的功能,你也可以自己下载源码编译(建议把 BTN_WPS_RST=y  NO_USBSTORAGE=y 加上,我编译的时候忘了加),并不复杂。

  • 适配 GPIO、去掉首页 USB 元素、修正系统信息 -> 状态 -> Ethernet Ports 的 LAN WAN 口数据
  • 修正 WAN LAN 口顺序和路由器背板一致
  • 去掉 watchdog 中和 usb 相关的代码(避免 stop_usb_program 链接错误)
  • 移除 conn_diag.o 相关链接代码(避免 is_usb_modem_ready 链接错误)
  • 精简了语言包,只留下中英文

asuswrt_1200gplus_k2pb1.PNG

刷机照A大的梅林贴刷即可,刷前建议备份 flash 数据。刷完之后建议初始化到原厂默认值一次,再按A大帖子里说的设置好自己的 MAC 地址(注意这有一个坑,他写的是 nvram set w1_hwaddr ,正确的应该是 nvram set wl_hwaddr,又是一个 1 和 l 看错的问题)。
开关 LED 灯需要进入 SSH 执行命令: led_ctrl 0 0 (关 pwr 灯)/ led_ctrl 0 1 (开 pwr 灯)。注意 SSH 在系统设置中启用之后要重启一次路由器才能正常进入。




如果你想自己编译固件,这里有我这几天的编译固件的一点经验,适合新手,老手请指点:
  • 编译固件的操作流程可以参考 http://blog.iytc.net/wordpress/?p=2193https://boshuwan.com/post/netgear-r6220-tenda-ac9/ 的帖子,源码在 https://www.asus.com/Networking/RT-AC1200G-plus/HelpDesk_Download/ 下载,OS 选 other 就可以看到 Source Code 了。
  • 选 Fedora 来做编译系统,安装依赖项时会更轻松一些,我用 Fedora 29 x64 Server 来编译很顺利。按源码压缩包根目录下的 README 里的说明来安装包就可以了,确认包全部安装好了再去编译。
  • 对 target.mk 里的各个配置项,可以在 asuswrt/release/src-rt/Makefile 里找到与它们相关联的 RTCONFIG 选项,同时可以了解到怎么启用和关闭它们。比如像 USB 选项,只有在 if [ "$(USB)" = "USB" ] 的条件下才会开始生效,那省略 USB 项即可。
  • 对每个 RTCONFIG 选项,在 asuswrt/release/src/router/config/config.in 有它们的简单解释和默认值,可以帮助你了解这些开关的作用。如果解释得不太清楚,可以去 github 上的梅林源搜一下这个 RTCONFIG ,看看和它有关系的源码,或者你用 DocFetcher 建一个源码的全文搜索来搜更好。asuswrt/release/src/router/config_base 里有所有 RTCONFIG 项的汇总,可以做更细致的调整。


在源码 asuswrt/release/src-rt-9.x/src/router/rc/init.c 中 case MODEL_RTAC1200GP 下配置 GPIO 值:

nvram_set_int("btn_rst_gpio", 9|GPIO_ACTIVE_LOW);
nvram_set_int("btn_wps_gpio", 7|GPIO_ACTIVE_LOW);
nvram_set_int("led_pwr_gpio", 3|GPIO_ACTIVE_LOW);
nvram_set_int("led_wps_gpio", 10);
nvram_set_int("led_usb_gpio", 11|GPIO_ACTIVE_LOW);

同时将 add_rc_support("mssid 2.4G 5G usbX1"); 中的 " usbX1" 去掉,就可以去掉首页的 USB 图标了。


修改 WAN LAN 口顺序:
  • 在源码 asuswrt/release/src/router/rc/sysdeps/init-broadcom.c 搜索 case MODEL_RTAC1200GP: ,修改 const int ports[SWPORT_COUNT] = { 0, 1, 2, 3, 4, 8 }; 为 const int ports[SWPORT_COUNT] = { 4, 0, 1, 2, 3, 8 }; 就和 K2P 背板的网口顺序对应了。
  • 修改 asuswrt/release/src/router/httpd/web.c 的 ej_get_wan_lan_status 方法,添加一个 int port_order 局部变量,修改其中一部分代码为:

static int
ej_get_wan_lan_status(int eid, webs_t wp, int argc, char **argv)
{
        FILE *fp;
        char line[128], name[sizeof("WAN XXXXXXXXXX")], *ptr, *item, *port, *speed;
        int wan_count, lan_count, ret = 0;
        int port_order = 0; // *changed

        struct json_object *wanLanStatus = json_object_new_object();
        struct json_object *wanLanLinkSpeed = json_object_new_object();
        struct json_object *wanLanCount = json_object_new_object();

        if (wanLanStatus == NULL || wanLanLinkSpeed == NULL || wanLanCount == NULL)
                goto error;

        fp = popen("ATE Get_WanLanStatus", "r");
        if (fp == NULL)
                goto error;

        ptr = fgets(line, sizeof(line), fp);
        pclose(fp);

        wan_count = lan_count = 0;
        port_order = 0; // *changed
        while ((item = strsep(&ptr, ";\r\n")) != NULL) {
                if (vstrsep(item, "=", &port, &speed) < 2)
                        continue;
#if defined(DSL_AC68U)
                if(port[0] == 'W') {
                        continue;
                }
#endif
                switch (*port++) {
                case 'W': // *changed
                case 'L':
                        if (port_order == 4) // *changed
                        {
                                snprintf(name, sizeof(name), "%s", "WAN 0");
                                wan_count++;
                        } else { // *changed
                                snprintf(name, sizeof(name), "%s%s%s", "LAN", *port ? " " : "", port);
                                lan_count++;
                        }
                        port_order++; // *changed
                        break;
                default:
                        continue;
                }
                json_object_object_add(wanLanLinkSpeed, name, json_object_new_string(speed));
        }
...
}

因为我只用单 WAN,就用这种最简单的方式修改了,适用性比较窄。修改前端页面 asuswrt/release/src/router/www/device-map/router_status.asp 里呈现数据的 get_ethernet_ports 方法会更好些。


需要去掉 USB 模块,不然刷进去会无限重启。去掉 USB 模块之后,有这么三处地方需要手动更正:
  • 在源码 asuswrt/release/src/router/rc/watchdog.c 中 #ifdef RTCONFIG_BCMARM ... #endif 的代码块有三处,把其中的1、3处注释掉。
  • asuswrt/release/src/router/rc/Makefile 中 OBJS += $(if $(wildcard conn_diag.c),conn_diag.o,prebuild/conn_diag.o) 一句注释掉。
  • asuswrt/release/src/router/rc/ 中 rc.h 和 rc.c 中的 extern int conn_diag_main(int argc, char *argv[]); 和 { "conn_diag",     conn_diag_main }, 注释掉。


在 asuswrt\release\src\router\www\Makefile 可以修改管理页面显示的路由器型号,搜索 ifeq ($(RTCONFIG_AUTODICT), y) 找到如下代码,对比修改:

ifeq ($(RTCONFIG_AUTODICT), y)
        # now dict prep will generate necessary dict files to dest dir
        rm -f $(INSTALLDIR)/www/*.dict
        # Tool dir , dictctrl.txt , modem name , header mapping , src , dst , output msg file
        $(ASUSWRTTOOLSDIR)/LnxDictPrep $(ASUSWRTTOOLSDIR) dictctrl.txt K2P HdrMapping.txt . $(INSTALLDIR)/www $(SRCBASE)/image/dictenum.txt $(SRCBASE)/image/dict_prep.txt # *changed
        # generate sh file for clear up html and dict auto enum
        # this is for compression
        $(ASUSWRTTOOLSDIR2)/genshfile.pl $(ASUSWRTTOOLSDIR2) $(INSTALLDIR)/www $(SRCBASE)/image/compress.sh $(SRCBASE)/image/dictenum.txt $(SRCBASE)/image/output2.txt $(BUILD_NAME) $(SRCBASE)/image/output3.txt
        chmod 777 $(SRCBASE)/image/compress.sh
        sh $(SRCBASE)/image/compress.sh
else
        for F in $(wildcard *.dict); do \
                ./gendict.pl K2P $$F $(INSTALLDIR)/www/$$F; \ # *changed
        done
endif

就是把其中的两处 $(BUILD_NAME) 换成了 K2P,注意中间那处不要替换。直接改 target.mk 里的 BUILD_NAME 效果相同,但是可能会造成副作用,单独改这块放心些。另外还要在 asuswrt/release/src/router/tools/Lnx_AsusWrtDictPrep/dictctrl.txt 新添加一个设备:

[MODEL]
K2P
EN,CN


就可以了。

评分

参与人数 7恩山币 +9 收起 理由
259179 + 1 强大的恩山!(以下重复1万次)
271595667 + 1 A大走了没官改了,看看自己编译梅林怎么样
php.c + 2 强大的恩山!(以下重复1万次)
鈡渝 + 1 上分。btw,大家用得怎么样?有中文ssid跟ipv6,是吧?
milan + 1 强大的恩山!(以下重复1万次)
j4444 + 2 率全体恩山路由党以及党魁向你学习!
lys0529 + 1 强大的恩山!(以下重复1万次)

查看全部评分

本帖被以下淘专辑推荐:

我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-29 23:04 来自手机 | 显示全部楼层
感谢分享。。。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-29 23:05 来自手机 | 显示全部楼层
不错不错,谢谢感谢
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-30 06:40 | 显示全部楼层
谢谢分享      
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-30 09:36 | 显示全部楼层
感谢分享,下载个试试水。
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-30 10:49 | 显示全部楼层
感谢分享,有空刷了试试。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-30 12:33 来自手机 | 显示全部楼层
感谢分享,支持了!!!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-30 12:38 | 显示全部楼层
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-30 16:44 | 显示全部楼层
感谢分享,支持了!!!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-30 16:52 来自手机 | 显示全部楼层
多谢分享!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-30 19:29 | 显示全部楼层
运行几小时,没问题,继续用。
捕.PNG
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-31 08:47 | 显示全部楼层
好贴,顶起来
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-31 11:11 来自手机 | 显示全部楼层
感谢分享。。。去掉了升级提示吗?

点评

去掉了,但是没法验证是不是去除成功了,AC1200G+上次官方固件更新还是去年5月,大概不会有更新推送了吧  详情 回复 发表于 2019-3-31 15:29
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2019-3-31 15:29 | 显示全部楼层
本帖最后由 spoon 于 2019-3-31 15:32 编辑
auldey 发表于 2019-3-31 11:11
感谢分享。。。去掉了升级提示吗?

去掉了,但是不知道是不是去除成功了,AC1200G+上次官方固件更新还是去年6月,大概不会有更新推送了吧
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-3-31 15:32 | 显示全部楼层
66666666666666666666666666666666
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2019-9-21 02:18

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表