wifi驱动无法被安卓系统正常调用

1.问题现象:

打开wifi的图标,wifi加载后又自动卸载。

2.问题分析

      驱动能正常加载,但是又自动卸载,说明驱动没有完全满足安卓的要求,查看wifi加载的源码“hardware/libhardware_legacy/wifi/wifi.”可知wifi要正确加载必须满足“wlan0和p2p”两个条件

int wifi_load_driver()
{
    char driver_status[PROPERTY_VALUE_MAX];
    int  count = 0;
   
    char tmp_buf[512] = {0};
    char *p_strstr_wlan  = NULL;
    char *p_strstr_p2p   = NULL;
    int  ret        = 0;
    FILE *fp        = NULL;

    ALOGD("Start to insmod %s.ko\n", WIFI_DRIVER_MODULE_NAME);

    if (insmod(DRIVER_MODULE_PATH, DRIVER_MODULE_ARG) < 0) {
        ALOGE("insmod %s ko failed!", WIFI_DRIVER_MODULE_NAME);
        rmmod(DRIVER_MODULE_NAME); //it may be load driver already,try remove it.
        return -1;
    }

    do{
        fp=fopen("/proc/net/wireless", "r");
        if (!fp) {
            ALOGE("failed to fopen file: /proc/net/wireless\n");
            property_set(DRIVER_PROP_NAME, "failed");
            rmmod(DRIVER_MODULE_NAME); //try remove it.
            return -1;
        }
        ret = fread(tmp_buf, sizeof(tmp_buf), 1, fp);
        if (ret==0){
            ALOGD("faied to read proc/net/wireless");
        }
        fclose(fp);

        ALOGD("loading wifi driver...");
        p_strstr_wlan = strstr(tmp_buf, "wlan0");
        p_strstr_p2p  = strstr(tmp_buf, "p2p0");
        if (p_strstr_wlan != NULL && p_strstr_p2p != NULL) {
            property_set(DRIVER_PROP_NAME, "ok");
            break;
        }
        usleep(200000);// 200ms

   } while (count++ <= TIME_COUNT);

   if(count > TIME_COUNT) {
        ALOGE("timeout, register netdevice wlan0 failed.");
        property_set(DRIVER_PROP_NAME, "timeout");
        rmmod(DRIVER_MODULE_NAME);
        return -1;
   }
   return 0;
}


利用命令查询wifi驱动加载后的状态

255|shell@tulip-t1:/vendor/modules # cat /proc/net/wireless                    
Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22
 wlan0: 0000    0     0     0        0      0      0      0      0        0

发现只有一个wlan0的接口,没有p2p的接口,出现这个问题是由于wifi驱动的配置参数出问题了,增加p2p支持后就能解决问题,再次查看wifi状态就正常了。

shell@tulip-t1:/ $ cat /proc/net/wireless
Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22
 wlan0: 0000   50.  -60.  -256        0      0      0      0      0        0
  p2p0: 0000    0     0     0        0      0      0      0      0        0



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值