RT3070L无线网卡移植

一、修改内核支持USB无线网卡

[*] Networking support  --->

[*]   Wireless  --->

<*>   cfg80211 - wireless configuration API

[*]   Wireless extensions sysfs files

<*>   Generic IEEE 802.11 Networking Stack(mac80211)

Device Drivers  --->

[*]Network device support  --->

[*]   Wireless LAN  --->

<*>   IEEE 802.11 for Host AP (Prism2/2.5/3 andWEP/TKIP/CCMP)

[*]     Support downloading firmware images withHost AP driver

[*]       Support for non-volatile firmwaredownload

<*>   Ralink driver support  --->

<*>   Ralink rt27xx/rt28xx/rt30xx (USB) support

二、移植RT3070L的驱动

2.1下载网卡驱动

2.2 解压文件

tar -xjf  DPO_RT3070_LinuxSTA_V2.3.0.2_20100412.tar.bz2

由于文件名太长,重命名一下

mv  DPO_RT3070_LinuxSTA_V2.3.0.2_20100412  rt3070l

2.3进入rt3070l目录,修改makefile

README_STA_usb 这个文件告诉了移植的方法,可以浏览一下

Platform 选择默认的PC

改变交叉编译路径和linux源码路径

2.4编译驱动程序

2.4.1 make之后出现如下错误

implicit declaration of function ' usb_buffer_free'

implicit declaration of function ' usb_buffer_alloc'

显示usb_buffer_alloc和'usb_buffer_free没有申明,这是由于Relink RT3070驱动支持linux 内核版本太旧的原因。

2.4.2 使用命令查找usb_buffer_free,解决错误

find . -name "*"|xargs grep "usb_buffer_free"

显示如下

./include/os/rt_linux.h:#define RTUSB_URB_FREE_BUFFER(pUsb_Dev, BufSize, pTransferBuf, Dma_addr)        usb_buffer_free(pUsb_Dev, BufSize, pTransferBuf, Dma_addr)

./include/os/rt_linux.h:#define RTUSB_URB_FREE_BUFFER(pUsb_Dev, BufSize, pTransferBuf, Dma_addr)        rausb_buffer_free(pUsb_Dev, BufSize, pTransferBuf, Dma_addr)

