鸣谢

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.cgit add ......# 提交修改至本地数据库,并写好说明git commit# 与master分支比对,生成git专用patchgit 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)

LEDE/OpenWrt for TL-WDR5600(QCA956X)相关推荐

  1. 闪讯利用openwrt路由器拨号教程(四)

    4.openwrt连接L2tp     闪讯插件sxplugin.so我们已经做好了,接下来我们将这个插件给装到路由器上运行.     在做这个之前我们需要为openwrt设置一些网络连接,不要忘了, ...

  2. 闪讯利用openwrt路由器拨号教程(一)

    首先,我想说我不能保证开心跳还能使用,如果你不介意这些,谢谢你接着看. 好了,废话少说,本例程适合浙江闪讯(PPPoe或者L2TP)用户路由器进行拨号,其它省的暂未测试. 一.准备工作 路由器A一台( ...

  3. 闪讯利用openwrt路由器拨号教程(二)

    2.制作openwrt闪讯插件的前奏--搭建openwrt简易交叉编译环境 在此特别感谢https://github.com/miao1007,提供相关源码. (1)搭建linux虚拟机(Ubuntu ...

  4. 捣鼓openwrt不死bootloader (1)

    最近有个项目需要用到openwrt, 平台是ar9331和ar9341, 本项目的老同事采用的是大H的不死boot, 但是没有源码,不能做定制化,生产就受到很大的牵制, 于是就想着自己来捣鼓下这个bo ...

  5. OpenWrt设置路由器联网(无线)

    openwrt版本:19.07.5 1. 如下图所示或输入 http://192.168.1.1/cgi-bin/luci/admin/network/wireless 进入openwrt的设置界面 ...

  6. Netgear wndr3700v2 路由器刷OpenWrt打造全能服务器(二)刷OpenWrt

    为什么80%的码农都做不了架构师?>>>    1. 下载3700V2的OpenWrt固件http://downloads.openwrt.org/bac ... quashfs-f ...

  7. 闪讯利用openwrt路由器拨号教程(三)

    4.制作openwrt闪讯插件--修改与编译    这里特别感谢https://github.com/miao1007提供闪讯插件源码.    交叉编译环境搭建好后,我们开始制作闪讯拨号的插件.首先我 ...

  8. Netgear wndr3700v2 路由器刷OpenWrt打造全能服务器(五)SVN服务

    为什么80%的码农都做不了架构师?>>>    1.  SecureCrt连接到路由器 2.  安装subversion-server opkg update opkg instal ...

  9. Netgear wndr3700v2 路由器刷OpenWrt打造全能服务器(一)序章

    刷机,就是给路由器重新装一个操作系统.那么,为什么那么多人想重装系统呢?因为装了自己的系统,就可以按照自己想要的功能,在路由器上安装相应的软件,甚至可以自己写个程序放上去.比如,我想要一个ftp服务器 ...

最新文章

  1. go 通道 返回_GCTT 出品 | Go 语言的缓冲通道:提示和技巧
  2. JZOJ 6030. 【GDOI2019模拟2019.2.25】白白的
  3. webpack:多文件、多环境、跨域处理、热加载
  4. 打开php.ini中的Safe_mode,会影响哪些函数?
  5. Asp.NET中如何一次性下载多个文件
  6. Java中不可或缺的59个小技巧,贼好用!
  7. 零窗口探测怎么抓包_Linux服务器下的HTTP抓包分析
  8. @程序员,Web 开源神器了解一下? | 程序员硬核评测
  9. Android OMX介绍(总括)
  10. mysql物业管理系统设计_Java开发物业管理系统:数据库表单设计
  11. android百度地图导航功能开发,Android百度地图应用开发基础知识
  12. 提高 Mac OS X 速度的 52 个方法
  13. JS脚本实现浏览器自动点击(阿里员工秒杀月饼)
  14. Java ques: java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
  15. 5G 产业链:基站天线和小基站爆发潜力大
  16. react 树形结构递归方法
  17. 青箬笠,绿蓑衣,斜风细雨不须归
  18. Mac显示隐藏文件目录
  19. git revert回滚merge提交时报错(commit xxx is a merge but no -m option )
  20. String task用法

热门文章

  1. 生成二维码并且将生成图片转换成输入流
  2. 油猴脚本、常用拓展的教程
  3. 层次分析法(AHP)算法简介
  4. 哈工大2021算法设计与分析期末试题
  5. 基于Arduino的电子秤设计
  6. 2023年第十三届MathorCup高校数学建模挑战赛|A题|量子计算机在信用评分卡组合优化中的应用
  7. Egret中使用TiledMap
  8. minitab三因素三水平数据的因子设计和方差分析流程
  9. m基于VDLL的矢量型GPS信号跟踪算法matlab仿真
  10. 浙大数据结构题集02-线性结构2 一元多项式的乘法与加法运算python版