在配置热点的时候遇到了一些问题,不管是官方提供的烧录工具还是编译的镜像都是不能打开热点。。。分析日志并郁闷的搜索资料终于找到了问题解决的方法。
WiFi热点不能启动的故障在于netd服务启动hostapd的时候出错(如果在这之前调用ndc也有问题需要进一步的从上往下排查),netd服务在执行startSoftap方法时找不到对应版本的driver_vendor进而不会启动hostapd程序。板子上的WiFi芯片RT8188EUS,目标系统是安卓5.1。
首先检查驱动移植步骤是否正确,确保按照WiFi功能的移植步骤完成WiFi的移植。
在编译system.img之前需要检查netd服务的配置,源码在system/netd/SoftapController.cpp
注释掉已有的代码
//problem code here......
if (!pid) {
ensure_entropy_file_exists();
// property_get(DRIVER_VENDOR_NAME, driver_vendor, NULL);
// int ret = 0;
// if ((strcmp(driver_vendor, "realtek") == 0)) {
// ret = execl(HOSTAPD_BIN_FILE_RTL, HOSTAPD_BIN_FILE,
// "-e", WIFI_ENTROPY_FILE,
// HOSTAPD_CONF_FILE, (char *) NULL);
// } else if ((strcmp(driver_vendor, "atheros") == 0)) {
// ret = execl(HOSTAPD_BIN_FILE, HOSTAPD_BIN_FILE,
// "-e", WIFI_ENTROPY_FILE,
// HOSTAPD_CONF_FILE, (char *) NULL);
// } else if ((strcmp(driver_vendor, "broadcom") == 0)) {
// ret = execl(HOSTAPD_BIN_FILE_BCM, HOSTAPD_BIN_FILE,
// "-e", WIFI_ENTROPY_FILE,
// HOSTAPD_CONF_FILE, (char *) NULL);
// } else
// ALOGE("no specific driver vendor");
// ALOGE("execl failed (%s)", strerror(errno));
if (execl(HOSTAPD_BIN_FILE, HOSTAPD_BIN_FILE,
"-e", WIFI_ENTROPY_FILE,
HOSTAPD_CONF_FILE, (char *) NULL)) {
ALOGE("execl failed (%s)", strerror(errno));
}
ALOGE("SoftAP failed to start");
return ResponseCode::ServiceStartFailed;
其中HOSTAPD_BIN_FILE为hostapd的所在目录,即/system/bin/hostapd
重新编译system.img,刷入系统问题解决。