嵌入式 驱动自己的无线网卡--ar9271芯片

来源:互联网 发布:mac ctrl command 编辑:程序博客网 时间:2024/05/17 08:14

首先是系统上已有该无线网卡的驱动程序,而其实无线网卡芯片的驱动安装识别,信息记录在inf文件,它会记录好你VID&PID,当你把网卡通过USB口接入到PC时,它就会对应这个信息去查找相应的inf文件,如果有,那么就给你安装上,设备的VID&PID,可通过把设备插入到PC,通过设备管理器->找到相应的设备->右击属性->详细信息,来确认。

所以,如果只是简单的公司内部测试,知道自己手边无线网卡的VID&PID,想试用别的厂商开发的驱动,则需要先修改自己无线网卡的VID&PID(windows系统上的话,则只需把VID&PID添加到inf文件里),生产这个芯片的厂家会有这个工具,然后到linux系统上,查询它所支持的VID,然后修改成相应的即可。

以下是我在ubuntu下驱动ar9271芯片无线网卡的经验:

一、经多番参考网页帖子,发现有人提到在内核2.6.32的版本就开始有内嵌ar9271的驱动,也就是说,只要内核版本在这个以上,一般来说,是已经有了ar9271驱动的了,只要编译时有配置该相应的驱动模块即可,检测办法可通过ls/lib/firmware/ | grep ‘9271’,目前驱动有两个如下,

有这两个固件之一的话说明目前该系统已支持驱动ar9271芯片的无线网卡了,先说有这个固件的话,从http://linuxwireless.org/en/users/Drivers/ath9k_htc这个网址中我查到,目前该固件中支持的厂商IDVID)有以下这些

本人就是因为VID的问题,把网卡插进ubuntu系统没反应,还郁闷为啥别人都说ubuntu这方面做的好,基本都是支持的,后来才发现是VID的问题,哥们可以看看USB Vendor这一栏,由于俺们公司的产品只是用了ar9271的芯片,VID却是自定义的(07b8),所以检测后发现匹配不到已支持的VID,就不会为咱U1加载驱动了,TNND,整了我几天--“..所以,如果手头上拿的是自己公司的研发产品,就要注意VID的问题了,只要修改成以上列表中的某一个(PID也要相应修改好),就OK了,比如我用的是TP-Link0cf3;但可以肯定的是驱动肯定某些方面没能做好,但基本功能应该都是OK的,毕竟那是人家针对他们公司产品做的驱动。

上面是有固件的,接下来说没有发现该固件的话,如果内核没有编译进该驱动模块(一般都有,除了被人定制的内核,ubuntu系统应该就有,不过有看到在ubuntu_10.04没支持的),我能想到的解决办法有两个,一是重新下载内核版本,更换系统内核(这个不好搞,麻烦点);另外一个是下载ar9271的驱动程序,手动make

想玩第一种的哥们就自己瞎折腾了,网上也有教程。我这里说说第二种:

可以参考该帖子http://hi.baidu.com/kerving/blog/item/77be9b25f664eb23c8955986.html

a. 下载固件

新固件下载地址:http://linuxwireless.org/download/htc_fw/

老固件下载地址http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=tree

固件对应的名称参考上面提到的,就那两个,老版本的是ar9271.fw,新的是htc_9271.fw

b. 下载源代码驱动(我的理解);

compat-wireless-2.6http://www.orbit-lab.org/kernel/compat-wireless-2.6/

这个网址是上边那个帖子提供的,我自己找了找linuxwireless.org发现已经有更高的发

行版本了,如下网址:

http://linuxwireless.org/en/users/Download/stable/#compat-wireless_stable_releases

但要注意到一点,它的版本是对应内核型号的,所以别只看到高版本号的就下,要对应内核版本;如下图它的提示:

c. 好了,现在开始安装了:

把前面下载的固件*.fw拷贝到/lib/firmware目录下,
解压compat-wireless-*这个tar包,进入该目录,运行以下代码:
./scripts/driver-select  ath9k_htc(你无限网卡对应的型号,可以查查它都有啥型号可选)
make

Make install

注:关于型号的选择,可以参考网址:

Ar9271可在该网址http://linuxwireless.org/en/users/Drivers/ath9k_htc/devices

对应的是ath9k_htc的;

ath9k的又是支持哪些芯片的呢,参考如下:

http://linuxwireless.org/en/users/Drivers/ath9k/devices

d. 如果你的网卡是上边固件已经支持的VID&PID,那恭喜你,现在就完事了,如果是某开发人员在玩弄您的研发产品,请把您手边的驱动VID&PID改成以上列表的,这样呢,就可以驱动起来了,以后可以改改别人的源程序,然后也给自个弄个公开的VID&PID