LEDE/OpenWrt for TL-WDR5600(QCA956X)

鸣谢

Bootloader
Breed->功能强大的多线程 Bootloader

ART
如何提取 ART 数据
OpenWRT 下以太网MAC地址的写入
新手固件ART提取教程,一看就懂!(44楼)

添加新设备
Adding a new device
ar71xx: add support for TP-Link TL-WDR6500 v2
openWRT手札之一:target profile添加新路由器
openWRT手札之二:kernel arch machine新增路由器
准备 linux 内核板级支持(新)

模板
ar71xx: add support for TP-Link TL-WDR6500 v2
ar71xx: add support for RB750r2
ar71xx: add support for TL-WR802N Version 2

做补丁(patch)
廖雪峰-Git教程
如何贡献代码
如何提交内核补丁
官方指导
如何利用git制作和提交patch
多个commit 合并为一个patch

补丁规范化
LEDE Project-Submitting patches

两位老外
Christian Lamparter
Piotr Dymacz

意外资源
Pyra Kernel Git Source Tree
OpenWrt 智能路由器开发指南(罕见的出版物)

TP-Link TL-WDR5600 v1
CPU: Qualcomm QCA9561(750MHz)
Wireless: Qualcomm QCA9561(2.4G) + QCA9887(5G)
Flash: Winbond W25Q64FVSIG(8M)
RAM: ESMT M14D5121632A(64M)

与TP-Link TL-WDR6500 v2的主要区别在于无线部分(QCA9882),去年6月就想做了,可惜条件尚不成熟。ath10k-firmware关于QCA9887的驱动包也是有的,当然到了现在情况更好,8个月前LEDE编译菜单里都没有看到QCA9887,只能手动加。

  1. 拿到一块裸板
  2. 通电检查各功能,原厂系统是否正常
  3. 拆开,看芯片标示(SoC, Wireless, Flash),找TTL针
  4. 寻找合适的bootloader和可能的固件
  5. 取下Flash上编程器,备份,取出ART
  6. 刷入bootloader,Flash焊回原处
  7. 进bootloader改MAC地址,刷固件、ART
  8. 重启看ttl输出
  9. 调整:无线,网口,灯序
  10. 新建分支,找模板patch,改源码,做适配
I.提取原厂ART数据

ART = Atheros Radio Test - it contains mac addresses and calibration data for the wifi (EEPROM). If it is missing or corrupt, ath9k won’t come up anymore.

Winhex/bless编辑器,找mac关键字,再向下找ART数据。

1.”mac”关键字

这里写图片描述
* “mac”字段后跟着机器的MAC地址,若外壳损毁可由此找回,通过breed控制台对MAC地址进行更新。

2.往下找0x0202开头的数据

在0001D804找到机器的MAC地址,
往下到0001DFFC,从这里开始是ART数据,以0x0202开头,共0x440字节(1.06kb),整块ART数据大小和贴吧里的一样。
这里写图片描述

3.新建64k空白文件,art数据置入

breed会给上传的ART固件做检测(大小不是64k会提示),但不会自动偏移0x1000字节(即需要手动在art.bin中空出0xfff字节,以0x1000为ART数据的起始点)。新建64k空白文件,全部填充FF,务必以偏移量1000处为起始点(0202前是4个字节的FF)。具体可参考TL-WDR6500的ART数据。

!可能因ART数据写入位置不正确而导致的错误:

A.数据从0x1001处开始,可以正常启动,但两个无线都不正常(误报firmware损坏):

[ 11.247025] ath10k_pci 0000:00:00.0: firmware crashed! (uuid da80bf5d-78aa-4c27-a21b-4f923cc80a1e)
[ 11.256325] ath10k_pci 0000:00:00.0: qca9887 hw1.0 target 0x4100016d chip_id 0x004000ff sub 0000:0000
[ 11.265856] ath10k_pci 0000:00:00.0: kconfig debug 0 debugfs 1 tracing 0 dfs 1 testmode 1
[ 11.278772] ath10k_pci 0000:00:00.0: firmware ver 10.2.4-1.0-00013 api 5 features no-p2p,ignore-otp,skip-clock-init,mfp crc32 14a57ac6
[ 11.291284] ath10k_pci 0000:00:00.0: board_file api 1 bmi_id N/A crc32 546cca0d
[ 11.298840] ath10k_pci 0000:00:00.0: htt-ver 0.0 wmi-op 5 htt-op 2 cal file max-sta 128 raw 0 hwcrypto 1
[ 11.310652] ath10k_pci 0000:00:00.0: firmware register dump:
[ 11.316504] ath10k_pci 0000:00:00.0: [00]: 0x4100016D 0x000015B3 0x009B436A 0x00955B31
[ 11.324687] ath10k_pci 0000:00:00.0: [04]: 0x009B436A 0x00060130 0x0000001D 0xFD24D656
[ 11.332859] ath10k_pci 0000:00:00.0: [08]: 0xFFFFFFFF 0x00401F6A 0x0000096C 0xFFFFFFFF
[ 11.341038] ath10k_pci 0000:00:00.0: [12]: 0x00000009 0x00000000 0x00958360 0x0095836B

B.不设置偏移量直接写(0偏移量处),不断重启(网传是无线的锅),好像没有ART就只能重启了。

*写入规则:

Linux 下的无线驱动是 ath9k,它要求 ART 数据位于 Flash 的最后 64KB 中。
但是不能直接将 ART 数据写在最后 64KB 的起始位置。ART 数据位于 最后 64KB 起始向下 0x1000 处。
4M Flash 应写在 0x3F1000 处;
8M Flash 应写在 0x7F1000 处;
16M Flash 应写在 0xFF1000处。


II.固件bug

1.用6500的breed及固件(CPU与6500相同);
2.进breed,更新MAC;
3.WAN灯由18改至19(区别于6500),低电平触发;
4.WAN启用导致机器卡死,打补丁ar71xx: fix gmac0 speed function for qca956x

III.patch制作
 # 新建分支并切换
 git branch 分支名 && git checkout 分支名
 # 查看修改
 git status
 # 添加修改
 git add target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wdr5600-v1.c
 git add ......
 # 提交修改至本地数据库,并写好说明
 git commit
 # 与master分支比对,生成git专用patch
 git format-patch -M master
 # 查看提交历史
 git log
 # 合并多次提交(数字3代表前三次)
 git rebase -i HEAD~3
 # 回滚至某次提交(git log查编号)
 git reset --hard 编号(fa8da6ab6019d760e85a202c28c88fc1ade33d83)
 # 另外新建分支,验证patch
 # 提交patch至指定邮件列表(需接入国际互联网)
 # 写完给自己发一遍,检查是否有其它格式问题
 git send-email --smtp-server /usr/bin/msmtp --to lede-dev@lists.infradead.org XXX.patch

IV.版权及开源许可证

术语

外置功放电路(PA:Power Amplifier)
低噪声功放接收电路(LNA:Low Noise Amplifier)

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值