Linux之USB无线网卡开发(一) 您所在的位置:网站首页 无法识别的usb无线上网卡 Linux之USB无线网卡开发(一)

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

#Linux之USB无线网卡开发(一)| 来源: 网络整理| 查看: 265

目录

 

使用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)) & 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无线网卡开发(二)

 

 

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有