当前位置: 代码迷 >> 综合 >> andriod 2.3.3 marvell 8787 wifi移植
  详细解决方案

andriod 2.3.3 marvell 8787 wifi移植

热度:84   发布时间:2023-12-06 18:32:12.0

andriod 2.3.3 跟新后wifi移植修改文件备忘 2011-08-04:

硬件:marvell 8787

1、device\honmax\product\init.rc
  wlan0 -> mlan0   //这个名字是你驱动注册的网卡的名字,我的是mlan0
2、device\honmax\PAD1051\init.rc
这个的路径可能是device\honmax\product\init.rc 我这是分开了,自己添加的东西放在device\honmax\PAD1051\init.rc里面,方便管理。
如果没有device\honmax\PAD1051\init.rc 那就在device\honmax\product\init.rc改,一样。
    service wpa_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \
    -Dwext -imlan0 -c/data/misc/wifi/wpa_supplicant.conf
    user root
    group wifi inet
    socket wpa_mlan0 dgram 660 wifi wifi
    disabled
    oneshot
    这个是启动wifi的wpa_supplicant服务线程用的是logwrapper工具、下面的屏蔽掉,因为要用wlan_tool还要修改些东西比较麻烦。
路径:system/wlan/atheros/AR6KSDK/host/tools/wlan_tool
    #service wpa_supplicant /system/bin/wlan_tool wpa_supplicant
    #    socket wpa_mlan0 dgram 660 root wifi
    #    disabled
    #    oneshot
    #service wlan_tool /system/bin/wlan_tool
    #    oneshot
3、device\honmax\PAD1051\BoardConfig.mk
    #WIFI_DRIVER_MODULE_NAME     := "ar6000"
    #WPA_SUPPLICANT_VERSION      := VER_0_6_ATHEROS
    BOARD_WLAN_ATHEROS_SDK       := system/wlan/atheros/AR6kSDK
    #WPA_SUPPLICANT_VERSION      := VER_0_6_ATHEROS
    WPA_SUPPLICANT_VERSION      := VER_0_6_X          //会编译 external\wpa_supplicant_6\wpa_supplicant
 
    #BOARD_WPA_SUPPLICANT_DRIVER := AR6000
    BOARD_WLAN_CHIP_AR6102     := true
    BOARD_WLAN_CHIP_AR6003     := true
    BOARD_WPA_SUPPLICANT_DRIVER := WEXT
    # Select Wake on wireless mode for AR6003 suspend/resume policy
    BOARD_WLAN_PM_SUSPEND       := 2
4、external\wpa_supplicant_6\wpa_supplicant\wpa_supplicant.conf
        ctrl_interface=mlan0                   
        update_config=1

        ap_scan=1 

 

5、 确定.config 中,是否存在以下3个选项支持wifi驱动的选项
          CONFIG_WIRELESS_EXTENSION=y 

          CONFIG_CTRL_IFACE=y 
          CONFIG_DRIVER_WEXT=y


6、修改 frameworks/base/wifi/java/android/net/wifi/ WifiStateTrackey.java  

        public WifiStateTracker(Context context, Handler target) {
        // mInterfaceName = SystemProperties.get("wifi.interface", "tiwlan0");
        mInterfaceName = SystemProperties.get("wifi.interface", "mlan0");

 

7、 修改/hardware/libhardware_legacy/wifi/wifi.c

 

    把驱动名称,路径啊什么的,换成你自己驱动(也就是ko文件)的名字和存放的路径。

 

8、在system/etc 下创建文件夹firmware/mrvl ,这个是用来存放 sd8787_uapsta_bin 的。

     然后将你的 *.ko 放到 system/lib/modules 下面 ,7 中的路径就是这个了。

 

9、最后致意看下在system/etc/wifi/ 下的wpa_supplicant.conf文件中确认:

    

update_config=1

ctrl_interface=mlan0                   

              ap_scan=1 

 

10、注意上面8、9两条里面指的路径是指SD卡上的,或是你系统起来的路径

 

 

 ※  注意:  在此版本中编译external\wpa_supplicant_6 ,在wifiservice.java中

            Slog.e(TAG, "ath: load Wi-Fi driver for AP mode.");
            if (!mWifiStateTracker.loadDriver()) {
   //       if (!mWifiStateTracker.loadApDriver()) {

 

系统默认会启动 loadApDriver(),这个是实现wifi共享的,把它改回 loadDriver() 就好,不然在wifi.c中不会去装载wifi驱动。

  相关解决方案