找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 5806|回复: 9

Openwrt新增设备方法-Ubuntu下编译TPLINK TL-WR743N V2固件详细过程

[复制链接]
本帖最后由 abccba94 于 2016-9-10 19:03 编辑

Openwrt中只有TPLINK TL-WR743N/ND的固件,与TL-WR743N V2的硬件差别较大,固件不兼容,因此如果想要支持新版本的固件,需要自己新增设备,进行编译,如下是详细的操作过程。

TL-WR743N V2的硬件与TL-WR703N的硬件比较类似,因此源码参照703源码进行拷贝修改。


环境要求

编译一个可以安装的OpenWrt固件镜像文件(大约8MB大小的),你需要:

  • 一个纯净的OpenWrt编译系统大约需要200MB的空间。
  • 一个包含feeds的OpenWrt编译系统大约需要300MB的空间。
  • 编译feeds中的软件包大约需要2.1GB的空间用于存放下载来的源代码。
  • 构建OpenWrt并生成固件文件需要大约3-4 GB的空间。
  • 编译OpenWrt需要大约1-4 GB的内存。

以非root用户来进行工作


预先准备:
Ubuntu安装编译OpenWrt所需要的软件
sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext  git libncurses5-dev libz-dev patch unzip zlib1g-dev  subversion git

1、下载源码

git clone git://git.openwrt.org/15.05/openwrt.git

取得最新分支代码,如果要回到15.05主干,则继续执行

git checkout 483dac821788b457d349233e770329186a0aa860


2、配置

cd openwrt

下载并安装所有可用的"feeds",这是为了下载和安装让luci之类的第三方包的源码,如果不进行这步的话配置菜单是没有非openwrt的包给你选的

./scripts/feeds update -a

./scripts/feeds install -a


运行下面的命令让OpenWrt编译系统检查你的编译环境中缺失的软件包:
make defconfig
make prereq


修改openwrt\target\linux\ar71xx\generic\profiles\tp-link.mk

增加743nv2的profile:

define Profile/TLWR743NV2
NAME:=TP-LINK TL-WR743NV2
PACKAGES:=kmod-usb-core kmod-usb2 kmod-ledtrig-usbdev
endef

define Profile/TLWR743NV2/Description
Package set optimized for the TP-LINK TL-WR743NV2.
endef
$(eval $(call Profile,TLWR743NV2))


然后
make menuconfig

选编译的目标系统(Atheros AR7XXX架构,profile为743NV2):

选缺省组件:

编辑完成后点击“save”保存配置文件:


3、修改源文件

make前修改如下文件:

1)修改openwrt\target\linux\ar71xx\image\Makefile,新增及修改部分以粗体表示,下同:

TARGET_DEVICES += tl-mr3020-v1 tl-mr3040-v1 tl-mr3040-v2 tl-mr3220-v2 tl-mr3420-v2

define Device/tl-wr703n-v1
$(Device/tplink-4mlzma)
BOARDNAME := TL-WR703N
DEVICE_PROFILE := TLWR703
TPLINK_HWID := 0x07030101
CONSOLE := ttyATH0,115200
endef

define Device/tl-wr743n-v2
$(Device/tplink-8mlzma)
BOARDNAME := TL-WR743N
DEVICE_PROFILE := TLWR743NV2
TPLINK_HWID := 0x07430102
CONSOLE := ttyATH0,115200
endef

...

TARGET_DEVICES += tl-wr703n-v1 tl-wr743n-v2 tl-wr710n-v1 tl-wr710n-v2 tl-wr720n-v3 tl-wr720n-v4


2)修改openwrt\tools\firmware-utils\src\mktplinkfw.c,增加

#define HWID_TL_WR743N_V2    0x07430102

...

}, {
.id = "TL-WR703Nv1",
.hw_id = HWID_TL_WR703N_V1,
.hw_rev = 1,
.layout_id = "4Mlzma",
}, {
.id = "TL-WR743Nv2",
.hw_id = HWID_TL_WR743N_V2,
.hw_rev = 1,
.layout_id = "8Mlzma",
}, {
.id = "TL-WR720Nv3",


3)修改openwrt\target\linux\ar71xx\base-files\lib\ar71xx.sh

"070301"*)
model="TP-Link TL-WR703N"
;;
"074301"*)
model="TP-Link TL-WR743N"
;;
"071000"*)

...

*"TL-WR703N v1")
name="tl-wr703n"
;;
*"TL-WR743N v2")
name="tl-wr743n"
;;
*"TL-WR710N v1")


4)修改openwrt\target\linux\ar71xx\base-files\lib\upgrade\platform.sh,注意“| \”后不能有空格

tl-wr703n | \
tl-wr743n | \
tl-wr710n | \


5)修改openwrt\target\linux\ar71xx\base-files\etc\diag.sh

tl-wr703n | \
tl-wr743n | \
tl-wr710n | \


6)修改openwrt\target\linux\ar71xx\base-files\etc\uci-defaults\01_leds

