最近调试了rt5572模块的wifi驱动,sta功能是好的,ap和wifi direct功能没有调试出来,调试流程和教训总结如下:
1、这两款都是usb接口的,首先确保电源是好的,android系统启动后,busybox lsusb罗列一下pid和vid。
2、加载编译好的驱动insmod *.ko,busybox ifconfig -a查看相关设备有没转出来wlan0 p2p0,busybox ifconfig wlan0 up
3、使用 ./iwmulticall iwlist wlan0 scan和iwconfig wlan0 essid “MyHome” 可以连接没有加密的wifi热点,使用dhcpcd动态获取ip地址,验证ok
4、把对应的wpa_supplicant.conf和hostapd.conf 放到/data/misc/wifi目录下
/system/bin/wpa_supplicant -d -Dnl80211 -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf -B
wpa_cli -iwlan0 -p/data/misc/wifi/sockets
使用方法如下:
>scan (让driver做扫描动作)
>scan_results (让driver反馈扫描结果给supplicant)
>add_network (添加一个网络,这里面会给一个号码,一般开机的第一次添加就是0)
>set_network 0 ssid "cheny" (选择一个名叫cheny的路由器,这个是前面scan_result反馈回来的名字)
>set_network 0 psk "12345678" (输入名叫cheny的路由器的密码12345678,加密方式是wpa-psk)
>enable_network 0 (使能cheny路由器,也就是建立连接)
>save (保存)
>status (查看supplicant的当前状态,一般结果是compeleted)
>quit (退出wpa_cli命令行)
#dhcpcd -iwlan0 (给wlan0这个interface分配ip)
#ifconfig wlan0 (查看wlan0的信息,一般会有ip,mac,gateway,netmask,dns等等信息)
hostapd /data/misc/wifi/hostapd.conf 这样就可以转出对应的ap热点,busybox ifconfig wlan0 192.168.30.23 ip并且在手机端搜索到该热点并设置成静态ip地址方式,就可以实现ap的连接了。
5、对应的上层适配就是一些逻辑判断了。
驱动调试前在驱动源码中把相关日志打开很关键,有了详细的日志只要耐心跟踪就能顺藤摸瓜找到适配的关键所在;
usb设备需要注意PID,VID;
open file fail这种情况,不管三七二十一先把相关文件赋一下权限;
实在不行就需要跟进android源码wpa_supplicant_8相关部分和内核中80211相关部分。