标签归档:WR703N

LEDE配置Aria2和其前端yaaw或者webui-aria2

轻量级多协议命令行下载工具: aria2,在OpenWrt时代配置起来相对繁琐。而LEDE项目不仅提供了aria2的图形界面(luci),还直接提供了最常见的两个前端界面软件包:YAAWwebui-aria2,使得配置起来相对轻松很多。

本文步骤是在安装了LEDE 17.02.0正式版的tl-wr703N路由器上进行配置的。

1 更新软件包列表

opkg update

2 安装

2.1 aria2、luci以及语言包

opkg install aria2 luci-app-aria2 luci-i18n-aria2-zh-cn

2.2 安装前端界面

使用LEDE软件包安装和下载后并上传到/www/目录下其实是一样的,如果想追求最新版,可以使用后者。
YAAW的软件包只有120KB左右,webui-aria2则近3MB,但安装好后运行起来还是很流畅的,对于703N来说,还是YAAW吧。
YAAW和webui-aria2可以同时安装,也可以单独安装,看自己喜好了。

opkg install yaaw
opkg install webui-aria2

3 配置

3.1 配置Aria2

进入LEDE的luci,定位到“服务” > “Aria2 配置”。
建议启用RPC令牌认证方式,其主要需要配置的选项如下:

基本配置 > 启用勾选,以运行aria2。
基本配置 > 以此用户权限运行这里可以选择daemon。
基本配置 > RPC认证方式建议选择“令牌”。否则在前端运行时,会提示不安全。
基本配置 > RPC令牌建议随机生成,比如:
ou2dkxl9mh7x2ffktwdmyrs2l8deb6wx
webui-aria2需要将该令牌添加到“密码令牌 (可选)"
基本配置 > 查看JSON-RPC URL根据上一步生成的令牌生成JSON配置路径,比如:
http://token:ou2dkxl9mh7x2ffktwdmyrs2l8deb6wx@192.168.2.1:6800/jsonrpc
YAAW需要将该内容添加到“JSON-RPC Path”
文件和目录 > 默认下载目录可根据自身需要设置。

其他选项可自行研究,配置完成后,点击”保存&应用“来运行aria2。

3.2 配置前端

在“服务” > “Aria2 配置” > “Aria2 状态”下,此时可见:Aria2 正在运行。其后可见安装的两个前端的打开快捷链接:“打开YAAW”,“打开WEBUI-ARIA2”。

3.2.1 配置YAAW

“打开YAAW”,在弹出的YAAW界面中,点击右上角“扳手”图标,在“JSON-RPC Path”添加上一步“基本配置 > 查看JSON-RPC URL”中生成的JSON配置路径:

http://token:ou2dkxl9mh7x2ffktwdmyrs2l8deb6wx@192.168.2.1:6800/jsonrpc

“Save”,即可。

3.2.2 配置webui-aria2

“打开WEBUI-ARIA2”,在弹出的webui-aria2界面中,“设置” > “密码令牌 (可选)”后添加上一步“基本配置 > RPC令牌”随机生成的令牌:

ou2dkxl9mh7x2ffktwdmyrs2l8deb6wx

“保存连接设置”,即可。

4 错误排查

4.1 错误1

YAAW:
Error: Internal server error
webui-aria2:
The last connection attempt was unsuccessful. Trying another configuration
上一个连接请求失败, 请尝试修改设置

解决方法:请在“服务” > “Aria2 配置” > “Aria2 状态”下中检查Aria2是否处于已运行状态,启用复选框是否已经勾选。

4.2 错误2

YAAW:
Error: Unauthorized
webui-aria2:
Oh Snap! Authentication failed while connecting to Aria2 RPC server. Will retry in 10 secs. You might want to confirm your authentication details by going to Settings > Connection Settings
不能连接到 Aria2 RPC 服务器, 将在10秒后重试. 您可能希望检查连接设置, 打开 设置 > 连接设置

解决方法:请检查YAAW的“JSON-RPC Path”是否添加正确;webui-aria2的“密码令牌 (可选)”是否添加。

为TP-Link TL-WR703N的无luci的LEDE设置PPPoE或无线桥接(bridge)的方法

更新

20170222 snapshots固件,或者通过imagebuilder自行构建的正式版固件,都可以使用该方法。 20170212 设置并不复杂。 对于无luci的LEDE(OpenWrt)来说,避免麻烦的最好方法是:由于LEDE(OpenWrt)的网络配置文件目前没有大改,暂时还可以通用。所以可以通过安装某一带luci的正式版,在luci中设置好网络,然后保存好/etc/config 下的网络相关的配置文件network、wireless和firewall。在安装Snapshop版后,通过Winscp传回或用putty对照修改就可以了。

 一 背景

一代经典路由器TP-Link TL-WR703N具备一个网口,工作模式可以是wan口也可以是lan口,使得其玩法很多。在设置没有luci的Snapshot版的LEDE(OpenWrt)时看起来很复杂,如何简化设置思路呢?

1.1 从网络数据传输来分析:

1.1.1 703N之后的网络连接:
即703N到客户端的连接:可以通过无线网络(Wireless)或者通过703N的网口经网线与客户端连接。
个人认为在现实世界中大部分人是将703N作为无线路由器来使用的,因此为了表达和简化设置说明,在此假定:客户端是通过访问703N建立的Wireless来上网的,而不是使用网线连接其网口来达到上网的目的。
此外,部分光猫的设置地址是192.168.1.1,而LEDE的默认管理地址也是192.168.1.1,会出现想访问703N的路由器设置地址但出现光猫管理界面的问题, 因此需要为703N的LEDE管理地址设置为新的ip,比如:192.168.2.1。此时,客户端的ip会变成192.168.2.*。
1.1.2  703N之前的网络连接:
有两种比较常见的场景:
一是PPPoE方式,即需要输入用户名和密码进行验证的上网方式,此时703N的网口需要工作在wan口模式;
二是无线桥接(Bridge)方式,即Bridge一个已知的无线网络。

1.2 简化的网络连接图


	+-----------+
	|   PPPoE   +---+
	+-----------+	|	+-----------+	    +-----------+
			+  ==>  +   703N    +  ==>  +  Wireless	|
	+-----------+	|	+-----------+	    +-----------+
	|   Bridge  +---+
	+-----------+

简化的设置思路是:
1.2.1 设置703N的无线网络(Wireless):
开启703N的无线网络(需要网线连接电脑与路由器的网口),通过接入无线网络完成后续的设置(不再需要网线连接电脑与路由器的网口)。
1.2.2 设置PPPoE(入户网线插入路由器的网口)或者桥接(Bridge)。

 

二 具体的设置方法

LEDE的网络相关设置的文件保存在/etc/config/下,主要包括3个:
network wireless firewall

2.1 设置703N无线网络

2.1.1 开启无线网络:
安装好LEDE后,用putty登陆路由器的管理地址:192.168.1.1.设置路由器密码后,就可以开始设置网络了。
官方提到的命令行工具是uci,但是vi直接改配置文件也挺方便。

vi /etc/config/wireless

将option disabled ‘1’改为option disabled ‘0’


config wifi-device 'radio0'
        option type 'mac80211'
        option channel '11'
        option hwmode '11g'
        option path 'platform/ar933x_wmac'
        option htmode 'HT20'
        option disabled '0'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid 'LEDE'
        option encryption 'none'

2.1.2 更改LEDE的管理地址:

vi /etc/config/network

将option ipaddr ‘192.168.1.1’改为option ipaddr ‘192.168.2.1’


config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fdd8:a2c4:707f::/48'

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.2.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

注:此时可以看到lan区块下的option ifname 为’eth0’。

应用新的网络设置:

/etc/init.d/network restart

此时断开有线连接,搜索并接入刚开启的默认的无密码无线网络:LEDE。
注:开启的无线网络名称、密码、加密方式等可后续再设置,这里为了简化就不说了。

2.2 设置PPPoE连接或无线桥接

2.2.1 设置PPPoE连接的方法
将入户网线接入703N的网口;通过无线网络连接路由器LEDE,putty登陆LEDE管理地址:192.168.2.1。

vi /etc/config/network

将lan区域下的option ifname ‘eth0’改为option ifname ‘eth1’,并在最下面添加wan区块信息:


config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fdd8:a2c4:707f::/48'

config interface 'lan'
        option type 'bridge'
        option ifname 'eth1'
        option proto 'static'
        option ipaddr '192.168.2.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wan'
        option ifname 'eth0'
        option proto 'pppoe'
        option username 'PPPoE账户'
        option password 'PPPoE密码'

根据实际情况,更改PPPoE的用户名和密码。

保存,并应用新的网络配置:

/etc/init.d/network restart

设置完毕,应该可以上网了。

2.2.2设置无线桥接的方法
假设按“2.1设置703N无线网络”开启了无线网络LEDE,不需要PPPoE,而是需要桥接已有网络,则设置方法如下:
还是通过无线连接路由器LEDE,putty登陆LEDE管理地址:192.168.2.1。

vi /etc/config/network

在最下面添加wwan区块:


config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fdd8:a2c4:707f::/48'

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.2.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wwan'
        option proto 'dhcp'
vi /etc/config/wireless

将LEDE区块下的’default_radio0’删除,并增加桥接区块
config wifi-iface ‘default_radio0’改为config wifi-iface


config wifi-device 'radio0'
        option type 'mac80211'
        option channel '11'
        option hwmode '11g'
        option path 'platform/ar933x_wmac'
        option htmode 'HT20'
        option disabled '0'

config wifi-iface
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid 'LEDE'
        option encryption 'none'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'wwan'
        option mode 'sta'
        option ssid '已知无线网络的名称'
        option bssid '12:34:56:78:90:01'
        option encryption '无线网络的加密方法'
        option key '无线网络的密码'

需要更具实际情况更改的信息有:ssid,bssid,encryption,key。
ssid就是我们在手机或电脑WIFI那里看到的无线网络名称,bssid其实就是已知无线网络对应的无线网卡的MAC地址,encryption加密方法可尝试设为psk2,key是无线网络的密码。
更改防火墙配置:

vi /etc/config/firewall

在wan区块最后添加一行:option network ‘wan wan6 wwan’


...

config zone
        option name wan
        list network 'wan'
        list network 'wan6'
        option input REJECT
        option output ACCEPT
        option forward REJECT
        option masq 1
        option mtu_fix 1
        option network 'wan wan6 wwan'

