找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2016-9-10 10:10 | 显示全部楼层 |阅读模式
本帖最后由 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 收起 理由
naypt + 1 楼主威武—我就想问问挖掘机技术哪家强?
q155128 + 3 楼主威武—我就想问问挖掘机技术哪家强?

查看全部评分

只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
发表于 2016-9-10 10:15 来自手机 | 显示全部楼层
思考思考,谢谢分享
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2016-9-10 10:59 | 显示全部楼层
思考思考,感谢楼主分享
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2016-9-10 11:04 | 显示全部楼层


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

本帖子中包含更多资源

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

×

点评

试试: sudo apt-get install subversion git flex g++ gawk zlib1g-dev libncurses5-dev  详情 回复 发表于 2016-9-10 11:12
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

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

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

评分

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

查看全部评分

只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2016-9-16 03:30 来自手机 | 显示全部楼层
谢谢,正好需要
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2016-9-16 12:45 | 显示全部楼层
算是最新的编译教程了,楼主可以再加上 添加软件源码的教程,修改编译固件大小的部分
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2016-9-16 14:25 来自手机 | 显示全部楼层
感谢。转载咯。hoho
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2016-9-22 19:02 | 显示全部楼层
思考思考,谢谢分享
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2017-9-28 17:02 来自手机 | 显示全部楼层
谢谢分享,正在思考
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2026-8-23 21:02

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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

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