目录
简介
主要做的工作:让内核如何支持现有的无线网卡。知道这个流程就可以了,没必要深究。
使用WIFI功能时,涉及两个东西:
0、wifi的STA模式和AP模式
Ap(Access Point)模式指的是可以将网卡设置为路由器用来共享流量或有线网络给别人使用,
STA模式指的是当做网卡连接路由器上网
同样手机也可以用于WIFI AP模式,让别的设备来连接它。就是我们平时所说的用手机开一个热点。
从这里可以看出,同一个WIFI网卡,它可以工作于不同的模式。
对于ARM板而言,外接一个wifi网卡,它就可以工作于STA模式,可以去连接热点。
同样它可以工作与AP模式,让其他设备来连接它。
1. 准备工作(虚拟机,开发板)及配置内核选择WIFI驱动
1.1 选型:
确定网卡的VID,PID是否在列表里:http://wireless.kernel.org/en/users/Devices/USB
现在好像不是这个咯,落伍了呦^_^
查看网卡的PID和VID
把网卡接到电脑上去,我的电脑——属性——设备管理器——网络适配器——查看增加的网卡——属性——详细信息——设备范例Id里面有VID和PID
选购WIFI:
Atheros : VID 0x13D3 PID 0x3327 (成品型号 AR9271)
realtek : VID 0x0bda PID 0x8176 (成品型号TP-LINK公司TL-WN721N)
市面上大多数ARM 开发板来说,它们的USB口供电能力都不足(会出现一些莫名其妙的问题),需要一条能供电的USB线(有3个口),一端的两个口连接开发板和网卡,另一端的口接到电脑的USB口上取电。
1.2 搭建开发环境:
首先要看一下,电脑和开发板是如何连接的?
开发板和电脑有3种连接方式。
a、直接用一条网线把开发板网口和电脑网口连在一起,当开发板上使用的是u-boot时,电脑上的网卡显示为断开,导致PC上的windows和linux间不能传文件
b、用hub或路由器连接电脑和开发板(使用有线网卡)
c、有些电脑没有有线网卡,只有无线网卡,用无线路由器。开发板通过网线接到无线路由器,电脑端用无线网卡进行无线接入路由器。
总结搭建开发环境:
1.设置VMWARE的网络为桥接, 并选择使用哪一个网卡(有线网卡还是无线网卡)
2.把PC windows网卡, vmware linux的网卡、开发板的有线网卡IP设为192.168.7.xxx
因为以后开发板上USB WIFI网卡将使用192.168.1.xxx
开发板本身有一个有线网卡,现在又有wifi无线网卡,对于同一个系统有多个网卡,这些网卡的IP不能设为同一网段,当我们的wifi网卡连接到无线Ap,Ap里分配的地址一般为192.168.1.xxx.PC windows网卡, vmware linux的网卡、开发板的有线网卡IP设为另外一个网段
1.3 配置内核以支持USB WIFI网卡
a. 打补丁
tar xjf linux-3.4.2.tar.bz2
cd linux-3.4.2
patch -p1 < ../linux-3.4.2_camera_jz2440.patch
cp config_ok .config
b. 配置内核
1.根据网卡的VID/PID确定使用哪一个源码。
cd drivers/net/wireless/
grep "0x3327" ./ -nR (这里0x3327是ProductID(产品ID)
ath/ath9k/hif_usb.c:32: { USB_DEVICE(0x13D3, 0x3327) },
2.打开源码所在目录的Makefile进而确定配置项的名称
将ath/ath9k下面的Makefile打开,可以看到
ath9k_htc-y += htc_hst.o \
hif_usb.o
obj-$(CONFIG_ATH9K_HTC) += ath9k_htc.o
可以知道配置项是CONFIG_ATH9K_HTC
3.make menuconfig , 搜索 /名字
到目录linux-3.4.2中,make menuconfig, /CONFIG_ATH9K_HTC 得到下面信息
查看依赖(=y或=m表示已经设置好的意思,=n表示还没设置,不用理会.有一个依赖条件设为m的话,那么也只能够配置为m,要想把它配置进内核,找到设置为m的项并把它设置为y)
查找MAC80211
配置:(按h键返回查看搜索结果)
make uImage
配置内核、编译内核以及使用了解即可,这个地方不重要。
uboot:
set bootargs console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.7.124:/work/nfs_root/fs_mini_mdev_new ip=192.168.7.17
set bootcmd 'nfs 32000000 192.168.7.124:/work/nfs_root/uImage_mini2440_wifi; bootm 32000000'
save
boot
可以在make menuconfig 后使用 cp .config config_ok_1把我们配置好的文件更名为config_ok_1,以后可以再次使用
另一款网卡:
cd drivers/net/wireless/
grep "0x8176" * -nR
rtlwifi/rtl8192cu/sw.c:273: {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8176, rtl92cu_hal_cfg)},
打开rtlwifi/rtl8192cu/Makefile确定配置项为 CONFIG_RTL8192CU
make menuconfig, /CONFIG_RTL8192CU
-> General setup
[*] Prompt for development and/or incomplete code/drivers
-> Device Drivers
-> Network device support
-> Wireless LAN
<*> Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter
make uImage
uboot:
set bootargs console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.7.124:/work/nfs_root/fs_mini_mdev_new ip=192.168.7.17
set bootcmd 'nfs 32000000 192.168.7.124:/work/nfs_root/uImage_mini2440_wifi; bootm 32000000'
save
boot
3、编译使用固件
htc_9271.fw: AR9271 wifi 网卡固件
需要固件htc_9271.fw,我们wifi网卡可能需要下载一个文件到芯片上面去,
1 把固件htc_9271.fw放到单板/lib/firmware
先建目录:mkdir /work/nfs_root/lib/firmware
拷贝:cp htc_9271.fw /work/nfs_root/lib/firmware
接上USB网卡, ifconfig wlan0 up(启用网卡0)
2 对于"realtek : VID 0x0bda PID 0x8176 (成品型号TP-LINK公司TL-WN721N)"
修改bug:
http://lkml.indiana.edu/hypermail/linux/kernel/1301.2/00465.html
make uImage