LG-NAPL-5000 刷ubnt 折腾记

最近玩起ubnt,淘宝一番后发现lg u+这货性价比不错。此前恩山论坛不乏对其进行ubnt改造的帖子,有硬改的,也有软改的,并且恩山@zdgsnet已经给出了一个不用硬改的固件,但是资料比较松散,我就以我自己折腾的经历,记录下,以备后用。

0.准备工具

硬件:lg u+ napl 5000、USB转TTL、焊接工具套件、TTL插针

软件:tftpd32(自行下载)、putty(自行下载)、uboot(no-wps)+程器固件(屏蔽复位)
uboot来自恩山论坛@zdgsnet

1.TTL接线

首先,拿到机器是思密达的系统,可以当普通路由用,由于不想上编程器,想直接用TTL刷机,二话不说拆机,找TLL接口,在板子右上角UART处,定义为:3–rxd、9–txd、12–gnd。图片可以参考恩山讨论帖,此前我也在这个帖子回复,并确认。鄙人就不上图了,焊工差,拿不出手。
接上TTL线,在putty打开相应串口,并设置好波特率115200,上电:

2.TTL刷uboot

用ttl刷uboot就是通过com口登录到uboot命令行,从服务器(PC端)下载uboot,并且通过cp.b输入flash.

2.1.进入uboot命令行

在ttl中刷uboot,要先进到uboot中,开机以后,注意看ttl信息:

此时按任意键就进入uboot命令行。
进入uboot后,看到提示符为ar7240>

2.2.PC端ip和tftp服务器设置

查看 U-Boot 中的 IP 地址信息:
在uboot 命令行中运行printenv命令

ipaddr 表示 U-Boot 即路由使用的 IP 地址
serverip 表示服务器即 PC 机使用的 IP 地址,此时将你对应的网卡IP地址改为此IP
打开 TFTPd32
Current Directory 选择要上传uboot的目录
Server interfaces 选择本机跟路由相连的网卡 (参考刚才设置的 IP 地址)

2.3.下载命令 tftpboot

tftpboot 命令用于向 TFTP 服务器请求文件,并存入内存
tftpboot 命令在无歧义的情况下可简写为 tftp
tftp <内存地址> <文件名>
在 MIPS 架构下内存地址从 0x80000000 开始,一般也选择 0x80000000,因为这样可以尽可能使用更多的内存

1
tftp  0x80000000 u-boot-ar7241-no-wps.bin


文件传输成功的标志为 Loading: 后出现一连串 #
其中可能出现 checksum bad 的提示,这不影响数据传输。
如果每隔10s出现一个T,则表明通信超时,此时需要检查网络连接情况及IP地址是否正确。
Bytes transferred = 后面的第一个数字为传输的数据字节数,10进制;括号里的为对应的16进制大小,后面会用到16进制的大小。

2.4.擦除Flash命令 erase

任何一种 Flash 都有一个擦除块大小,擦除大小必须为此大小的整数倍,如果不是,则要进行对齐。
例如:
SPI Flash 的常见擦除块大小为 64KB,其字节数的16进制为 0x10000
如果擦除大小为 0x30000 (192KB),则此大小为 0x10000 的整数倍,是对齐的;
如果擦出大小为 0x12345 (72KB),则此大小未对齐,需要使用比它大但又最接近的是 0x10000 倍数的大小,即 0x20000 (128KB)。
erase <flash地址> +<擦除大小>
这里lg-u+ AR724x 应该是

1
erase 0x9f000000 +0x40000

2.5.写入Flash命令 cp.b

向 Flash 写入数据的大小可以是任意正整数
cp.b <源地址> <目的地址> <长度>
其中
cp.b 表示以字节为单位进行写入
源地址为通过 tftpboot 命令获取的文件数据的存放地址
目的地址为 Flash 地址
长度为通过 tftpboot 命令获取的文件的大小,16进制表示,带0x前缀
这里lg-u+ AR724x 应该是

1
cp.b 0x80000000 0x9f000000 0x40000


不够清楚请移步恩山论坛@hackpascal教程,需要注意的是,网线连接路由器可能需要连接到wan口,此时uboot目的是为了刷编程器固件。

3.uboot网页端ubnt固件

下载0.准备工具中的编程器固件,进不死uboot网页刷编程器固件(若不是本文的uboot,请先刷0.准备工具中no-wps版本uboot),刷完自动重启就进5.3.5版本ubnt,这个固件是支持2.3-2.7g全频段,目前我自己加了风扇正常运行中,在夏天的时候必须加散热。

4.总结

lg这个板子貌似是reset的端口和其他板子有区别,reset端口一直是使能的,导致刷入正常ubnt后一直重置,所以有了恩山坛友硬改,目的就是将reset按键的io口改回ubnt能够识别的io口。
另外一个方法就是软改,就是将ubnt中reset按键功能屏蔽掉,缺点就是ubnt无法用reset。
至于no-wps版本uboot(若不刷此版本,上电直接进uboot,不会进系统,必须在终端输入autoboot才能进入系统),由于鄙人不了解uboot,这里不做评论。
所以0.准备工具中固件生成的流程是:

  • 1.先刷好no-wps版本uboot
  • 2.刷你想要刷的ubnt
  • 3.由于没有硬改,进入ubnt后,没几秒就会自动复位重启,所以此步骤必须快。上USB转TTL线,在putty中以最快速度进入系统,帐号密码(ubnt/ubnt),输入这3条命令。

    1
    2
    3
    echo "system.button.reset=disabled" >> /tmp/system.cfg 
    cfgmtd -w
    reboot
  • 4.重启后进不死uboot,提取编程器固件。

enjoy.

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本文链接:http://blog.ick.im/posts/2015-08-03-lg-napl-5000-ubnt.html