本人正在做一个项目,在android的java层通过JNI调用C去控制wifi的运行,借此实现wifi和3G同时打开的最终目的。其中向内核底层(如wpa)发送信号的C代码编译成.so运行库,在java层加载调用。
在开始,当程序调用wifi.c的wifi_start_supplicant()时,会出现Cannot set RW to "/data/misc/wifi/wpa_supplicant.conf': Permission denied 的错误,就算给了wpa_supplicant.conf777的权限也无法解决,后来发现只要将这条路劲上的所有文件夹授予777权限就可以成功。
解决这个问题后,又会再次出现新的问题,Failed to start supplicant daemon.:No such file or directory,后来经过在源码中追踪发现,在wifi.c中有这么一句:pi = __system_property_find(SUPP_PROP_NAME);而这个SUPP_PROP_NAME被定义为init.svc.wpa_supplicant,这是一个android的service,这时我发现只要在程序运行前,用adb命令setprop init.svc.wpa_supplicant "running"使它变成running状态就可以解决这个问题。
接着就会出现最难搞的connection refused问题,log会提示Unable to open connection to supplicant on "/data/system/wpa_supplicant/wlan0"。
本人查阅过相关资料,有人说是wifi的interface设置错误,但我查看过/proc/net/dev,在dev文件里wlan0是存在的,并且在平常用系统自带的setting打开wifi的时候用netcfg命令看到wifi用的就是wlan0接口。而本人也按照这个链接:http://blog.linuxconsulting.ro/2010/04/porting-wifi-drivers-to-android.html
按着链接的步骤一步步设置好了路径,权限和用户/组等信息。并且在init.rc开启了wpa_supplicant和dhcpcd,并且都是使用了wlan0接口,同时权限和用户的设置是使用unix socket mode。但依旧是出现connection refused的错误。
此外,补充一点就是本人的libhardware_legacy.so文件不明原因无法覆盖进/system/lib,每次一放进去都会死机,因此无法对wifi.c进行修改。
在开始,当程序调用wifi.c的wifi_start_supplicant()时,会出现Cannot set RW to "/data/misc/wifi/wpa_supplicant.conf': Permission denied 的错误,就算给了wpa_supplicant.conf777的权限也无法解决,后来发现只要将这条路劲上的所有文件夹授予777权限就可以成功。
解决这个问题后,又会再次出现新的问题,Failed to start supplicant daemon.:No such file or directory,后来经过在源码中追踪发现,在wifi.c中有这么一句:pi = __system_property_find(SUPP_PROP_NAME);而这个SUPP_PROP_NAME被定义为init.svc.wpa_supplicant,这是一个android的service,这时我发现只要在程序运行前,用adb命令setprop init.svc.wpa_supplicant "running"使它变成running状态就可以解决这个问题。
接着就会出现最难搞的connection refused问题,log会提示Unable to open connection to supplicant on "/data/system/wpa_supplicant/wlan0"。
本人查阅过相关资料,有人说是wifi的interface设置错误,但我查看过/proc/net/dev,在dev文件里wlan0是存在的,并且在平常用系统自带的setting打开wifi的时候用netcfg命令看到wifi用的就是wlan0接口。而本人也按照这个链接:http://blog.linuxconsulting.ro/2010/04/porting-wifi-drivers-to-android.html
按着链接的步骤一步步设置好了路径,权限和用户/组等信息。并且在init.rc开启了wpa_supplicant和dhcpcd,并且都是使用了wlan0接口,同时权限和用户的设置是使用unix socket mode。但依旧是出现connection refused的错误。
此外,补充一点就是本人的libhardware_legacy.so文件不明原因无法覆盖进/system/lib,每次一放进去都会死机,因此无法对wifi.c进行修改。
解决方案 »
- 关于通知栏打开的问题
- 新手求解啊~~
- camera不预览但又能获得每一帧数据
- 如何用NDK编译汇编
- android jni调用静态库
- 摄像头预览 显示有不清晰
- ContentResolver 检索除sd卡外所有图片 INTERNAL_CONTENT_URI 这个uri设置后返回0 有人知道他怎么用??
- 关于Android 模拟器 Location Control的问题
- 如何暂停其他app,或者关闭他的声音
- 一个android设备怎么使用另外一个android设备的摄像头?
- android 关于考勤的问题。。求高人解决方案。。
- 关于安卓webview的addJavascriptInterface在DEBUG之RUN时有效,在签名打包后无效的问题
if (connect(ctrl->s, (struct sockaddr *) &ctrl->dest,
sizeof(ctrl->dest)) < 0) {
LOGE("ctrl->s is : %d" , ctrl->s);
LOGE("ctrl->s : %s" , &ctrl->dest);
close(ctrl->s);
unlink(ctrl->local.sun_path);
os_free(ctrl);
LOGE("no connect can play and:%s", strerror(errno));
return NULL;
}
望高手帮忙看看问题出在哪里0 0
2、setprop init.svc.wpa_supplicant "running" 这个源码不是通过ctrl.start去启动的吗??.....Unable to open connection to supplicant on "/data/system/wpa_supplicant/wlan0" 这个应该是个权限问题,我现在也遇到这个问题。权限问题现在让我很困惑