增加

tl-wr743n)
ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1"
ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x02"
ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x04"
ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x08"
ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x10"
ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
ucidef_set_led_usbdev "usb" "USB" "tp-link:green:3g" "1-1"
;;



7)修改openwrt\target\linux\ar71xx\base-files\etc\uci-defaults\02_network

tl-wdr3500 |\
tl-wr743n |\
tl-wr741nd |\
tl-wr741nd-v4 |\


8)修改openwrt\target\linux\ar71xx\config-3.18

CONFIG_ATH79_MACH_TL_WR703N=y
CONFIG_ATH79_MACH_TL_WR743N=y
CONFIG_ATH79_MACH_TL_WR720N_V3=y


9)拷贝openwrt\target\linux\ar71xx\files\arch\mips\ath79\mach-tl-wr703n.c为mach-tl-wr743n.c进行修改,如下为修改后文件:

mach-tl-wr743n


10)添加pathch

为了支持我们的设备, Linux 代码树的部分文件也需要做改动, OpenWrt 采用了 patch 的方式实现.

# 清理并准备 patch 树,后面可加 V=s QUILT=1 参数, 表示静默无输出
make target/linux/{clean,prepare}

进入内核代码目录(其中版本号可能与你的不一致):

cd build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.18.36/

这里就是内核代码树了, 里面的代码是已经打过所有 patch 的, 可以用 quilt push 检查看是不是这样:

$ quilt push
File series fully applied, ends at patch patches/platform/907-MIPS-ath79-add-tl-wa901nd-v4-support.patch

新建个 patch,选择的数字需要大于刚才的那个 907,:

$quilt new platform/920-add-tl-wr743-support.patch

修改如下文件,参照其中703的配置拷贝修改:
$ quilt edit arch/mips/ath79/Kconfig
$ quilt edit arch/mips/ath79/Makefile
$ quilt edit arch/mips/ath79/machtypes.h

#验证下修改的内容:
$ quilt diff

# 保存所有修改到 patch 文件

$ quilt refresh

这个时候我们的 patch 文件还在 build_dir 里, 大概位置是 patches/platform/ 下. 需要同步到 OpenWrt 代码树.
# 退回到顶层工作目录, 执行:
~/openwrt$ make target/linux/update V=s
同步完成后, patch 文件会出现在 target/linux/ar71xx/patches-3.18/ 下.


4、执行编译

删除 tmp 目录
$ rm -rvf tmp/

对于第一次编译,请不要开多线程。。。。因为不好排错
make V=99


如果第一次编译成功的话,之后的编译可以充分发挥多核心的优势了

首先执行:
ulimit -s 10240
这个命令是防止爆栈

对make加入多线程编译支持
make V=99 -j线程数
速度比单线程快N倍


第二次编译命令示例:

rm .config
rm -rf tmp

make clean
make defconfig
make menuconfig
ulimit -s 10240
make V=99 -j8


5、编译后的固件

8M固件,15.05正式版,内嵌pptp、luci、DDNS、网络共享:


编译时还碰到一个问题,opkg版本和luci版本不兼容,opkg是随openwrt发行的版本,luci则是通过feed下载的最新版本,新luci调用了最新版本opkg中增加的命令参数“--size”,而旧版本opkg不支持

解决方法:

1)从新openwrt中提取新的补丁:/openwrt/package/system/opkg/patches中拷贝260-add-print-package-size.patch文件到主干版本的对应目录

2)参照新版本修改/openwrt/package/system/opkg/makefile

或者直接把/openwrt/package/system/opkg目录从新版本拷贝到主干版本目录。


固件下载:

openwrt-ar71xx-generic-tl-wr743n-v2


原始贴:


btw:如果自己编译的话,可能还是不能用官方的ipk进行应用安装,要解决此问题,参见下面的帖子解决OPENWRT自编译版本内核不兼容问题

评分

参与人数 2恩山币 +4 收起 理由
na*** + 1 楼主威武—我就想问问挖掘机技术哪家强?
q15*** + 3 楼主威武—我就想问问挖掘机技术哪家强?

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
来自手机 | 显示全部楼层
学习学习,谢谢分享
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

学习学习,感谢楼主分享
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报



make prereq后出错,是不是没fq的缘故

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

试试: sudo apt-get install subversion git flex g++ gawk zlib1g-dev libncurses5-dev  详情 回复 发表于 2016-9-10 11:12
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
q155128 发表于 2016-9-10 11:04
make prereq后出错,是不是没fq的缘故

试试:
sudo apt-get install subversion git flex g++ gawk zlib1g-dev libncurses5-dev

评分

参与人数 1恩山币 +3 收起 理由
q15*** + 3 完美解决,感谢大神

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
谢谢,正好需要
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

算是最新的编译教程了,楼主可以再加上 添加软件源码的教程,修改编译固件大小的部分
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
感谢。转载咯。hoho
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

学习学习,谢谢分享
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
谢谢分享,正在学习
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-28 22:04

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

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