...

应用新的网络配置:

/etc/init.d/network restart

设置完毕,应该可以上网了。

在TL-WR703N上安装LEDE并扩展到U盘运行(Extroot)

更新

20170808 感谢@ian提醒,先修改fstab再复制overlay,就不会出现 fstab 恢复原始状态的状况。重新更改该部分内容。 20170706 在720N上,目前新版的LEDE使用f2fs格式化的U盘做exroot时,会出现类似如下的错误: mount: mounting /dev/sda1 on /mnt failed: Invalid argument mount: mounting /dev/sda1 on /mnt failed: I/O error 暂时解决办法是:windows上使用MiniTool Partition Wizard将U盘格式化为ext4格式。 相应的,制作固件时的命令改为: make image PROFILE=tl-wr703n-v1 PACKAGES="block-mount kmod-fs-ext4 kmod-usb-storage" 20170625 LEDE稳定发行版已于20170610更新为17.01.2,本文内容做相应修改。 20170430 LEDE稳定发行版已于20170418更新为17.01.1,本文内容做相应修改。 20170315 所有硬件版本的703N均可以按此方法扩展,但是强烈建议在可以刷入pepe2k不死uboot的703N上进行操作,理论上包括:v1.0-v1.6,以及v1.7(Dec. 2012 (FW build 121204))。 20170222 延迟1周后,LEDE第一个正式版的固件和软件包终于出现在了LEDE官方的下载库中,具体版本号是:17.01.0-r3205-59508e3官方网页暂时仍显示为Current Release - LEDE 17.01.0-rc2,但是应该很快会更新。按正式版重新整理里此文档,但不管是releases版还是snapshots,此文档均适用。 20170212 在无luci的情况下,设置PPPoE和无线桥接的方法可以参考这里20170205 LEDE目前已经放出了发行版的时间表,并已公布了第一个预览版 17.01.0 RC1。 17.01.0最终版将于2017年2月15公布。

说明

说明放在前面,以免浪费你的宝贵时间或可能破坏掉你的路由器: 1.不死uboot 因为只要有了不死uboot,就可以保证只要在uboot中刷入任何固件都不会导致变砖,所以我建议折腾的基础是建立在能刷入不死uboot的703N上。目前理论上可以方便的刷入pepe2k的不死uboot的703N硬件版本为:v1.0-v1.6,以及v1.7(Dec. 2012 (FW build 121204))。尽管事实上,如果想刷,任何版本的703N(包括April 2014 (3.17.1 Build 140120 Rel.56593n))都可以按此法进行扩展,只是个别703N--特指April 2014 (3.17.1 Build 140120 Rel.56593n)--因为不能方便的写入不死uboot,在操作的过程中存在变砖的可能性,尽管有一些硬件DIY可以救,但是这种情况是应该而且可以避免的。LEDE文档说支持的是703N V1。我这个背面铭牌上印的是:Ver:1.6,并操作成功;所以,我不清楚其他版本的情况; 2.这不是一个完全手把手的教程,只是记录自己折腾的过程,因此对于从没有折腾过OpenWrt的人来说,将会面对很多细节问题,一个小问题也许就会卡住你好几天的时间,甚至破坏了你的703N; 3.如果你想折腾,请务必读完全文再决定是否动手; 4.动手之前,请务必备份好网络配置文件(/etc/config/下的network,wireless,firewall),我假设你之前成功折腾了OpenWrt,不过,你折腾过OpenWrt,这些保不保存也无所谓了; 5.如果你对在没有luci(网页版的管理界面)的情况下如何配置网络完全不了解,我劝你动手之前还是要三思。 4.本文亦适用于TL-WR720N。

TL-WR703N只有4M闪存,如果想要安装官方稳定发行版(Stable Release,带luci),不管是OpenWrt还是LEDE,目前能成功配置USB扩展(Extroot)的最新版本是barrier_breaker 14.07

作为OpenWrt的Reboot项目,LEDE已运行多时。半年多了,第一个正式版已经发布,但目前只有此外每日更新的为snapshot版(该版本默认不带luci)。因闪存空间不足以安装扩展所需的软件,LEDE官方稳定发行版(Stable Release)和其开发快照版(Development Snapshot)都是无法扩展到U盘(Extroot)的。但是LEDE和OpenWrt一样,同样提供了一个固件构建程序包(imagebuilder),可以将扩展U盘所需软件直接打包进固件当中,避免了使用opkg安装这些文件出现的空间不足问题,从而成功实现Usb扩展。因为是采用官方工具自己构建,所以对那些使用别人打包的软件心存芥蒂的人来说,是个不错的选择。此外imagebuilder并非从头编译固件,只是相对简单的打包(make),因此不会耗费太多硬件资源和时间。

本文主要参考:
https://lede-project.org/docs/user-guide/extroot_configuration

1 Extroot的背景知识:

