• port wifi to ICS(4.0.3)


    去年移植了2.2。最近又刚刚移植了4.0.3。使用的是broadcom的bcm4329网卡。现把移植经历分享一下

    1.该android.hardware.wifi.xml复制到out目录下

    在相应的.mk文件中。添加

    PRODUCT_COPY_FILES += \

        frameworks/base/data/etc/android.hardware.wifi.xml:$(PRODUCT_OUT)system/etc/permissions/android.hardware.wifi.xml

    这样,settings中就有了wifi设置

    2.external/wpa_supplicant/.config

       确保存在以下支持wifi的2项

      CONFIG_CTRL_IFACE=y 
      CONFIG_DRIVER_WEXT=y

    3.配置device/**/**相应工程的BoardConfig.mk

       确保有如下两项:

    WPA_SUPPLICANT_VERSION := VER_0_8_X //使用wpa_supplicant版本8编译

    BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_wext

    BOARD_WPA_SUPPLICANT_DRIVER := WEXT //BCM4329所使用的driver

    BOARD_WLAN_DEVICE := bcm4329

    ifeq($(BOARD_WLAN_DEVICE),bcm4329)

    WIFI_DRIVER_MODULE_NAME :=dhd //在wifi.c中会用到

    WIFI_DRIVER_MODULE_PATH := /system/etc/wifi/dhd.ko //在wifi.c中会用到

    #endif

    4.external/wpa_supplicant_8/wpa_supplicant.conf配置

    标准unix socket通信方式配置

     ctrl_interface=DIR=/data/system/wpa_supplicant GROUP=wifi  //注意要跟wifi.c中的IFACE_DIR一致
     update_config=1 
     ap_scan=1 //表示自动扫描

    android私有socket方式配置

    ctrl_interface=eth0

    update_config=1

    ap_scan=1

    此处,我使用android私有socket配置.后面的所有配置都会以此配置。编译之后,就会在out目录下生成/system/etc/wifi/wpa_supplicant.conf文件。

    5.wifi.c配置

      仔细浏览wifi.c文件,发现如下代码

        /*if (access(IFACE_DIR, F_OK) == 0) {
            snprintf(ifname, sizeof(ifname), "%s/%s", IFACE_DIR, iface); //此项情况,表示使用标准UNIX socket通信方式。如果wpa_supplicant配置的unix方式,就要走这里。
        } else*/ {
            strlcpy(ifname, iface, sizeof(ifname)); //此处,表示使用android私有socket。如果wpa_supplicant配置android socket,就要走这里。我注释掉了if的内容。
        }

    ensure_config_file_exists会复制/system/etc/wifi/wpa_supplicant.conf到/data/misc/wifi/wpa_supplicant.conf。注意检查此处的wpa_supplicant.conf是不是使用的eth0.

    6.init.rc配置

    mkdir /system/etc/wifi 0770 wifi wifi 
    chmod 0770 /system/etc/wifi 
    chmod 0660 /system/etc/wifi/wpa_supplicant.conf 
    chown wifi wifi /system/etc/wifi/wpa_supplicant.conf 
    #wpa_supplicant control socket for android wifi.c (android private socket)

    mkdir /data/misc/wifi 0770 wifi wifi 
    mkdir /data/misc/wifi/sockets 0770 wifi wifi 
    chmod 0770 /data/misc/wifi 
    chmod 0660 /data/misc/wifi/wpa_supplicant.conf 
    chown wifi wifi /data/misc/wifi 
    chown wifi wifi /data/misc/wifi/wpa_supplicant.conf 

    #添加wpa_supplicant,dhcp服务

    service wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/misc/wifi/wpa_supplicant.conf
    class main

    socket wpa_eth0 dgram 0660 wifi wifi

    disabled

    oneshot


    service dhcpcd_eth0 /system/bin/dhcpcd -BKL -d eth0 

    class main

    disabled 
    Oneshot

    在dhcp_utils.c的dhcp_do_request中。snprintf(daemon_cmd, sizeof(daemon_cmd), "%s_%s:%s", DAEMON_NAME, daemon_suffix, interface);

    可以看到启动daemon的命令是dhcpd_eth0

    7.system.prop设置

      设置wifi接口名为eth0,添加如下内容

      # WiFi Interface
      wifi.interface=eth0 //在wifi.c中会用到。property_get会取该值

    8.其他

      wpa_supplicant调试:

      #wpa_supplicant -dd -Dwext -ieth0 -c /data/misc/wifi/wpa_supplicant.conf&

    wpa_cli调式

    #wpa_cli -ieth0

    #>scan_results

      dhcp调试

      dhcpcd -f /system/etc/dhcpcd/dhcpcd.conf -d eth0
      查看firmware是否download:

      #netcfg

      adb操作:

      adb devices //查看设备是否连上
      adb remount //解决权限不足问题
      adb push d:/dhd.ko /system/

      9.打印wpa_supplicant消息:

      external/wpa_supplicant_6/wpa_supplicant/src/utils/Wpa_debug.c中,作如下修改

    1)#ifdef CONFIG_ANDROID_LOG
    int wpa_debug_level = MSG_DEBUG;

    #else

    .....

    2)android_printf函数中,修改level>=wpa_debug_level为MSG_DEBUG


    参考文章:http://blog.linuxconsulting.ro/2010/04/porting-wifi-drivers-to-android.html

    SoftAP:http://omapedia.org/wiki/Porting_WLAN_SoftAP_to_Android

    http://processors.wiki.ti.com/index.php/TI-Android-GingerBread-2.3.4-DevKit-2.1_PortingGuides#Introduction_2

    product_dir/device/samsung/crespo

  • 相关阅读:
    2019-01-28 dubbo安装并启动测试
    JAVAWEB项目获取服务器、项目相关路径方法
    Hibernate中的查询方式
    Hibernate在eclipse中的简单运用
    JQuery Tips(2)----关于$()包装集你不知道的
    JQuery Tips(3)----关于$()包装集内元素的改变
    JQuery Tips(4)----一些关于提高JQuery性能的Tips
    利用FireBug使JQuery的学习更加轻松愉快
    asp.net core2 mvc 基础教程--中间件
    asp.net core2 mvc 基础教程--服务注册和管道
  • 原文地址:https://www.cnblogs.com/chengliu/p/3636426.html
Copyright © 2020-2023  润新知