由于开发环境和系统的差异,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//这句话是时钟频率​,看是否与硬件时钟频率相匹配。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