[RK3288][Android6.0] WiFi的配置文件wpa_supplicant.conf
2017-06-23 17:46
471 查看
Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
起初以为对应的是external/wpa_supplicant_8/wpa_supplicant/wpa_supplicant.conf,对比生成的文件发现是共同一目录下的wpa_supplicant_template.conf,来看文件是如何最终生成为/data/misc/wifi/wpa_supplicant.conf
system/etc/wpa_supplicant.conf的生成:
hardware/broadcom/wlan/bcmdhd/config/Android.mk
external/wpa_supplicant_8/wpa_supplicant/wpa_supplicant_conf.mk
PRIVATE_WPA_SUPPLICANT_CONF_SCRIPT对应的是wpa_supplicant_conf.sh
注释也说得很清楚了,从template生成wpa_supplicant.conf
对比生成的/system/etc/wpa_supplicant.conf的内容是和wpa_supplicant_template.conf一样的 。
/data/misc/wifi/wpa_supplicant.conf的生成:
wifi_start_supplicant -> ensure_config_file_exists
参数是SUPP_CONFIG_FILE,即/data/misc/wifi/wpa_supplicant.conf
还有个问题,就是会发现/data/misc/wifi/wpa_supplicant.conf的内容又会不一样,这是因为文件中有个属性
表示开机之后WPAS(wpa_supplicant)卡伊修改更新配置文件。
wpa_supplicant.conf的配置属性可参见 external/wpa_supplicant_8/wpa_supplicant/wpa_supplicant.conf ,里面写得很详细。
OS: Android 6.0
Kernel: 3.10.92
起初以为对应的是external/wpa_supplicant_8/wpa_supplicant/wpa_supplicant.conf,对比生成的文件发现是共同一目录下的wpa_supplicant_template.conf,来看文件是如何最终生成为/data/misc/wifi/wpa_supplicant.conf
system/etc/wpa_supplicant.conf的生成:
hardware/broadcom/wlan/bcmdhd/config/Android.mk
WIFI_DRIVER_SOCKET_IFACE := wlan0 ifeq ($(strip $(WPA_SUPPLICANT_VERSION)),VER_0_8_X) include external/wpa_supplicant_8/wpa_supplicant/wpa_supplicant_conf.mk else ...... endif
external/wpa_supplicant_8/wpa_supplicant/wpa_supplicant_conf.mk
//目标文件名字 LOCAL_MODULE := wpa_supplicant.conf LOCAL_MODULE_CLASS := ETC LOCAL_MODULE_TAGS := optional //生成到system/etc/wifi目录下 LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/wifi include $(BUILD_SYSTEM)/base_rules.mk //对应的模板文件 WPA_SUPPLICANT_CONF_TEMPLATE := $(LOCAL_PATH)/wpa_supplicant_template.conf WPA_SUPPLICANT_CONF_SCRIPT := $(LOCAL_PATH)/wpa_supplicant_conf.sh $(LOCAL_BUILT_MODULE): PRIVATE_WIFI_DRIVER_SOCKET_IFACE := $(WIFI_DRIVER_SOCKET_IFACE) $(LOCAL_BUILT_MODULE): PRIVATE_WPA_SUPPLICANT_CONF_TEMPLATE := $(WPA_SUPPLICANT_CONF_TEMPLATE) $(LOCAL_BUILT_MODULE): PRIVATE_WPA_SUPPLICANT_CONF_SCRIPT := $(WPA_SUPPLICANT_CONF_SCRIPT) $(LOCAL_BUILT_MODULE) : $(WPA_SUPPLICANT_CONF_TEMPLATE) $(WPA_SUPPLICANT_CONF_SCRIPT) @echo Target wpa_supplicant.conf: $@ @mkdir -p $(dir $@) //调用bash脚本来生成目标文件 $(hide) WIFI_DRIVER_SOCKET_IFACE="$(PRIVATE_WIFI_DRIVER_SOCKET_IFACE)" \ bash $(PRIVATE_WPA_SUPPLICANT_CONF_SCRIPT) $(PRIVATE_WPA_SUPPLICANT_CONF_TEMPLATE) > $@
PRIVATE_WPA_SUPPLICANT_CONF_SCRIPT对应的是wpa_supplicant_conf.sh
# Generate a wpa_supplicant.conf from the template. # $1: the template file name if [ -n "$WIFI_DRIVER_SOCKET_IFACE" ] then sed -e 's/#.*$//' -e 's/[ \t]*$//' -e '/^$/d' < $1 | sed -e "s/wlan0/$WIFI_DRIVER_SOCKET_IFACE/" else sed -e 's/#.*$//' -e 's/[ \t]*$//' -e '/^$/d' < $1 fi
注释也说得很清楚了,从template生成wpa_supplicant.conf
对比生成的/system/etc/wpa_supplicant.conf的内容是和wpa_supplicant_template.conf一样的 。
/data/misc/wifi/wpa_supplicant.conf的生成:
wifi_start_supplicant -> ensure_config_file_exists
参数是SUPP_CONFIG_FILE,即/data/misc/wifi/wpa_supplicant.conf
int ensure_config_file_exists(const char *config_file) { ...... //先访问wpa_supplicant.conf,存在就返回,不存在就继续往下走 access(config_file, R_OK|W_OK); ...... //如果/data/misc/wifi/wpa_supplicant.conf不存在,那么往下走 //打开SUPP_CONFIG_TEMPLATE,即/system/etc/wifi/wpa_supplicant.conf TEMP_FAILURE_RETRY(open(SUPP_CONFIG_TEMPLATE, O_RDONLY)); //创建/data/misc/wifi/wpa_supplicant.conf TEMP_FAILURE_RETRY(open(config_file, O_CREAT|O_RDWR, 0660)); //读取/system/etc/wifi/wpa_supplicant.conf的内容,然后写到/data/misc/wifi/wpa_supplicant.conf中 TEMP_FAILURE_RETRY(read(srcfd, buf, sizeof(buf)); TEMP_FAILURE_RETRY(write(destfd, buf, nread)); }
还有个问题,就是会发现/data/misc/wifi/wpa_supplicant.conf的内容又会不一样,这是因为文件中有个属性
update_config=1
表示开机之后WPAS(wpa_supplicant)卡伊修改更新配置文件。
wpa_supplicant.conf的配置属性可参见 external/wpa_supplicant_8/wpa_supplicant/wpa_supplicant.conf ,里面写得很详细。
相关文章推荐
- [RK3288][Android6.0] WiFi之wpa_supplicant初始化过程
- [RK3288][Android6.0] WiFi之wpa_supplicant与内核通信的socket
- [RK3288][Android6.0] WiFi之wpa_supplicant的socket(服务端)
- [RK3288][Android6.0] WiFi之wpa_supplicant服务启动
- rk3288 android6.0 wifi子系统 - wpa_supplicant简要介绍
- [RK3288][Android6.0] WiFi之无线网络配置的保存过程
- RK3288[Android6.0] Wifi相关文件及类整理
- [RK3288][Android6.0] WiFi之无线网络配置的忘记(移除)过程
- [RK3288][Android6.0] Wifi相关文件及类整理
- [RK3288][Android6.0] WiFi的dts配置说明(AP6335)
- [RK3288][Android6.0] WiFi之通过wpa_cli分析WPAS的连接过程
- Android wpa_supplicant源码分析--conf配置文件
- hostapd wpa_supplicant madwifi详细分析(八)——wpa_supplicant的配置文件
- [RK3288][Android6.0] WiFi之无线网络配置的关闭过程
- wpa_supplicant 的配置说明文件 wpa_supplicant.conf 译文
- [RK3288][Android6.0] WiFi的Firmware和Nvram文件
- [RK3288][Android6.0] WiFi之wpa_supplicant扫描过程
- [RK3288][Android6.0] WiFi的wifi_bt_common.mk文件说明
- [RK3288][Android6.0] MediaCodec的bitrate_mode配置问题
- [RK3288][Android6.0] MediaCodec的configure配置过程小结