韦东山视频之WiFi使用

转载出自:点击打开链接


(一)

(1)WiFi网卡的选型:WiFi网卡的选择依据是看看内核是不是支持这款WiFi网卡,确定网卡的VID,PID是否在列表里:http://wireless.kernel.org/en/users/Devices/USB

(2)开发环境的搭建:设置VMWARE的网络为桥接, 并选择使用哪一个网卡,把PC windows网卡, vmware linux的网卡、开发板的有线网卡IP设为192.168.7.xxx,因为以后开发板上USB WIFI网卡将使用192.168.1.xxx,这里要满足开发板的有限网卡和WiFi网卡不在同一个网段。

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

配置内核:根据网卡的VID/PID确定使用哪一个源码,根据WiFi网卡的VID/PID来搜索网卡,一般在drivers/net/wireless/里面搜索。
grep "0x3327" * -nR
得到
ath/ath9k/hif_usb.c:32: { USB_DEVICE(0x13D3, 0x3327) },
这说明Linux内核已经支持了这款WiFi网卡。
进入 ath/ath9k/目录,看看内核把该网卡编译进去没有?打开该目录下的Makefile,查看 hif_usb子串,得到
ath9k_htc-y +=   htc_hst.o \
                         hif_usb.o \
                        wmi.o \
在查看 ath9k_htc子串,得到
obj-$(CONFIG_ATH9K_HTC) += ath9k_htc.o,只有当 CONFIG_ATH9K_HTC被配置成‘Y’或者‘M’的时候,才会被内核编译进去。

make menuconfig
搜索一下 CONFIG_ATH9K_HTC,得到
  +--------------------------------------------------------------------------------------------------------- Search Results ---------------------------------------------------------------------------------------------------------+                                                                                                                   |

   | Symbol:  ATH9K_HTC [=n]                                                                                                                                                                                                                                                                                                               |
   | Type   : tristate                                                                                                                                                                                                                                                                                                                        |
   | Prompt: Atheros HTC based wireless cards support                                                                                                                                                                                                                                                                        |
   |    Defined at drivers/net/wireless/ath/ath9k/Kconfig:100                                                                                                                                                                                                                                                              |
   |     Depends on: NETDEVICES [=y] && WLAN [=y] && ATH_COMMON [=n] && USB [=y] && MAC80211 [=m]                                                                                                                                                                                                        |
   |    Location:                                                                                                                                                                                                                                                                                                                                |
   |       -> Device Drivers                                                                                                                                                                                                                                                                                                                 |
   |          -> Network device support (NETDEVICES [=y])                                                                                                                                                                                                                                                                       |
   |             -> Wireless LAN (WLAN [=y])                                                                                                                                                                                                                                                                                            |
   |                -> Atheros Wireless Cards (ATH_COMMON [=n])                                                                                                                                                                                                                                                                 |
   |    Selects: ATH9K_HW [=n] && MAC80211_LEDS [=y] && LEDS_CLASS [=y] && NEW_LEDS [=y] && ATH9K_COMMON [=n] 
查看红色字体,发现他依赖一些东西,   NETDEVICES [=y] && WLAN [=y] && ATH_COMMON [=n] && USB [=y] && MAC80211 [=m], NETDEVICES   WLAN   USB   已经配置好, ATH_COMMON  ,没有配置好。 MAC80211  只配置成了模块形式。这是就需要将 MAC80211  配置成‘Y’(为何people配置成Y原因不知,只是韦老师说的)。




()略
()
()
配置好后编译:make uImage,然后烧写到开发板,启动开发板,输出
usb 1-1: ath9k_htc: Firmware htc_9271.fw requested
usb 1-1: ath9k_htc: Failed to get firmware htc_9271.fw 
这表示我们的网卡需要这个固件,
()略
()
()至此,我们的WiFi网卡可以使用了,现在编译一些应用程序来使用WiFi网卡
  ()编译、使用iw,wpa_supplicant,dhcp
1. 旧工具iwconfig, iw是它的替代者, 可用于这2种"认证/加密": open, WEP
tar xzf libnl-3.2.23.tar.gz
cd libnl-3.2.23/
./configure --host=arm-linux --prefix=$PWD/tmp
修改 lib/addr.c 添加宏(宏来自内核源码)
make,出现如下错误
addr.c:1027: error: 'AF_RDS' undeclared here (not in a function)
addr.c:1033: error: 'AF_CAN' undeclared here (not in a function)
addr.c:1034: error: 'AF_TIPC' undeclared here (not in a function)
addr.c:1038: error: 'AF_ISDN' undeclared here (not in a function)


这是因为里面的 lib/addr.c缺少一些宏的定义,这些宏是在内核里面定义的,直接把这些宏添加进 lib/addr.c文件就可以了。
make install

把编译出来的头文件应该放入:
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include

cd tmp/include/libnl3
sudo cp netlink -rf /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include

把编译出来的库文件应该放入:
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib

把编译出来的库文件应该放入NFS文件系统的lib目录:
/work/nfs_root/fs_mini_mdev_new/lib
()略
()
()打开网卡命令 ifconfig wlan0 up,扫描网卡 iw dev wlan0   scan,连接网卡 iw wlan0 connect shuuyalin
()
()
()make > log.txt   2>&1    ,该句表示吧make命令的输出放到log.txt里面去。

()wap_supplicant的用法总结
wpa_supplicant   -B   -c/etc/ wap_supplicant.conf    -iwlan0
-B 表示该程序作为一个服务器运行于后台

wpa_cli   -iwlan0  status  查看连接状态

wpa2-eap-ccmp.conf    eap是采用服务器的认证模式
wpa-psk-tkip.conf            psk是直接把密码写进文件,所以我们用psk模式的。

RSN是wpa2的别名

ctrl_interface=/var/run/wpa_supplicant
network={
            ssid="example wpa-psk network"
            key_mgmt=WPA-PSK
            proto=WPA  
            pairwise=TKIP
            group=TKIP
            psk="secret passphrase"
}
 proto表示所能支持的协议,可以是wpa 和 rsn,如果不设置,则默认是wpa与rsn两种。

 key_mgmt表示认证方式,可以是wpa-psk与wpa-eap,psk指的是采用把密码写进文件的方式,eap指的是用服务器的方式,默认是两种方式都可以
注意:即使用的是wpa2的方式,也不要些把 key_mgmt设置为 WPA2-PSK,正确的是 WPA-PSK。

 pairwise是加密方式,有ccmp 和tkip,默认两种都可以

group暂时不清楚,估计也是也谢加密方法吧。默认的是很多种都可以。


ctrl_interface=/var/run/wpa_supplicant 是一个目录,用于wpa_suppllicant 和wpa_cli的socket通信。
该目录需要自己建立的。

wpa_cli可用于两种模式,命令模式与交互模式

在一个配置文件里,可以设置多个连接热点的信息的。如果连接不上配置文件里面的其中一个热点,他会尝试连接其他的热点,知道脸连上或全部试玩为止。

如果要ping同外网,如ping www。baidu。com,我们需要把www.baidu。com转化为IP地址,这里就涉及到域名服务器。修改/etc/resolv.conf,添加一行nameserver   192.168.31.1(设置为网关就可以),如果还不能ping通的话,就要添加网关,route add default gw 192.168.31.1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值