由于开发环境和系统的差异,wifi移植,包括wifi热点开启时有时还会出现其他问题,我这里先总结下:
1.netd问题
Netd 就是Network Daemon
的缩写,表示Network守护进程,Netd负责跟一些涉及网络的配置,操作,管理,查询等相关的功能实现,比如,例如带宽控制(Bandwidth),流量统计,带宽控制,网络地址转换(NAT),个人局域网(pan),PPP链接,soft-ap,共享上网(Tether),配置路由表,interface配置管理,等等……
(1)其中最主要的文件是
system/netd/SoftapController.cpp
这个文件里面包含作为热点的加密方式,信道,SSID等的设置。如果在开启热点时加密方式,信道等有问题,可以如该文件入手。
(2)还有一个文件可以影响热点的加密方式:
frameworks/base/services/java/com/android/server/NetWorkManagementService.java
找到
String str =
String.format("softap set " + wlanIface + "
" + softapIface +" %s %s %s",
convertQuotedString(wifiConfig.SSID)wifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_PSK) ?
"wpa-psk" : "open",
convertQuotedString(wifiConfig.preSharedKey));
(3)驱动中还有一个文件是生成加密的最终文件:
wl_iw.c中的wl_iw_set_ap_security函数。
2.hostap问题
没有hostapd,wifi热点是开不起来的。
hostapd
是用户控件的守护进程用于无线接入点(AP)和授权服务器(authentication
servers).hostapd设计为一个守护程序(进程),后台运行,进行一些相关控制授权的操作。
external/hostap-xx/该目录生成hostapd。
3.wireless_tools.xx问题
wireless tools
是一系列无线网络的配置命令工具,可以用来帮助调试wifi驱动在移植过程中的错误,主要包括如下命令:
iwconfig:设置基本无线参数
iwlist:扫描、列出频率,比特率,密钥等
iwspy:获取每个节点链接的质量
iwpriv:操作Wireless
Extensions特定驱动
ifrename:基于各种静态标准命名接口
external/wireless_tools.xx/该目录生成这些命令工具。
4.Wifi热点开启一切正常,但是搜不到信号的问题
原因可能是时钟频率出了问题,检查/system/etc/wifi/nvram.txt文件
xtalfreq=38400//这句话是时钟频率,看是否与硬件时钟频率相匹配。