这款型号路由器无法直接升级openwrt或ddwrt,需要通过TTL连接uboot完成。TTL端口暴露在主板上,无引脚,需要自行焊接。
路由型号: Buffalo AirStation N300
TTL连线
在主板上找到:

从左到右依次为 RX TX GND VCC。焊接后在外壳打孔穿出。
TFTP
直接使用开机后TFTP发送会遇到问题,问题原因可能为路由器端uboot无法arp计算机,根本原因可能是如下的“可能的连接问题”
可能的连接问题
可能由于HAGIBIS的USB Ethernet Adapter的问题,或是路由器重启(或电源插拔)时的电泳,每一次路由器重启会导致连接失效。具体表现为路由器无法向计算机发送数据,出现RequestARPTimeout等。也无法使用tftpboot连接至电脑。
uboot TFTP
-
连接ttl串口,Mac端输入
screen /dev/tty.SLAB_USBtoUART 115200
-
接上路由器电源
-
按Ctrl+C,进入
ar7240>
命令界面 -
将路由与计算机通过网线连接(或之前已连接,此情况下需要重置网卡驱动,可以使用:Linux:
modprobe -r r8152
然后modprobe r8152;Parallels虚拟机:将网卡设备在主机/虚拟机间切换;计算机:插拔USB网卡,但是同时会导致需要重新执行第1步) -
计算机端
sudo ifconfig 网卡 192.168.11.2
(enp0s29f6u1) -
sudo arp -s 192.168.11.1
路由器eth1的MAC地址(00:03:7F:09:0B:AD) -
为了证明网络通信状况,计算机端执行
nc -ulp 69
(Linux命令,若Mac下不需要-p参数)在路由器端执行
ar7240> tftpboot
若计算机端出现bufoctettimeout5,证明数据发送成功
-
计算机端执行:
tftp [192.168.11.1](在Linux下可能需要输入ip参数) tftp> binary tftp> trace tftp> rexmt 1 tftp> timeout 60 tftp> connect 192.168.11.1(若启动tftp的命令已经输入ip参数,不必执行此命令) tftp> put 固件文件名
-
路由器端执行
ar7240> TFTPS
-
接收完毕后,路由器端使用
ar7240> run u_fw
更新固件 -
8-10步也有替代方案,使用Linux端tftpd(未能成功)或Windows端Cisco TFTP Server(有成功过),并在服务根目录放入firmware.bin(文件名只能是这个),然后在路由器端执行:
ar7240> run ut_fw
注意:固件只能使用纯固件数据,开头magic为27 05 19 56,hexdump可以观察到ASCII字符: MIPS Linux Kernel Image。从dd-wrt官网下载的固件为trx格式,使用tftp形式刷新时应该先执行:
dd if=firmware.trx of=firmware.bin bs=1 skip=28 seek=0
,去除trx头部28字节。另外buffalo官方固件格式头部为bgn,中间有start等,此类固件被加密,不能直接使用在tftp更新(具体怎么做尚不知道)。
固件更改
固件更改使用的固件类型:从dd-wrt的WEB GUI界面上能够更新的固件,文件名类似为whr-g300nv2-firmware-MULTI.bin
-
cd firmware-mod-kit-read-only
-
./extract-firmware.sh ../fw/whr-g300nv2-firmware-MULTI.bin ../extracted/
第一参数为原始固件,第二参数为解包目录
-
./ipkg_install.sh ../ipkg/shadowsocks-spec.ipk ../extracted
第一参数为ipk路径,第二参数为工作目录
-
修改…/extracted/logs/config.log,修改其中的FOOTER_SIZE=‘0’,FOOTER_OFFSET=’<FW_SIZE>’(注意如果不是whrg300nv2的dd-wrt固件,应该首先观察第二步binwalk的输出,也就是…/extracted/logs/binwalk.log文件,看看rootfs之后是否有其他数据,如果没有,观察rootfs结束处与固件末尾距离,并观察固件文件末尾数据,判断是否有必要的footer数据,如果不能肯定,不执行此步)
-
./build-firmware.sh ../extracted
,如果提示image过大,修改…/extracted/logs/config.log中的FW_SIZE和FOOTER_OFFSET,FWSIZE修改为提示的NEWSIZE+FOOTER_SIZE,FOOTER_OFFSET修改为提示的NEWSIZE,然后再次执行此步骤(注意此步骤FWSIZE不能大于固件存储空间!) -
生成固件成功
WHR G300N V2情况
- 固件空间最后8K(待验证)为nvram存储区,会导致EEPROM CRC Error!
- 需要删除文件来添加定制程序
对于ddwrt:
bf040000-bf3dffff 为ROM
bf3e0000-bf3effff 为nvram
最大ROM大小 3801088
ShadowSocks
- 使用spec-polarssl
- 需要添加polarssl库
- spec仅支持ss-redir、ssl-tunnel、ssl-rules
- 其中ssl-redir为透明代理
[Error] Bad CRC of EEPROM
清空CRC,使得开机重新校验
ar7240> setenv buf_crc
ar7240> saveenv
参考
路由走动翻墙 openwrt+shadowsocks http://abublog.com/openwrt_shadowsocks_dnsmasq_fuckwall.html
在openwrt路由器上部署代理,客户端零配置FQ https://scola.github.io/deploy-proxy-on-openwrt--client-need-not-to-set/
WHR-G300N V2 https://www.dd-wrt.com/wiki/index.php/WHR-G300N_V2
TRX vs. TRX2 vs. BIN http://wiki.openwrt.org/doc/techref/header
Shadowsocks + GfwList 实现 OpenWRT 路由器自动翻墙 https://cokebar.info/archives/962
Shadowsocks + ChnRoute 实现 OpenWRT 路由器自动翻墙 https://cokebar.info/archives/664
dd-wrt Development http://www.dd-wrt.com/wiki/index.php/Development
Firmware Modification Kit https://code.google.com/p/firmware-mod-kit/
DD-WRT部署ShadowSocks科学上网 http://www.router008.com/DD-WRT-ShadowSocsk.html
Shadowsocks-libev for OpenWrt https://github.com/shadowsocks/openwrt-shadowsocks
OpenWrt-dist http://sourceforge.net/projects/openwrt-dist/?source=typ_redirect
OpenWrt路由器运行shadowsocks-libev客户端 https://softwaredownload.gitbooks.io/openwrt-fanqiang/content/ebook/03.3.html
Buffalo Asia Pacific WHR-G300N Stock Firmware http://buffalo.jp/support_ap/support/products/whr_g300n_u.html
用ttl线救活whr-g300n v2 http://www.right.com.cn/forum/thread-53267-1-1.html