LEDE固件将所支持设备的内部存储划分为两部分,一部分高度压缩且只读(/),另一部分可写(/overlay)。LEDE(OpenWrt)通过linux内核的功能可以在表现形式上将这两部存储合并起来,使得对应用程序来说,只感觉到一个总的可读写的存储空间。
Extroot,则是在这两者之外,通过外置U盘等再添加一个外部的(/overlay),在启动时接替了(mounted over)内部的(/overlay)工作,从而实现扩展。还有个好处是,外部(/overlay)接替内部(/overlay)工作,并不彻底覆盖掉或破坏内部的(/overlay),只是运行于其上,这就意味着当外接U盘损坏或移除后,仍然可以通过内部的(/overlay)部分启动,恢复到开启Extroot前的状态。

2 实现步骤

2.1 所需的条件

64位的linux系统(运行在虚拟机中的也可以)
选择正确的固件构建程序包(imagebuilder)
假设是一个u盘(当时折腾14.07时分了三个区

2.2 建立工作目录

mkdir lede-703n
cd lede-703n

2.3 获取正确的imagebuilder

2.3.1 对于正式版:

2.3.1.1 在LEDE的下载库中找到703N所在的文件夹,并找到相关文件
https://downloads.lede-project.org/releases/17.01.2/targets/ar71xx/generic/

tl-wr703n-v1-squashfs-factory.bin
sha256sum: 6989535e198c7d250fcf39a4cf46e74a6230a0a40d2b5c66c22f290101e32c7c
tl-wr703n-v1-squashfs-sysupgrade.bin
sha256sum: 812ec41c9de2e94cb9fa1150f9662e050f4b2b21bd00ce328a8096f55aa1b458
lede-imagebuilder-17.01.2-ar71xx-generic.Linux-x86_64.tar.xz
sha256sum: 21635b5f9c8a21544fb46cb0fac714c4146d5da625105722867f45259fec07db

2.3.1.2 下载对应的imagebuilder:

wget https://downloads.lede-project.org/releases/17.01.2/targets/ar71xx/generic/lede-imagebuilder-17.01.2-ar71xx-generic.Linux-x86_64.tar.xz

wget出错就:

wget --no-check-certificate https://downloads.lede-project.org/releases/17.01.2/targets/ar71xx/generic/lede-imagebuilder-17.01.2-ar71xx-generic.Linux-x86_64.tar.xz

2.3.1.3 解压imagebuilder

xz -d lede-imagebuilder-17.01.2-ar71xx-generic.Linux-x86_64.tar.xz
tar -xvf lede-imagebuilder-17.01.2-ar71xx-generic.Linux-x86_64.tar
2.3.2 对于snapshots版:

2.3.2.1 在LEDE的下载库中找到703N所在的文件夹,并找到相关文件
https://downloads.lede-project.org/snapshots/targets/ar71xx/generic/

tl-wr703n-v1-squashfs-factory.bin
tl-wr703n-v1-squashfs-sysupgrade.bin
lede-imagebuilder-ar71xx-generic.Linux-x86_64.tar.xz

2.3.2.2 下载对应的imagebuilder:

wget https://downloads.lede-project.org/snapshots/targets/ar71xx/generic/lede-imagebuilder-ar71xx-generic.Linux-x86_64.tar.xz

wget出错就:

wget --no-check-certificate https://downloads.lede-project.org/snapshots/targets/ar71xx/generic/lede-imagebuilder-ar71xx-generic.Linux-x86_64.tar.xz

2.3.2.3 解压imagebuilder

xz -d lede-imagebuilder-ar71xx-generic.Linux-x86_64.tar.xz
tar -xvf lede-imagebuilder-ar71xx-generic.Linux-x86_64.tar

2.4 安装make所需的依赖

2.4.1 若是CentOS/RHEL
yum install subversion git gawk gettext ncurses-devel zlib-devel openssl-devel libxslt unzip
yum group install "Development Tools"
2.4.2若是Debian/Ubuntu
apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc unzip

2.5 打包固件

2.5.1 进入imagebuilder工作目录:
cd lede-imagebuilder-*
2.5.2 获取703N的打包参数PROFILE:tl-wr703n-v1。
make info
...
tl-wr703n-v1:
    TP-LINK TL-WR703N
    Packages: kmod-usb-core kmod-usb2
...
2.5.3 打包并获取固件
make image PROFILE=tl-wr703n-v1 PACKAGES="block-mount kmod-fs-f2fs kmod-usb-storage mkf2fs f2fsck"

打包很快完成,在bin/targets/ar71xx/generic/下可以找到已经打包好的固件。

ls ./bin/targets/ar71xx/generic/

17.01.2正式版:

lede-17.01.2-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin
lede-17.01.2-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin

snapshots版:

lede-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin
lede-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin

2.6 刷入固件

网线连接703N,强烈推荐在不死uboot中刷入sysupgrade固件。

2.7 扩展到U盘(Exroot)

2.7.1 更改root密码

安装好固件后,等指示灯稳定后,用puyyt连接路由器 192.168.1.1,首先是更改root密码

passwd
2.7.2 查看挂载情况
block info
/dev/mtdblock2: UUID="9fd43c61-c3f2c38f-13440ce7-53f0d42d" VERSION="4.0" MOUNT="/rom" TYPE="squashfs"
/dev/mtdblock3: MOUNT="/overlay" TYPE="jffs2"
/dev/sda1: UUID="fdacc9f1-0e0e-45ab-acee-9cb9cc8d7d49" VERSION="1.4" TYPE="ext4"
/dev/sda5: VERSION="1" TYPE="swap"
/dev/sda6: UUID="fffaa123-1234-5678-abcd-1234abcd5678" VERSION="1.7" MOUNT="/mnt/sda6" TYPE="ext4"

这里借用了原文的信息来说明情况。可见已经成功挂载U盘,三个区是:sda1、sda5、sda6。
sda1是为Extroot准备的,sda5是swap,sda6后续可以作为aria2和samba等文档存储区。

2.7.3 将U盘的第一个区sda1和第三个区sda6格式化为f2fs格式
mkfs.f2fs /dev/sda1
mkfs.f2fs /dev/sda6

f2fs格式是为闪存设计的,u盘和ssd建议为f2fs格式。

2.7.4 自动修改文件系统(fstab)信息:
block detect > /etc/config/fstab; \
sed -i s/option$'\t'enabled$'\t'\'0\'/option$'\t'enabled$'\t'\'1\'/ /etc/config/fstab; \
sed -i s#/mnt/sda1#/overlay# /etc/config/fstab; \
cat /etc/config/fstab;

此时自动配置好并显示挂载情况:

config 'global'
        option  anon_swap       '0'
        option  anon_mount      '0'
        option  auto_swap       '1'
        option  auto_mount      '1'
        option  delay_root      '5'
        option  check_fs        '0'

config 'mount'
        option  target  '/overlay'
        option  uuid    'fdacc9f1-0e0e-45ab-acee-9cb9cc8d7d49'
        option  enabled '1'

config 'swap'
        option  device  '/dev/sda5'
        option  enabled '1'

config 'mount'
        option  target  '/mnt/sda6'
        option  uuid    'fffaa123-1234-5678-abcd-1234abcd5678'
        option  enabled '1
2.7.5 复制/overlay到sda1
mount /dev/sda1 /mnt ; tar -C /overlay -cvf - . | tar -C /mnt -xf - ; umount /mnt

直接重启路由器:

reboot
2.7.6 重启后就可以查看到成功了:
df -h

2.8 后续

2.8.1想办法,把没有luci的路由器联网
如果之前备份过OpenWrt的网络配置文件,通过WinScp传回重启就可以了。
2.8.2安装必要组件:
opkg update
opkg install luci luci-i18n-base-zh-cn luci-theme-material
opkg install ...

注:
1.现在没必要安装luci-ssl,它使用的是一个自签名的证书;
2.不要在成功扩展后(Extroot)运行opkg upgrade,更不要通过luci或者putty更新固件,更新固件永远在uboot中进行。

TL-WR703N、TL-WR720N将官方OpenWrt系统扩展到U盘运行

更新

2017-08-08 如无较大错漏,本文不再更新,请尽快更新至LEDE; 感谢@ian提醒,先修改fstab再复制overlay,就不会出现 fstab 恢复原始状态的状况。重新更改该部分内容。 2017-05-29 LEDE已更新为17.01.12017-02-22 目前LEDE已放出了第一个正式版,因此建议采用最新版:17.01.02017-01-18 1.如果想尝试新版固件,OpenWrt官方和LEDE均提供了一个工具:imagebuilder。可以参考这个帖子进行。 2.不要在已经Extroot的系统上更新系统或固件,可能会导致设备变砖,如需更新,请拔下U盘,并在uboot中操作。

TL-WR703N、TL-WR720N的闪存只有4M,装完官方版的OpenWrt后空间所剩无几,好在它们提供了一个usb口,可通过官方教程挂载U盘,并将OpenWrt运行在U盘中,即扩大rootfs,同时解决安装软件没有空间的尴尬。

1 系统、挂载模式、挂载方法的选择

OpenWrt系统:
如果只想安装OpenWrt官方固件,那么建议选择barrier_breaker 14.07,不建议选择最新的稳定版chaos_calmer 15.05,后者会出现空间不足导致U盘驱动无法安装的情况。
挂载模式:
目前OpenWrt官方推荐rootfs挂载’/overlay’的模式(本文使用该方法),不再推荐’/’的模式。如果U盘损坏,拔下U盘可以启动系统。
挂载方法:
如果按照官方文档所说barrier_breaker的挂载方法反而比较麻烦一点点,本文采用挂载模式中链接的最新方法。

2 准备好U盘

目前U盘价格下降,10几元就能买到8G以上的,如果都作为系统盘来用过于浪费,所以建议将U盘分成3个区,1是用来挂载系统安装软件,1-2G足够了;2作为SWAP区,比如256M;3剩下的空间作为数据区,用来做aria2或离线迅雷的下载区。U盘需要事先在windows中可通过MiniTool Partition Wizard软件分成三个区,1、3区格式化为ext4格式,2区选择swap。

3 具体步骤

将U盘插入usb口,注意:720N需要将开关拨到3G模式,否则无法识别U盘。

3.1 安装exroot所需软件包

通过putty进入路由器,更新软件包列表

root@OpenWrt:~# opkg update

安装挂载U盘必须的包
官方建议安装kmod-usb-storage-extras。但没有足够的空间。有的教程提到安装e2fsprogs来格式化U盘,那选择的一定不是官方系统,因为空间不够。这里选择的是官方系统,所以需要事先格式化好U盘。

root@OpenWrt:~# opkg install opkg install block-mount kmod-fs-ext4 kmod-usb-storage
root@OpenWrt:~# reboot

3.2 查看u盘是否已经挂载

谢谢@huxin指出命令拼写错误。

root@OpenWrt:~# block info

/dev/mtdblock2: UUID="********-********-********-********" VERSION="4.0" TYPE="squashfs"
/dev/mtdblock3: TYPE="jffs2"
/dev/sda1: UUID="********-****-****-****-************" NAME="EXT_JOURNAL" VERSION="1.0" TYPE="ext4"
/dev/sda5: VERSION="2" TYPE="swap"
/dev/sda6: UUID="********-****-****-****-************" NAME="EXT_JOURNAL" VERSION="1.0" TYPE="ext4"

出现/dev/sda1下面的三行说明U盘已经挂载成功,挂载的U盘的三个区,sda1、sda5、sda6。

3.3 修改文件系统配置文件

root@OpenWrt:~# vi /etc/config/fstab

将option enabled ‘0’改为option enabled ‘1’,
将option target ‘/dev/sda1’改为option target ‘/overlay’,
按如下修改:

config 'global'
option anon_swap '0'
option anon_mount '0'
option auto_swap '1'
option auto_mount '1'
option delay_root '5'
option check_fs '0'

config 'mount'
option target '/overlay'
option uuid '********-****-****-****-************'
option enabled '1'

config 'swap'
option device '/dev/sda5'
option enabled '1'

config 'mount'
option target '/mnt/sda6'
option uuid '********-****-****-****-************'
option enabled '1'

按ESC键,输入:wq,保存并退出编辑器。

3.4 复制/overlay到U盘

将/dev/sda1挂载到/mnt

root@OpenWrt:~# mount /dev/sda1 /mnt

将/overlay复制到/mnt

root@OpenWrt:~# tar -C /overlay -cvf - . | tar -C /mnt -xf -
root@OpenWrt:~# umount /mnt
root@OpenWrt:~# reboot

3.5 检查是否扩展到u盘成功

查看rootfs是否增加

root@OpenWrt:~# df

也可以在luci中system-mount points下查看rootfs的大小和挂载情况。

4 解决遗留问题

此时再次查看fstab

root@OpenWrt:~# vi /etc/config/fstab

可见fstab又恢复原始状态,同时在luci中system-mount points可见Mount Points和SWAP的未勾上。
此时再次按之前的改动方法修改fstab,

root@OpenWrt:~# vi /etc/config/fstab

保存重启。

进入luci界面可见Mount Points和SWAP处enabled的勾已启用,但是Mount Points 的Filesystem处是问号。

第一行是sda1运行的/overlay,点击后面的edit,在device 处选择/dev/sda1,filesystem选择之前格式化好的格式ext4,同时勾上use as root filesystem,Save & Apply,然后点击back to overview返回Mount points主界面。

第二行是数据盘/mnt/sda6,点击edit,在device 处选择/dev/sda6,filesystem选择格式ext4,
Save & Apply,保存应用即可。

现在就可以安装很多你想安装的东西了。

原版TL-WR703N v1.6、TL-WR720N V3等TP-Link路由器(无需TTL、编程器、更改MAC地址)线刷不死uboot及升级uboot的简易教程

如果用得好好的,没事就别更新。

更新

20170429 重写本文,解决无法更新uboot(64K更新为123K)的问题。 20170313 添加更新uboot到最新版的方法。 20170310 对TL-WR703N的支持情况 可以使用pepe2k解锁固件(Barrier Breaker 14.07,r43286)刷入不死uboot的TL-WR703N的硬件版本为v1.0-v1.6,以及v1.7(Dec. 2012 (FW build 121204))。 理由如下: OpenWrt介绍界面中,提示TP-LINK TL-WR703N的版本很多,但是看起来不同版本之间并没有硬件上的区别,所有版本均已被OpenWrt支持,如下表。

OpenWrt对TL-WR703N支持表

Version/Model Launch Date OpenWrt Version Supported Model Specific Notes
v1.0 August 2011 Trunk (r28294) Confirmed working
v1.2 Trunk (r29330) Confirmed working
v1.3 Trunk (r29283) Confirmed working
v1.5 December 2011 Trunk Confirmed working
v1.6 April 2012 Trunk (r39757) Barrier Breaker, trunk (r39757) confirmed working
v1.6(?) March 2013 (FW build 130318) BB(14.07) AA confirmed working, BB too
v1.6(?) March 2013 (FW build 130321, original FW rel. 37153n) Trunk(r41336) AA confirmed working, BB too
v1.6(?) June 2013 (FW build 130625) AA(12.09) AA confirmed working
v1.7 Dec. 2012 (FW build 121204) AA(12.09) AA confirmed working, trunk (r36641) broken
v1.7 April 2014 (3.17.1 Build 140120 Rel.56593n) Unsupported trunk(r40351) not work
v1.7 April 2014 (3.17.1 Build 140120 Rel.56593n) Trunk (r45157) confirmed working, Chaos Calmer, trunk (r45157)
对于v1.7(April 2014 (3.17.1 Build 140120 Rel.56593n)),需要Chaos Calmer, trunk (r45157)来支持,所以不能用pepe2k解锁固件(r43286)来刷入不死uboot。
pepe2k的github中,支持的是TP-Link TL-WR703N v1和TP-Link TL-WR720N v3等,测试通过的本文中所使用的703n版本为v1.6,720n为v3。对于TL-WR703N,可以使用本方法的如上介绍请对照上面的表格,如版本不对,或自行更换过闪存、内存,请止步,以免浪费宝贵时间。

以703n、720n为代表的TP-Link mini路由器,小巧便携,MicroUsb供电,带USB口,虽4M闪存,但可刷OpenWrt,挂载U盘,并将系统运行在U盘,为折腾带来无限可能。但是也很容易变砖,无法启动和刷入固件,自己修复起来比较麻烦,焊接TTL稍有不慎还可能彻底报废。通过修改启动代码,即uboot,实现开机时进入web刷机界面,可反复刷入各种固件,从而实现所谓的不死。

本文介绍的U-Boot是pepe2k在github的开源项目,包含刷固件、U-Boot、ART等功能。更可贵的是pepe2k在发布的第二版(2014-11-19)中直接提供了解锁uboot的固件并且内置了写入U-Boot的脚本,使得操作变得十分方便又安全。
pepe2k提供的解锁uboot固件是OpenWrt BB版,其中待刷入路由器的不死uboot的大小是64K。但现在pepe2k将uboot从64K扩展到了123K,却暂未针对新uboot提供更新后的OpenWrt。导致的问题是:写入64K的uboot后不能直接在不死uboot(192.168.1.1/uboot.html)中直接更新为123K的。如果想及时获取更新,那我们需要对写入uboot的过程进行修改。整体思路是:

+-------------------+           +--------------------+           +---------------+
| 刷入解锁uboot固件 |    ==>    | 替换uboot和md5文件 |    ==>    | 写入新版uboot |
+-------------------+           +--------------------+           +---------------+

请完整看完此文,再进行以下操作过程:

一 获取所需的文件

1.1 获取解锁uboot的OpenWrt固件

(以Tp-Link TL-WR720N V3版为例,V4版能否使用不详,703N操作过程一样)
在pepe2k的github下载页面,下载U-Boot_1.1.4_modification_for_routers_2014-11-19.tar.gz,解压,进入OpenWrt Barrier Breaker 14.07 images for easy U-Boot upgrade,在TP-Link TL-WR720N v3 CH下找到:

openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-factory.bin
openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin
md5sums

请自行核对md5。

1.2 获取新uboot和md5

1.2.1 到pepe2k的FTP获取新uboot,计算md5并转换为小写:

2017-04-29下载到的uboot为20170425版(请根据实际下载到的版本进行):

u-boot_mod__tp-link_tl-wr720n_v3_CN__20170425__git_master-aba8e6f8.bin
79c6cebffc0bd913cef109fa62348f50
1.2.2 为了避免不必要的麻烦,将新uboot和md5改名为2014-11-19固件中的名字(可用7Zip打开固件,定位到/etc/u-boot_mod/目录):
uboot_for_tp-link_tl-wr720n_v3_CH.bin
uboot_for_tp-link_tl-wr720n_v3_CH.md5

uboot_for_tp-link_tl-wr720n_v3_CH.md5文件内容根据实际情况改为:
79c6cebffc0bd913cef109fa62348f50 *uboot_for_tp-link_tl-wr720n_v3_CH.bin

二 刷入解锁uboot的OpenWrt固件

为了减少出错,建议刷机前,将路由器恢复默认设置,以网线连接,并将上述长文件名固件改短,比如factory.bin和sysupgrade.bin,刷机过程中不要断电,直到路由器重启后指示灯稳定。
注意:我们不少人已经有了不死uboot,但我们的目的是写入解锁uboot的固件,所以此时不要在不死uboot中写入这个固件。

2.1 如果是Tp-Link的官方固件:

在系统升级那里选择factory.bin并升级,不要保留设置。

2.2 如果已经刷好了OpenWrt或者LEDE:

2.2.1方法一:

系统 > 升级 > 刷写新固件 那里选择sysupgrade.bin,同时去掉保留配置的钩,写入固件。

2.2.2方法二:

WinSCP上传sysupgrade.bin到/tmp,并在putty中运行如下命令,并等待自动重启:

mtd -r write /tmp/sysupgrade.bin firmware

三 用新uboot(123K)替换原来的uboot(64K)

3.1.1 设置密码开启SSH

刷入固件路由器自动重启,待指示灯稳定后,以网线连接路由器和电脑,看电脑的有线网络图标是否连通,如自动获取IP失败,可手动修改有线网卡IP,比如192.168.1.103,网关为192.168.1.1,在命令行提示符中通过如下命令来设置密码以开启SSH:

telnet 192.168.1.1
passwd

3.1.2 上传新uboot和md5文件到OpenWrt中

用WinSCP将准备好的两个文件上传到/etc/u-boot_mod/,覆盖掉原来的文件。

四 通过putty写入U-Boot

可参见第一步解压出来的readme,使用putty登陆OpenWrt,看到OpenWrt的信息后,直接输入

u-boot-upgrade

然后按提示依次输入:


=================================================================
     DISCLAIMER: you are using this script at your own risk!

     The author of U-Boot modification and this script takes
     no responsibility for any of the results of using them.

          Updating U-Boot is a very dangerous operation
        and may damage your device! You have been warned!
=================================================================
   Are you sure you want to continue (type 'yes' or 'no')? yes
=================================================================

[ ok ] Found U-Boot image file: uboot_for_tp-link_tl-wr720n_v3_CH.bin
       Do you want to use this file (type 'yes' or 'no')? yes
[ ok ] MD5 checksum of new U-Boot image file is correct
[ ok ] Backup of /dev/mtd0 successfully created
       Do you want to store backup in /etc/u-boot_mod/backup/ (recommended, type 'yes' or 'no')? no
[ ok ] New U-Boot image successfully combined with backup file
[info] New U-Boot image is ready to be written into FLASH
       Are you sure you want to continue (type 'yes' or 'no')? yes
[ ok ] New U-Boot image successfully witten info FLASH
[ ok ] MD5 checksum of mtd0 and new U-Boot image are equal
[info] Done!

以上三个意思是找到720N的uboot,验证md5正确询问是否备份旧的uboot,是否刷入新的U-Boot。
看到Done!提示刷入不死U-Boot成功,reboot重启。U-Boot已经刷完。

因为上述步骤的解锁U-Boot的固件是14.07,未安装luci,仅供刷入uboot使用,所以请按照“5.3 刷好U-Boot后如何使用?”进入web刷机界面(192.168.1.1/index.html)刷入自己感兴趣的固件。

四 更新uboot

pepe2k不停的努力为uboot带来令人兴奋的功能,并将升级版的uboot及时发布出来。可将下载的新版uboot,按“5.3 刷好U-Boot后如何使用?”进入uboot中(192.168.1.1/uboot.html)刷入即可。
需要注意的是:按之前教程已经刷好(2014-11-19)版原始uboot(64K),在192.168.1.1/uboot.html中,是不能直接将64K的uboot更新为新版123K的。需要按本文教程重新来过。

五 说明

5.1 备份uboot

除了上述半自动的写入U-Boot外,pepe2k在github上提供了手动写入教程,而且可以自己备份原来的uboot。pepe2k建议写入uboot前先备份原始的uboot。

cat /dev/mtd0 > /tmp/uboot_backup.bin

5.2 为什么这个uboot无需更改MAC地址?

对于703N和720N等路由器来说,储存uboot的区块mtd0大小是128K,Tp-Link将uboot压缩到前64K,并在uboot区块剩下的64K内来存储MAC地址、pin码等信息。如果uboot修改软件未注意到这个问题或者为uboot加入了更多的功能导致占用空间过大,就可能会覆盖掉后面的信息,导致这些信息丢失,所以就需要手动修改MAC地址了。以TP-Link TL-MR3020来说,MAC地址、pin码等信息是写在最后1K内的,pepe2k可利用多达123K的空间可以用来写入uboot。对于703N来说,情况类似,pepe2k提供的uboot最大可利用前123K的空间,并且还保留了4K的空间供写入环境变量(like IP addresses of device and remote server for TFTP transaction, serial console baud rate, boot command, etc)。而pepe2k将uboot压缩在前64K并和原来后面64K的内容合并,重新刷回,相当于只是替换了前面的64K内容。所以不会导致MAC地址丢失。

5.3 刷好U-Boot后如何使用?

路由器断电,通过网线连接路由器和电脑,将电脑IP设为192.168.1.103或自动获取,按住reset键通电,继续按reset键3-4秒,然后松开会看到指示灯狂闪后熄灭,浏览器打开192.168.1.1并不断刷新,默认启动刷固件的页面:192.168.1.1/index.html。如需刷写art或者更新uboot,需相应进入192.168.1.1/art.html或者192.168.1.1/uboot.html。

附:长按reset键的时间对应进入的功能模式:

#大于3秒并小于5秒,进入网页服务,用来更新固件、art、uboot。
Web server (min. 3 seconds)
#大于5秒并小于7秒,进入串口控制台,假设你知道是干什么用的。
U-Boot serial console (min. 5 seconds)
#大于7秒,进入网络控制台,假设你知道是干什么用的。
U-Boot network console (min. 7 seconds)

5.4 刷机界面是英文怎么办?

虽然刷机界面是英文,但是只有一个选择固件的按钮和一个刷入的按钮,因此并不会对以后折腾刷机带来任何障碍。

5.5 注意:

5.5.1 在U-Boot中时指示灯是不亮的。
5.5.2 以后需要重刷固件或者升级固件务必在不死U-Boot中进行,以免U-Boot被覆盖。
5.5.3 一般情况下在U-Boot中刷入新固件后路由器会自动重启,但是在U-Boot中刷入sysupgrade固件时,可能会出现见UPDATE IN PROGRESS界面一直转圈圈的情况,建议等3分钟后,直接在浏览器中打开192.168.1.1看是否刷入成功。

5.6 uboot之外的选择

除了上述pepe2k的U-Boot外,还可以尝试hackpascal的Breed,支持更多,免费,但是不开源。对于只需用web界面刷固件折腾的人来说,pepe2k的U-Boot就足够了。