这是一个5年前留下的坑,12年买的EA6500v1,港版,5G频段只能看到 36,40,44,48,中国能用的不给用。
最近几年一直在用华硕系,两个ac68u两个ac88u,EA6500v1一直在吃灰,原配的电源适配器(12v2A)也被我挪走他用了。
想把EA6500送人吧,但是又觉得如果5G频段没解锁,别人用起来也尴尬。想当年,因为802.11d的原因,macbook经常找不到5G的SSID,我只能强制连一个Country Code是US的别人家的WiFi,才能看到_5GHz的。
后来试过DD-WRT解锁,因为不稳定,所以想解锁了再切回来,但是没用。
中间看到过 https://securityevaluators.com/knowledge/case_studies/routers/linksys_ea6500.php 这个安全报告,也试着写了个脚本去构造备份文件上传,试图直接启用频道,未果。
后来看到DD-WRT的Wiki上有张图,标识了主板上的几个点,可以用console直接来改设备,于是买了ttl卡,直接开搞。
图在这里:
EA6500v1 固件 1.1.29.162351 在这里 https://dl.sskaje.me/EA6500/
USB-TTL、杜邦线、排针(5pin)
CoolTerm (Windows下可以用PuTTY)
固件可以用 binwalk 直接解包,mac下squashfs没法搞,所以我直接去linux下操作的。期间还会需要 sasquatch,从https://github.com/devttys0/sasquatch 下载,然后build即可。
我把解包好的目录打了个包,可以从这里下载。
TTL板我从淘宝上买了个,链接是 https://detail.tmall.com/item.htm?id=16809187607 ,选了个偏贵的。
里边送了杜邦线和排针,杜邦线一头6个针脚一体的,直接插上。
参考前边的EA6500主板图,Vcc/TxD/RxD/n.c./GND,其中GND的地线没有用焊锡填充,所以从TTL线送的排针里拿出一个,把最边上的针脚的高度调一下,使得排针不用刻意固定就能与主板上的焊点接触上。
TTL板的针脚有6个,VCCIO/GND/TXD/RXD/RTS/CTS。杜邦线对应的 Vcc 连 VCC,GND连GND,TxD连RXD,RxD连TXD,其他不接,按这个对应关系接好排针。

我的macOS High Sierra没有额外装驱动就识别到了串口设备。
CoolTerm 配置波特率 115200,其他默认。在CoolTerm主界面点Connect,确认排针已经稳定接触好焊点之后,给EA6500上电,就能看到CoolTerm里有输出了。
在启动的时候,按 ctrl + c,多按几次就能看到 CFE> 的提示符了。
之前在研究构造备份文件的方案时,看到syscfg里有好多code,例如 wl0_country_code, wl1_country_code, ccode, wl_country。
这回全改成US,启动之后就 wl: Bad Channel 了。
/etc/regccode 这个文件内容如下
1 2 3 4 5 |
APAC "EU" US "Q2/13" EMEA "EU" ETSI "EU" EU "EU" |
而,在CFE里,使用 devinfo show 看到的
1 2 3 4 |
wl0_country_code=EU wl1_country_code=EU ccode=EU wl_country=AP |
乱试几种组合都无效后,恢复了配置,然后从固件的启动脚本里找了找
1 2 3 4 5 6 7 |
$ grep -r country etc/init.d/service_wifi/ etc/init.d/service_wifi//wifi_platform_specific_setting.sh:set_driver_country_code() etc/init.d/service_wifi//wifi_platform_specific_setting.sh: wl -i $PHY_IF country $regioncode etc/init.d/service_wifi//wifi_platform_specific_setting.sh: echo "wifi, carrera $PHY_IF country code set $regioncode" #for debugging etc/init.d/service_wifi//wifi_platform_specific_setting.sh: set_driver_country_code etc/init.d/service_wifi//wifi_debug_suppliment.sh: echo "Country : `wl -i ${PHY_IF} country`" etc/init.d/service_wifi//wifi_debug_show_info.sh: echo "Country Regulation: `wl -i $INTF country`" |
于是看到了这个函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
set_driver_country_code() { if [ "`syscfg get device::modelNumber`" = "EA6500" ] && [ "`syscfg get device::hw_revision`" = "1" ] ; then ccode=`syscfg get device::ccode` regrev=`syscfg get device::regrev` if [ -z "$ccode" ] || [ -z "$regrev" ] ; then regioncode="Q2/13" #default to US else regioncode="$ccode/$regrev" fi for PHY_IF in $PHYSICAL_IF_LIST; do wl -i $PHY_IF country $regioncode echo "wifi, carrera $PHY_IF country code set $regioncode" #for debugging done fi } |
只要 ccode 和 regrev任意一个字段都是空的,系统就会默认到 Q2/13 这个code。
所以reboot,重新进入CFE。
操作命令如下
1 2 3 4 |
CFE> devinfo unset ccode CFE> devinfo commit CFE> nvram erase CFE> reboot |
进入系统后,终于看到新的频道被释放出来了。



Incoming search terms:
- ea6500 Ttl
- horsesvx
- wifi 頻道13 解鎖
- ruler55n
- riding44m
- originoah
- onyb8
- musicalva4
- mission864
- kitchenefx
- iron842
- houseurj
- air6fy
- EA6500 固件
- ea6500 原厂cfe
- EA6500 5G最大速度
- ea6500 5G
- depend58a
- cfe 0:regrev=0
- betterveq