Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2897859
  • 博文数量: 674
  • 博客积分: 17881
  • 博客等级: 上将
  • 技术积分: 4849
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-17 10:15
文章分类

全部博文(674)

文章存档

2013年(34)

2012年(146)

2011年(197)

2010年(297)

分类: LINUX

2011-05-15 10:24:14

上周做了一下wifi模块的移植。趁周末,总结一下。
平台: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   解决。
 
 
网上资料
 
 
阅读(732) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

lantianyu5202011-07-01 10:57:24

呵呵,很八错