wifi 驱动移植范例

RT3070wifi模块的移植 

http://linfengdu.blog.163.com/blog/static/11771073201102103923846/

平台:TI dm6441, ,linux2.6.18,

wifi:RT3070

我看wifi模块上没有写是镭凌公司的,因为公司同事是在另一个公司买的,但是当我看模块的驱动手册时,看到了驱动模块是rt3070sta.ko,狗狗一下后知道了一切。于是:下载了wifi驱动。

wifi驱动是DPO_RT3070_LinuxSTA_V2[1].3.0.4_20100604.tar.bz2在镭凌的官网上可以下载到最新驱程源码。

一:配置内核

Make menuconfig:

Device Drivers  --->

Network device support  --->

Wireless LAN (non-hamradio)  --->

[*] Wireless LAN drivers (non-hamradio) & Wireless Extensions

[*]   Wireless Extension API over RtNetlink

---   Obsolete Wireless cards support (pre-802.11)

< >   STRIP (Metricom starmode radio IP)

< >   USB ZD1201 based Wireless device support

< >   IEEE 802.11 for H

不然你即使编译好了这个模块也不能用

二、当然是编译模块咯,看驱动里面的readme,根据它来改驱动:

1、改Makefile:  里面没有dm6441平台的,我看到有dm6446的,所以就在这里改了

ifeq ($(PLATFORM),DM6446)

LINUX_SRC = /root/work/linux-2.6.18_pro500

CROSS_COMPILE=/opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-

Endif

这两个路径一定要正确。后来我想了一下这个Makefile里面的平台只是指定了内核和编译工具链,应该随便改哪个平台都是一样的吧。

2、改os/linux/config.mk

设置CC,LD :
    CC := $(CROSS_COMPILE)gcc
    LD := $(CROSS_COMPILE)ld

不用修改。

3.复制.dat文件到/etc/目录:
    README上说是把RT2870STA.dat 复制到 /etc/Wireless/RT2870STA/RT2870STA.dat,

这里的目录要自己建。

三、用到的测试工具和库文件。

后来我从厂家那里拿到了他们驱动和工具。