./include/os/rt_linux.h:extern void rausb_buffer_free(struct usb_device *dev,

./os/linux/rt_usb_util.c:void rausb_buffer_free(struct usb_device *dev,

./os/linux/rt_usb_util.c:       usb_buffer_free(dev, size, addr, dma);

./os/linux/rt_usb_util.c:EXPORT_SYMBOL(rausb_buffer_free);

Vim    ./include/os/rt_linux.h

usb_buffer_alloc 和 usb_buffer_free这两个函数已不在使用了,可以用usb_alloc_coherent 和 usb_free_coherent代替

2.4.3再次编译驱动

sudo make 之后会在 os/linux/ 目录下生成rt3070sta.ko驱动文件

下载相应的驱动文件到开发板

把RT2870STA.dat拷贝到/etc/Wireless/RT2870STA目录下

加载rt3070sta.ko驱动

insmod rt3070sta.ko

显示错误如下

/apps >: insmod rt3070sta.ko

rt3070sta: module license 'unspecified' taints kernel.

Disabling lock debugging due to kernel taint

rt3070sta: Unknown symbol usb_alloc_urb (err 0)

rt3070sta: Unknown symbol usb_free_urb (err 0)

rt3070sta: Unknown symbol usb_alloc_coherent (err 0)

rt3070sta: Unknown symbol usb_register_driver (err 0)

rt3070sta: Unknown symbol usb_put_dev (err 0)

rt3070sta: Unknown symbol usb_get_dev (err 0)

rt3070sta: Unknown symbol usb_submit_urb (err 0)

rt3070sta: Unknown symbol usb_free_coherent (err 0)

rt3070sta: Unknown symbol usb_control_msg (err 0)

rt3070sta: Unknown symbol usb_deregister (err 0)

rt3070sta: Unknown symbol usb_kill_urb (err 0)

insmod: can't insert 'rt3070sta.ko': unknown symbol in module or invalid parameter

这是有内核无法识别的原因,相应的内核没有LICENSE

找到OS/linux/rt_main_dev.c 在第一行加入 MODULE_LICENSE(“GPL”);

再次编译,加载模块,显示如下

~ >: insmod rt3070sta.ko

rtusb init --->

usbcore: registered new interface driver rt2870

表明内核加载成功

2.4.4使能网卡

ifconfig wlan0 up

显示

显示没有固件

找到common/rt2870.bin的固件,放入开发板的lib/firmware/目录下

使文件具有可执行的权限:chmod +x rt2870.bin

使能网卡: ifconfig wlan0 up

三、移植Wireless Tools

3.1下载源文件

wget  http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.tar.gz

3.2解压问件

tar -xzf  wireless_tools.29.tar.gz

3.3修改Makefile

5 ## Installation directory. By default, go in /usr/local.

6 ## Distributions should probably use /, but they probably know better...

7 ifndef PREFIX

8   PREFIX = ./          //库安装目录,我选择的是当前目录

9 endif

10

11 ## Compiler to use (modify this for cross compile).

12 CC = arm-linux-gcc        //交叉编译器

13 ## Other tools you need to modify for cross compile (static lib only).

14 AR = arm-linux-ar         //连接器

15 RANLIB = arm-linux-ranlib

3.4编译文件,移植库和工具

Make之后,将生成的libiw.so.29,移植到开发板的lib目录下

将ifrename,iwconfig, iwlist, iwgetid, iwevent,iwpriv, iwspy,工具移植到开发板的bin目录下

3.5移植工具的使用

参考博客:http://blog.sina.com.cn/s/blog_73739d500100oz2v.html

四、移植openss

4.1修改Makefile

安装目录就指定为默认目录

CC= arm-linux-gcc   修改交叉编译器

4.2 编译和安装

注意安装时切换到root用户,再make,make install

使用sudo 权限是不行的

五、移植wpa_supplicant

5.1 下载文件

Wget  http://hostap.epitest.fi/releases/wpa_supplicant-0.7.3.tar.gz

5.2配置和修改

5.2配置修改,编译

进入/wpa_supplicant-0.7.3/wpa_supplicant/目录

#cp defconfig   .config

#vi .config

增加这几行

CFLAGS += -I/openss/include/

LIBS += -L/openss/lib/

CC = arm-linux-gcc -L /openss/lib/

#make

5.3 移植文件

将wpa_supplicant 移植到开发板的bin目录下

将 修改的wpa_supplicant.conf文件放入etc目录下

chmod +x bin/wpa_supplicant

chmod +x etc/wpa_supplicant.conf

执行wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant.conf -Dwext命令

显示如下

~ >: wpa_supplicant: symbol '__ctype_tolower': can't resolve symbol

>

> wpa_supplicant: symbol '__ctype_b': can't resolve symbolchmod +x bin/wpa_suppl

icant

这个应该是开发板缺少相应wpa_supplicant需要的动态库文件,

目前我找到的解决方法是静态连接

修改 .config 文件

CFLAGS += -I/openss/include/

LIBS += -L/openss/lib/

CC = arm-linux-gcc -L /openss/lib/  -static  //选择静态连接

5.4 执行命令,配置网络

再次编译之后,将 wpa_supplicant,放入开发板的bin目录

修改权限chmod +x  wpa_supplicant

再次执行

wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant.conf -Dwext

出现了一个问题:暂时不知道什么原因

~ >: cfg80211: Calling CRDA for country: US

cfg80211: Regulatory domain changed to country: US

cfg80211:     (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)

cfg80211:     (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2700 mBm)

cfg80211:     (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 1700 mBm)

cfg80211:     (5250000 KHz - 5330000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)

cfg80211:     (5490000 KHz - 5600000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)

cfg80211:     (5650000 KHz - 5710000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)

cfg80211:     (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 3000 mBm)

cfg80211:     (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 4000 mBm)

解决方法:找到内核目录net/wireless/reg.c文件,注释相应的打印信息。

查看状态:

#iwconfig

显示如下

~ >: iwconfig

lo        no wireless extensions.

eth0      no wireless extensions.

wlan0     IEEE 802.11bgn  ESSID:"16-912A"

Mode:Managed  Frequency:2.412 GHz  Access Point: 38:83:45:51:4F:AA

Bit Rate=6.5 Mb/s   Tx-Power=27 dBm

Retry  long limit:7   RTS thr:off   Fragment thr:off

Encryption key:off

Power Management:on

Link Quality=63/70  Signal level=-47 dBm

Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0

Tx excessive retries:0  Invalid misc:8   Missed beacon:0

证明连接到了网络

设置ip地址

#ifconfig wlan0 192.168.1.230 netmask 255.255.255.0

ping 192.168.1.1

~ >: ping 192.168.1.1

PING 192.168.1.1 (192.168.1.1): 56 data bytes

64 bytes from 192.168.1.1: seq=0 ttl=64 time=262.313 ms

64 bytes from 192.168.1.1: seq=1 ttl=64 time=45.464 ms

64 bytes from 192.168.1.1: seq=2 ttl=64 time=45.511 ms

64 bytes from 192.168.1.1: seq=3 ttl=64 time=44.479 ms

64 bytes from 192.168.1.1: seq=4 ttl=64 time=44.560 ms

在电脑上ping 开发板

C:\Users\Administrator>ping 192.168.1.230

正在 Ping 192.168.1.230 具有 32 字节的数据:

来自 192.168.1.230 的回复: 字节=32 时间=129ms TTL=64

来自 192.168.1.230 的回复: 字节=32 时间=258ms TTL=64

来自 192.168.1.230 的回复: 字节=32 时间=278ms TTL=64

来自 192.168.1.230 的回复: 字节=32 时间=186ms TTL=64

192.168.1.230 的 Ping 统计信息:

数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),

往返行程的估计时间(以毫秒为单位):

最短 = 129ms,最长 = 278ms,平均 = 212ms

由此说明无线网卡已经移植成功了。

六、动态获取ip地址

6.1在busybox中选中相应选项:

6.2

/home/zhanghaijun/fl2440/3rdparty/busybox-1.20.2/examples/udhcp目录下的simple.script

重命名为dedault.script并拷贝到开发板usr/share/udhcpc/目录下,修改权限。

6.3 执行动态分配ip地址

udhcpc -i wlan0

RT3070L无线网卡移植相关推荐

  1. wifi无线网卡移植到andorid

    不久前移植过ranlink公司的wifi无线网卡,发现网上的一些文档不完整或者对一些碰到的问题没有说明,在此详细说明一,本人将其移植到android系统上碰到了不少的问题,修改了驱动及框架代码,费了两 ...

  2. 360WIFI2无线网卡移植 -MT7601U移植

    软件环境:虚拟机ubuntu12.04 硬件环境:360WIFI2无线网卡 EasyARM-i.MX280A:   64m  sdram  128M  nandflash   运行官方提供的Linux ...

  3. linux 无线网卡移植,移植wifi无线网卡到arm linux上全过程

    前 段时间移植了U-boot和linux2.6.27.9到mini2440上,最近有点空,手头有一个usb接口的zd1211b芯片的wifi无线网卡 (PSP和NDSL玩家都知道的神卡),于是决定在内 ...

  4. 嵌入式Linux/Android MT7601U USB无线网卡移植

    目录 前言 USB无线网卡选择 MT7601驱动移植 1. 资源下载 2. 驱动源码修改 3. 编译及加载 测试 1. 源码下载 2. 编译 3. 测试 1. STA模式测试: 2. AP模式测试: ...

  5. Rt5370 USB无线网卡移植记录

    内容提要:嵌入式linux软件开发人员调试软件,是一定要进入设备的shell的.进入shell无非就是通过串口.ssh方式,而ssh方式需要网卡.一般嵌入式linux产品上市后,串口和网卡是没有的,但 ...

  6. busybox文件系统与简单驱动学习(4)-RT3070无线网卡STA模式配置

    需要的源码与版本: DPO_RT3070_LinuxSTA_V2.3.0.2_20100412 libnl-1.1.4 openssl-1.0.1d wpa_supplicant-0.7.3 进入DP ...

  7. rtl8188etv无线网卡驱动移植

    <article class="baidu_pl">         <!--python安装手册开始-->                 <!-- ...

  8. VNT6656G无线网卡在mini2440 上的移植

    这里是友善之臂提供的2.6.32.2内核 + VNT6656 WLAN源代码 1.20.03的编译和使用方法: 1.编译驱动模块 目前1.20.03版本的驱动源代码可以对2.6.32.2内核直接编译成 ...

  9. RT3070L_USB_WIFI网卡在GT2440开发板上的移植和使用(一)

    前言:万事开头难!我!一个嵌入式小白,在这个xxx的时代,也打算开个博客记录我的嵌入式学习之路.第一篇就结合韦东山老师的关于无线网卡移植的课程,并搜索RT3070L移植过程,配合自己的GT2440开发 ...

最新文章

  1. UA MATH571A R语言回归分析实践 一元回归3 NBA球员的工资
  2. 转: Oracle 索引详解
  3. 项目开发管理工具---GitHub(一)
  4. STM32F4_TIM输入波形捕获(脉冲频率、占空比)
  5. Spring Boot 之事件(Event)
  6. java id自增_Java分布式自增长ID实现方案
  7. 我们为什么要骑驴找马?
  8. linux root定时脚本,shell之定时周期性执行脚本的方法示例
  9. 示例-Luat示例-MQTT
  10. wang zhe rong yao
  11. 基于STM32之控制步进电机,学到即赚到!(含主代码)
  12. 006输出9行内容,第1行输出1,第2行输出12,第3行输出123,以此类推,第9行输出123456789。
  13. Nomad Consul搭建集群
  14. JVM能够开启多少线程
  15. Linux下安装mldonkey及配置
  16. Android 平板、手机: 忘记密码处理及刷机处理技术贴(以三星为例)
  17. 企业人事管理系统软件测试计划,人事管理系统软件测试计划.docx
  18. ChatGPT颠覆者来了,能替代90%的人的工作?
  19. JAVA Apache POI解析docx格式的word文件并提取带样式文本
  20. 同一数据库在两台机上不同路径的备份还原

热门文章

  1. 深入浅出RISC-V调试
  2. 动态规划之01背包问题讲解
  3. CString - 详解
  4. 栈和队列、堆、堆栈的区别?
  5. BUUCTF-刷题记录-7
  6. mysql connector安装教程_Debezium:mysql connector安装
  7. EIGRP特点包括:
  8. C语言解决经典问题约瑟夫环--数组
  9. 大厂必考深度学习面试题及参考答案
  10. Echo的树莓派学习笔记