11AC ath10k的移植
来源:互联网 发布:unity3d 跳跃代码 编辑:程序博客网 时间:2024/05/29 03:50
最近公司要使用11ac的网卡,由我负责移植ath10k的驱动,这边做个笔记
网卡使用的是WLE900VX,芯片是QCA9880,是一颗3*3 11AC的网卡。主控是arm的海思芯片,SDK中的内核版本是3.0.y。由于之前也是用Atheros的2.4G芯片,使用内核自带的ath9k驱动。不过这个版本的内核肯定是不支持11AC的,于是直接去backports http://drvbp1.linux-foundation.org/~mcgrof/rel-html/backports/ 移植这个兼容驱动。(backports这是好东西,不过Linux世界好东西太多了,O(∩_∩)O~)在backports里边发现,3.19以下的版本中都没有11AC支持,只有3.19这个版本有。于是就编译这个版本的驱动。
由于之前搞ath9k,所以按照老路子,加载驱动,ifconfig查看设备。但是加载了驱动之后,ifconfig没有设备。但是有如下打印
ath10k_pci 0000:01:00.0: could not fetch firmware file 'ath10k/QCA988X/hw2.0/firmware-3.bin': -2
ath10k_pci 0000:01:00.0: could not fetch firmware file 'ath10k/QCA988X/hw2.0/firmware-2.bin': -2
ath10k_pci 0000:01:00.0: could not fetch board data (-2)
ath10k_pci 0000:01:00.0: could not fetch firmware files (-2)
ath10k_pci 0000:01:00.0: could not probe fw (-2)
原来它除了要加载驱动,还需要加载个固件。(⊙﹏⊙)b。去这个地方下载https://github.com/kvalo/ath10k-firmware,根据打印看应该是找firmware-3.bin,然后又去找firmware-2.bin。于是我就下载了firmware-3.bin。但是不知道怎么加载这个固件。于是网上找啊找,忘记在哪里找到了,Linux加载固件的脚本
当设备驱动加载之后,会在/sys/class/firmware/下面生成设备的目录
#ls -l /sys/class/firmware/
lrwxrwxrwx 1 root root 0 Jan 1 00:00 0000:01:00.0 -> ../../devices/pci0000:00/0000:00:00.0/0000:01:00.0/firmware/0000:01:00.0
-rw-r--r-- 1 root root 4096 Jan 1 00:00 timeout
这个目录中有几个文件比较重要,加载固件时先echo 1 >/sys/class/firmware/0000\:01\:00.0/loading
然后把下载的固件cat /lib/firmware/ath10k/QCA988X/hw2.0/firmware-3.bin >/sys/class/firmware/0000\:01\:00.0/data
完了再echo 0 >/sys/class/firmware/0000\:01\:00.0/loading
# ls -l /sys/class/firmware/0000\:01\:00.0/
-rw-r--r-- 1 root root 0 Jan 1 00:00 data
lrwxrwxrwx 1 root root 0 Jan 1 00:00 device -> ../../../0000:01:00.0
-rw-r--r-- 1 root root 4096 Jan 1 00:00 loading
lrwxrwxrwx 1 root root 0 Jan 1 00:00 subsystem -> ../../../../../../class/firmware
-rw-r--r-- 1 root root 4096 Jan 1 00:00 uevent
此时,还不可以。换了几个固件都不行
后来试着突然可以了,hostapd起来之后也是11ac,我的努比亚连上去之后433Mbps妥妥的。然后看了加载顺序,顺序是这样的
先加载两次固件,也就是执行两次下面的命令
echo 1 >/sys/class/firmware/0000\:01\:00.0/loading
cat /lib/firmware/ath10k/QCA988X/hw2.0/firmware-3.bin >/sys/class/firmware/0000\:01\:00.0/data
echo 0 >/sys/class/firmware/0000\:01\:00.0/loading
然后几秒后会有如下打印
ath10k_pci 0000:01:00.0: could not fetch board data 'ath10k/QCA988X/hw2.0/board.bin' (-2)
然后在加载两次固件,设备起来了,试了多次之后都是ok,然后写了个脚本先这样用。
至于为啥这么坑爹,继续找,可能是我哪里没搞好,知道的大神请不吝赐教。
- 11AC ath10k的移植
- openwrt ath10k 相关汇总
- 11ac 高速的原因
- 伟大的AC米兰!
- HZF的 AC Dream
- AC自动机的学习
- 后11n技术的802.11ac技术精华问答
- 不给AC的奇怪玩意(openjudge1.5 11)
- AC
- AC
- AC
- 什么是彩票的AC值
- AC大牛的经典语录
- AC的设计和实现
- AC自动机的实现原理
- hdu2222 简单的AC自动机
- HDU3065----AC自动机的初级阶段
- 学习AC自动机的资料
- 对MySQL的死连接Sleep的进程的来源研究 不指定
- 分治法--最接近点对问题
- Mac OS X下架设和使用SVN版本管理环境
- 【Java-常用类】String类,StringBuffer类,StringBuilder类
- linux驱动之模块驱动makefile详细分析
- 11AC ath10k的移植
- 学习安卓推荐的一些资源和准备
- Asp.net中的<@register%>
- 如何在Ubuntu QML应用中震动(vibration)
- c# web站点提交报错 从客户端(Submit="...")中检测到有潜在危险的 Request.Form 值。
- android 第三方登录和分享(5)
- rman备份恢复命令之switch
- TabHost 和 FragmentTabHost
- iOS开发经验之iOS开发学习路径的一些建议