我把厂家驱动光盘里WF8000-U_091225/linux/usr下的bin文件cp到/usr/bin 下。注意要改权限  chmod a+x /usr/bin/* 用于测试的工具就算装好了。

但是我把 libiw.so.29拷到/lib目录下但是和没拷错误一样,结果拷到根目录下成功,但是库不能放在这里啊,我估计要放到/usr/lib下,还没有试。

四、测试:

查看模块驱动里面的iwpriv_usage.txt可知道各个命令的参数,我由于当初没有看这里面的东西在进入有密码的路由器时吃了大亏,原来这里写的很清楚。

insmod   rt3070sta.ko

ifconfig ra0 up     启用无线网卡,至于为什么是ra0,因为我的使用手册上是这样做的

此时cat /proc/wireless   可以看到多了一个ra0

iwlist scanning 可以搜索到可用的网络  iwlist ra0 scanning  (只搜索ra0的无线网络)

iwpriv ra0 set SSID="name"无线网络配置  name是搜到的一个网络的名字。假如不要密码这样就行了。

iwpriv ra0 set WPAPSK="A3DDD"  输入登陆密码

iwconfig ra0 key open       打开密码   输入密码后 一定要加这条命令哦,不然连接不上

ifconfig ra0 192.168.1.109 netmask 255.255.255.0为无线网卡指定IP地址

设置网关   route add default gw 192.168.1.1

之后我在ubantu上ping 192.168.1.109 成功。这些命令就是所谓的工具。

在超级终端ping 外网成功。

各种密码的命令参数,这在iwpriv_usage.txt里面可以查到。

无密码:

iwpriv ra0 set SSID="Vodafone D100"

注意:在切换到无密码的用户时,若之前是有密码用户,则要iwconfig ra0 key off。

WPA型密码:

网上说若路由器的加密方式是wpa的话要移植wpa_supplicant工具,我没有这样做,还是可以。

iwpriv ra0 set NetworkType=Infra       网络类型有Infra,Adhoc两种,前者是基于AP的,后者是p2p

iwpriv ra0 set AuthMode=WPAPSK                OPEN,SHARED,WEPAUTO,WPAPSK,WPA2PSK,WPANONE

iwpriv ra0 set EncrypType=TKIP                NONE,WEP,TKIP,AES

iwpriv ra0 set SSID="Vodafone D100"

iwpriv ra0 set WPAPSK="1234567890"

WEP型密码:

iwpriv ra0 set NetworkType=Infra

iwpriv ra0 set AuthMode=OPEN

iwpriv ra0 set EncrypType=WEP

iwpriv ra0 set DefaultKeyID=1

iwpriv ra0 set Key1="1234567890"

iwpriv ra0 set SSID="Vodafone D100"

切换用户登陆:

直接重新输入登陆名字和输入密码的命令,值得注意的是在切换有密码和没有密码的用户时要相应的iwconfig ra0 key open和iwconfig ra0 key off。

网上说若路由器的加密方式是wpa的话要移植wpa_supplicant工具,我没有作过,看别人的http://blog.csdn.net/jimmy_1986/archive/2010/09/09/5872536.aspx

错误信息

PING 192.168.1.1 (192.168.1.1): 56 data bytes

ping: sendto: Network is unreachable

此原因是没有设置ip   ifconfig ra0 192.168.1.109 up    解决。

ping 219.134.65.113   外网

ping: sendto: Network is unreachable

此原因是没有设置网关   route add default gw 192.168.1.1   解决。

网上资料

http://blog.csdn.net/jimmy_1986/archive/2010/09/09/5872536.aspx

http://blog.chinaunix.net/u3/109825/showart_2143279.html

RT73 wifi无线网卡驱动移植过程 收藏

移植环境:

主机操作系统:Ubantu 8.10

目标系统:linux-2.6.22.6

交叉编译器:arm-softfloat-linux-gnu-gcc-3.4.5

一、RT73驱动编译

1、 下载RT73驱动源码

 RT73_Linux_STA_Drv1_0_4_0.zip

生成两个目录:

Module(驱动)  WPA_Supplicant-0.5.8(wpa网络工具)

2、 修改Makefile

5 #PLATFORM=PC

6 PLATFORM=CMPC

33 #EXTRA_CFLAGS += -DDBG

40 ifeq ($(PLATFORM),CMPC)

41 LINUX_SRC = /source/kernel/linux-2.6.22

42 endif

注:#EXTRA_CFLAGS += -DDBG 一定要关掉,否则终端会不停的循环打印扫描网络的信息

3、 配置内核支持wifi网络

否则会出现如下错误:

/mnt/sdc/rt73/2009_0713_RT73_Linux_STA_Drv1.1.0.3/Module/rtmp_main.c:1163: error: structure has no member named `wireless_handlers‘

<*> Packet socket

配置完毕后,需要编译下内核,目的是使配置在include/linux/autoconfig.h中生效

1、  编译源码,生成rt73.ko

/rt73/2009_0713_RT73_Linux_STA_Drv1.1.0.3/Module# make

拷贝驱动到目标系统

#cp rt73.ko /source/rootfs/rt73/

2、  拷贝固件到目标系统

#cp rt73.bin /source/rootfs/etc/Wireless/RT73STA/

#cp rt73.rt73.dat /source/rootfs/etc/Wireless/RT73STA/

二、         移植wpa_supplicant

因为现在的无线wifi网络大多是wpa加密。所以需要移植wpa_supplicant工具

1、 下载源码

http://hostap.epitest.fi/wpa_supplicant/

下载wpa_supplicant-0.7.2.tar.gz (openssl用到0.7.2提供的补丁)

下载wpa_supplicant-0.5.8.tar.gz  (最终工具版本)

#tar xvfz wpa_supplicant-0.7.2.tar.gz

#tar xvfz wpa_supplicant-0.5.8.tar.gz

下载www.openssl.org/source/openssl-0.9.8e.tar.gz

#tar zxvf openssl-0.9.8e.tar.gz

2、编译openssl库

将wpa_supplicant中的补丁拷贝到openssl中

# cp wpa_supplicant-0.7.2/patches/openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/

#cd openssl-0.9.8e

#mkdir  /usr/local/ssl

#vim  Makefile

CC= arm-softfloat-linux-gnu-gcc

AR= arm-softfloat-linux-gnu- r $(ARFLAGS) r

RANLIB= arm-softfloat-linux-gnu-ranlib

INSTALLTOP=/usr/local/ssl

OPENSSLDIR=/usr/local/ssl

#make

#make install

在/usr/local/ssl目录下安装了ssl库

3、 编译wpa_supplicant

参照rt73驱动源码包中的:2009_0713_RT73_Linux_STA_Drv1.1.0.3/ WPA_Supplicant-0.5.8/readme文件提示的步骤完成下面的操作

进入pa_supplicant-0.5.8.tar.gz解压生成的wpa_supplicant-0.5.8目录中:

#cp ../2009_0713_RT73_Linux_STA_Drv1.1.0.3/WPA_Supplicant-0.5.8/driver_ralink.* ./

#cp ../2009_0713_RT73_Linux_STA_Drv1.1.0.3/WPA_Supplicant-0.5.8/driver.h ./

#cp ../2009_0713_RT73_Linux_STA_Drv1.1.0.3/WPA_Supplicant-0.5.8/events.c ./

#cp ../2009_0713_RT73_Linux_STA_Drv1.1.0.3/WPA_Supplicant-0.5.8/wpa_supplicant.c ./

#cp ../2009_0713_RT73_Linux_STA_Drv1.1.0.3/WPA_Supplicant-0.5.8/wpa_supplicant_i.h ./

#cp ../2009_0713_RT73_Linux_STA_Drv1.1.0.3/WPA_Supplicant-0.5.8/defconfig ./

#cp ../2009_0713_RT73_Linux_STA_Drv1.1.0.3/WPA_Supplicant-0.5.8/drivers.c ./

#cp ../2009_0713_RT73_Linux_STA_Drv1.1.0.3/WPA_Supplicant-0.5.8/Makefile ./

#cp defconfig   .config

#vim .config

CC= arm-softfloat-linux-gnu-gcc -L /usr/local/ssl/lib/
     CFLAGS += -I/usr/local/ssl/include/
     LIBS += -L/usr/local/ssl/lib/

#make

生成wpa_supplicant

#cp wpa_supplicant  /source/rootfs/bin

#cp wpa_supplicant-0.7.2/wpa_supplicant/examples/wpa-psk-tkip.conf  /source/rootfs/etc/wpa_supplicant.conf

#vi /source/rootfs/etc/wpa_supplicant.conf

修改内容如下:

# WPA-PSK/TKIP

ctrl_interface=/var/run/wpa_supplicant

network={

ssid="farsight"   //填写无线网络的的用户名

key_mgmt=WPA-PSK

proto=WPA

pairwise=TKIP

group=TKIP

psk="12345678"   //填写密码

}

在开发板终端:

#mkdir –p /var/run/wpa_supplicant

4、 wireless_tools移植

下载wireless_tools.28.tar.bz2

#tar xvfj wireless_tools.28.tar.bz2

#cd wireless_tools.28

#mkdir ../wireless_tools

#vi Makefile

PREFIX=$(PWD)/../wireless_tools

CC= arm-softfloat-linux-gnu-gcc

AR= arm-softfloat-linux-gnu-ar

#make

#make install

#cp ../wireless_tools/lib/*  /source/rootfs/lib/

#cp ../wireless_tools/sbin/*  /source/rootfs/sbin/

5、 设置开发板启动脚本

insmod /rt73/rt73.ko

ifconfig rausb0 192.168.0.12

/bin/wpa_supplicant -B -irausb0 –c /etc/wpa_supplicant.conf –Dralink

无线网卡将被激活。

时间: 2024-11-08 21:37:19

wifi 驱动移植范例的相关文章

I.MX6 AW-NB177NF WIFi 驱动移植问题

/******************************************************************************** * I.MX6 AW-NB177NF WIFi 驱动移植问题 * 说明: * 之前驱动移植,但看不到有wlan设备产生,于是感觉是wifi驱动出了问题,于是开始 * 分析厂家提供的wifi驱动,发现id对应的信息不对,经过与FAE确认之后并验证,确实是 * 这个问题导致的. * * 2016-6-20 深圳 南山平山村 曾剑锋 ***

wifi驱动移植

目标板:Hi3518 内核版本:linux3.0.8 1.修改makefile #PLATFORM = PC //注释掉 PLATFORM = HI3518 //支持平台 ifeq ($(PLATFORM),HI3518) LINUX_SRC = /root/hi3518/linux-3.0.y //内核路径 CROSS_COMPILE = /opt/hisi-linux-nptl/arm-hisiv100-linux/target/bin/arm-hisiv100nptl-linux- //工

飞凌OK6410开发板SDIO无线8189WIFI模块驱动移植

为什么要移植?开发板不是已经提供了无线驱动吗? 貌似是这样的..本来是好用的.加入自己第三方驱动后发现WIFI用不了...最后发现飞凌提供的内核里面没有8189芯片的代码...问售后他们说那边是好的.这么到我这里就不行了呢?妈蛋...郁闷了...智能自己动手,把驱动移植进去... 1  找8189es芯片的原厂驱动代码:这里我找了N久,传到网盘里... http://pan.baidu.com/s/1bn7Gz6n 2 解压拷贝 tar jxvf rtl8288EUS_rtl8189ES_lin

I.MX6 WIFI wireless_tools 移植

/******************************************************************************** * I.MX6 WIFI wireless_tools 移植 * 说明: * 移植完了wifi驱动,现在要能够测试wifi驱动了,但是Android中间层好像出了点 * 问题,所以需要有工具能够直接测试wifi功能,于是找了这个工具移植一下. * * 2016-6-20 深圳 南山平山村 曾剑锋 *******************

linux网卡驱动移植

这里重要的是物理层PHY receiver,MAC(media access control)层,这里与软件中的协议栈不同,在硬件上MAC是PHY的下一层.DM9000A将MAC和PHY做到一起,也可以像IIS设备那样,SOC内有IIS的控制器,而声卡UDA1341放在片外.网卡当然也有这种设计,它是把PHY的下层MAC放入SOC内,片外的是PHY,当然我暂时还没见过这种的.DM9000A的输入是并行的总线,可以和CPU直接IO.而IIS那种需要通过:CPU CORE BUS->I2S控制器->

【智能家居篇】wifi驱动的理解(1)——驱动架构

转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 在分析WIFI驱动前,分享一下个人对Linux驱动的一些了解,其实纵观Linux众多的设备驱动,几乎都是以总线为载体,所有的数据传输都是基于总线形式的,即使设备没有所谓的总线接口,但是Linux还是会给它添加一条虚拟总线,如platform总线等:介于WIFI的驱动实在是太庞大了,同时又是基于比较复杂的USB总线,所以建议读者在看此文章之前,先了解一下USB设备驱动和网络设备驱动. 我们要看懂WIFI驱动,首先要

AM335x(TQ335x)学习笔记——Nand&amp;&amp;网卡驱动移植

移植完成声卡驱动之后本想再接再励,移植网卡驱动,但没想到的是TI维护的内核太健壮,移植网卡驱动跟之前移植按键驱动一样简单,Nand驱动也是如此,于是,本人将Nand和网卡放在同一篇文章中介绍.介绍之前先感慨一下:TI的维护的内核真的很健壮,DTS真的很强大. 1. Nand驱动移植 阅读TQ335x的原理图可知,TQ335x的Nand连接到了GPMC上,且都是使用的相应引脚的MODE0复用功能,AM335x上上电复位后这些引脚的默认状态就处于MODE0模式,故无需进行pinmux设置,原始的DT

linux驱动移植(nand,yaffs2)

原文:http://blog.sina.com.cn/s/blog_7090b8670101b0bi.html linux驱动移植(nand,yaffs2) 在linux操作系统的顺利移植之后,linux的内核虽然在板子上跑了起来,但是此时linux还不支持板子的的各个硬件,比如说lcd,摄像头,声卡,usb等模块,我们必须要在板子上装入驱动程序后,才能上这些硬件在linux操作系统下工作. 这些驱动在内核中都有驱动的源码,我们要做的就是将这些驱动源码编译到内核中,当然在编译之前是需要对驱动源码

DM9000驱动移植在mini2440(linux2.6.29)和FS4412(linux3.14.78)上的实现(deep dive)篇一

关于dm9000的驱动移植分为两篇,第一篇在mini2440上实现,基于linux2.6.29,也成功在在6410上移植了一遍,和2440非常类似,第二篇在fs4412(Cortex A9)上实现,基于linux3.14.78,用设备树匹配,移植过程中调试和整体理解很重要,一路上幸有良师益友指点,下面详细介绍: 1.物理时序分析相关 DM9000芯片是DAVICOM公司生产的一款以太网处理芯片,提供一个通用的处理器接口.一个10/100M自适应的PHY芯片和4K双字的SRAM.内部框架如下,涉及