Linux之USB无线网卡开发(一)

目录

 

使用WIFI网卡准备工作

1、选型

2、搭建开发环境

3、配置内核支持USB WIFI网卡

使用WIFI网卡相关概念并利用工具iw(STA模式)


使用WIFI网卡准备工作

对于我们的手机一般来说都会连着理由器的WIFI,此时手机为STA模式,而路由器为AP模式(也叫热点),因为我们可以让ARM开发板工作于STA模式或者AP模式

1、选型

确定网卡的VID和PID,原本可以在http://wireless.kernel.org/en/users/Devices/USB此网址找到内核是否支持哪些网卡设备,在这里已经找不到了,通过网购的网卡,可以跟卖家要网卡的VID和PID,也可以根据windows接入来看VID和PID,将网卡接入电脑USB口,可以在设备管理器中右键点击属性查看,可以看到此款VID为0x148F,PID为0x3070

2、搭建开发环境

一个系统可能有多个网卡,但是每个网卡的IP不能设置为同一网段,开发板通过无线网卡连接上AP,一般来说分配的IP都是192.168.1.xxx,因此我们需要设置个人PC不在192.168.1.xxx网段,个人的PC网段是192.168.0.xxx,因此不需要设置,如果不一样则需要根据以下步骤来设置

a. 设置VMWARE的网络为桥接, 并选择使用哪一个网卡

b. 把PC windows网卡, vmware linux的网卡、开发板的有线网卡IP设为192.168.7.xxx
       因为以后开发板上USB WIFI网卡将使用192.168.1.xxx

3、配置内核支持USB WIFI网卡

在内核中搜索0x3070

在rt2x00目录中的Makefile查找rt2800usb,如下所示,因此我们需要在内核中配置CONFIG_RT2800USB

obj-$(CONFIG_RT2800USB)                 += rt2800usb.o

在配置内核搜索 CONFIG_RT2800USB,可以知道此配置项依赖于NETDEVICES [=y] && WLAN [=y] && RT2X00 [=n] && USB [=y],因为我们还需要去配置RT2X00,而RT2X00同理也需要依赖于其他,我们根据路径一步一步配置

使用新内核启动,尝试启动网卡,提示需要rt2870.bin固件,在网上搜索此固件,下载地址,并将固件放在/lib/firmware目录中,重新接上网卡,可以发现WIFI网卡启动成功

使用WIFI网卡相关概念并利用工具iw(STA模式)

无线加密的多种方法及其区别(WEP、WPA、TKIP、EAP),参考文章:点击这里,认证是用来判断哪些用户可以使用网络,例如我们手机连接wifi,只有输入正确的密码,手机才能连接上网络,加密是指手机和AP之间传输数据时,数据不会被盗取及其发生错误,对于认证/加密有以下三个版本,对于802.1x,当我们手机连接到AP后,其认证过程不再AP上,而是由服务器进行认证(对于大型公司由服务器统一认证),因此对于小公司或者家里一般是PSK,当手机连接到AP后,AP事先设置了密码,手机输入的密码正确后就可以连接

 认证加密安全性
初级版本

open

open

WEP

open

WEP

WEP

不安全
过渡版本(WPA)

802.1x

PSK

TKIP/WEP

IKIP/WEP

很安全
终极版本(WPA2)

8021.x

PSK

CCMP(AES-CCMP)/TKIP/WEP

CCMP(AES-CCMP)/TKIP/WEP

非常安全

后来编译、使用iw,wpa_supplicant,dhcp,先编译使用iw,旧工具iwconfig, iw是它的替代者, 可用于这2种"认证/加密": open, WEP,而wpa_supplicant适用于上面4种,但iw热点扫描的功能好用,也可以选择不适用iw,对于iw需要依赖于libnl库,这里使用libnl-3.2.23.tar.gz和iw-3.11.tar.bz2,在ubuntu上编译,编译过程大致如下

tar xzf libnl-3.2.23.tar.gz
cd libnl-3.2.23/
./configure --host=arm-linux --prefix=$PWD/tmp
cd tmp/include
把编译出来的头文件应该放入:
sudo cp * -rf /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
这里是后来编译iw发现加载的库:
cd libnl3
sudo cp netlink -rf /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include  
把编译出来的库文件应该放入:
sudo cp * -rf -d /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
把编译出来的库文件应该放入NFS文件系统的lib目录(这里是开发板利用nfs挂载ubuntu自制的文件系统)
sudo cp *.so* -d /work/nfs_root/fs_mini_mdev_new/lib

tar xjf iw-3.11.tar.bz2
cd iw-3.11/
修改Makefile:
CC ?= "gcc"
修改为
CC = "arm-linux-gcc"
--------------------------------------------------------------------
NL3xFOUND := Y   //是用PC机上的库 在这里是给开发板用 因此这里直接修改Y
--------------------------------------------------------------------
编译完后出现info.c的错误
在info.c的代码前面添加
#define htole16(X)  (((((uint16_t)(X)) << 8) | ((uint16_t)(X) >> 8)) & 0xffff)
--------------------------------------------------------------------
编译完后出现没有libnl-3.0包
继续修改Makefile,注释下面两行
#LIBS += $(shell $(PKG_CONFIG) --libs $(NLLIBNAME))
#CFLAGS += $(shell $(PKG_CONFIG) --cflags $(NLLIBNAME))
--------------------------------------------------------------------
将编译出来的iw执行程序拷贝到nfs目录
cp iw /work/nfs_root/fs_mini_mdev_new/bin/

iw相关用法:点击这里由于iw只支持WEP或者open方式,个人手机热点无法实现WEP这里就不展示了,使用举例如下

使用:
iw list  // 列出WIFI网卡的性能
ifconfig wlan0 up
iw dev wlan0 scan   // 扫描WIFI AP
iw wlan0 connect dswei  // 连接到WIFI AP:dswei (open)
iw wlan0 connect dswei keys d:0:baiwenwang123 // 连接到WIFI AP:dswei (WEP)
                            d: default, 0: 第0个密码 
ifconfig wlan0 192.168.1.55
ping 192.168.1.1
iw wlan0 disconnect

这里扫描后8C28为本人的理由器


Linux之USB无线网卡开发(二)

 

 

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值