近期在调试设备时,遇到一个奇怪的问题:wifi模块工作在Station模式与AP模式之间切换时,连续几次之后,手机的无线wifi列表中就再也找不到设备的AP结点名了。。。。。。用ifconfig查看设备端的网络状态,确实是切换到了AP模式,ps查看进程,hostapd等各项后台服务也启动了,但是为什么搜索到的无线列表中就没有这个结点呢?
开始以为是wifi模块在切换的时候没有复位,于是通过GPIO控制wifi模块的电源供电,使模块在切换时先关闭各项服务,然后断电2秒,再重新上电,然后重新加载驱动,启动相关服务进程,结果依旧找不到AP结点。
后来担心是服务启动顺序或者时间不对,于是手动启动各项服务以作尝试,结果发现在多次切换AP的启动过程中报了一个错误,如下图:
提示需要手动删除 “/var/run/hostapd/wlan0”,设置wlan0控制接口失败。
于是在切换的应用程序中,尝试在复位wifi模块之前先把wlan0去掉,等重新加载wifi驱动模块后,它会自动创建对应目录下的wlan0结点。
应用程序中添加删除“/var/run/hostapd/wlan0”的操作,具体如下图所示:
经验证后,问题得到解决!