ath6kl的驱动已经在内核中实现,只要选择相应的配置 (AR6003 SDIO WIFI芯片)
1. networkingsupport----->Wireless相关项选中
2. Device Drivers->Network device support->Wireless LAN,把Atheros Wireless Cards选成模块
3. Enter进去,把ath6kl的相关项选中,如下图:
4. 然后保存退出,重新编译。生成drivers/net/wireless/ath/ath6kl/ath6kl.ko和net/wireless/cfg80211.ko
可以看到配置文件中的改变
CONFIG_ATH_COMMON=m
CONFIG_ATH_DEBUG=y
# CONFIG_ATH5K is not set
# CONFIG_ATH5K_PCI is not set
# CONFIG_ATH9K is not set
# CONFIG_ATH9K_HTC is not set
# CONFIG_CARL9170 is not set
CONFIG_ATH6KL=m
CONFIG_ATH6KL_DEBUG=y
5. 在文件系统中执行insmod cfg80211.ko和 insmod ath6kl.ko 。如果一切正常的话会出现下面的情况:
Compat-wireless backport release: patch-10-27-gd46416c-p
Backport based on branching-msm-3.2.3-44-g65b285b
Calling CRDA to update world regulatory domain
World regulatory domain updated:
(start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
(2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
(2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
(2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
(5140000 KHz - 5360000 KHz @ 40000 KHz), (N/A, 3000 mBm)
(5460000 KHz - 5860000 KHz @ 40000 KHz), (N/A, 3000 mBm)
android_readwrite_file: ret=-2
android_readwrite_file: ret=-2
mmc1: queuing unknown CIS tuple 0x01 (3 bytes)
mmc1: queuing unknown CIS tuple 0x1a (5 bytes)
mmc1: queuing unknown CIS tuple 0x1b (8 bytes)
mmc1: queuing unknown CIS tuple 0x14 (0 bytes)
android_readwrite_file: ret=18
android_readwrite_file: ret=18
ath6kl: temporary war to avoid sdio crc error
ehci_fsl_bus_resume begins, DR
ath6kl: host only supports scatter of :1 entries, need: 16
ath6kl: ar6003 hw 2.1.1 sdio fw 3.4.0.189.TABLET_DONGLE api 4
ath6kl: Current ath6kl driver version is: 3.4.0.189
# ifconfig 会看到出现 wlan0
6. 使用ifconfig wlan0 up命令把无线网卡激活。就可以使用了。
当然要确保支持SD卡
Device Drivers ---
<*> MMC/SD/SDIO card support --->
wifi加密工具:
wpa_supplicant :wpa_supplicant本是开源项目源码,被谷歌修改后加入android移动平台,它主要是用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证的,而实际上的工作内容是通过socket(不管是wpa_supplicant与上层还是wpa_supplicant与驱动都采用socket通讯)与驱动交互上报数据给用户,而用户可以通过socket发送命令给wpa_supplicant调动驱动来对WiFi芯片操作。 简单的说,wpa_supplicant就是WiFi驱动和用户的中转站外加对协议和加密认证的支持,WIFI安全接入客户端。
openssh: 为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议, 它是一个多用途的、跨平台的密码工具。
无线网络工具 :
wireless_tools (安装后就有iwspy , iwpriv, iwlist, iwconfig)
iwlist命令扫描附近的无线接入点
Android无线网络的结构:
1.Linux内核中WIFI协议和WIFI驱动程序
WIFI协议是标准的内容,根据具体硬件芯片实现WIFI驱动程序
2. wpa_supplicant可执行程序 external/wpa_supplicant
wpa_supplicant是一个Linux标准的WIFI管理工具,在这里将生成可执行程序wpa_supplicant, 生成用于调试的工具wp_cli.
3. wifi本地适配库 hardware/libhardware_legacy/wifi/
wifi.c是一个源文件, hardware/libhardware_legacy/include/hardware_legacy/wifi.h
生成的内容是libhardware_legacy.so的一部分,通过调用libwpaclient.so成为wpa_supplicant在Android中的客户端。
4. wifi的JNI部分 frameworks/base/core/jni/android_net_wifi_Wifi.cpp
WIFI本场对Java的支持,主要提供了对android.net.wifi包中WIFI类的支持。
5. WIFI的Java框架部分
frameworks/base/wifi/java/android/net/wifi/ : 实现android.net.wifi包中的各个类
frameworks/base/services/java/com/android/server/ : 实现WIFI的服务
其中,android.net.wifi包将作为Android的平台API提供给Java应用程序层使用。
参考:
http://download.youkuaiyun.com/detail/bingyuderizi/8386129
http://www.embedu.org/column/Column740.htm
http://www.embedu.org/Column/Column935.htm
http://blog.youkuaiyun.com/armeasy/article/details/6252389
http://my.oschina.net/u/994235/blog/159541
https://community.nxp.com/docs/DOC-93603