天天看點

調通sina33下的AP6212A0版本的BT(V1.0)

調通sina33下的AP6212A0版本的BT

大文實驗室/大文哥

壹捌陸捌零陸捌捌陸捌貳

wb4916 AT qq.com

完成時間:2017/6/26 11:01

版本:V1.0

本文參照:

《A33 wifi移植說明書.pdf》

還有就是全志R16的parrotv1.1的官方SDK(Android4.4.2)

1、打開AP6212的BT,關閉rtl8723bs的BT:

[    3.141273] Bluetooth: HCI UART driver ver 2.2

[    3.146210] Bluetooth: HCI H4 protocol initialized

[    3.151563] Bluetooth: HCI BCSP protocol initialized

[    3.157154] usbcore: registered new interface driver btusb

[    3.163282] Bluetooth: Generic Bluetooth SDIO driver ver 0.1

[    3.169599] Bluetooth: BlueSleep Mode Driver Ver 1.1

[    3.175402] Bluetooth: get rtl8723bs rtl8723bs_bt_host_wake gpio failed

[    3.953017] Bluetooth: RFCOMM TTY layer initialized

[    3.958456] Bluetooth: RFCOMM socket layer initialized

[    3.964183] Bluetooth: RFCOMM ver 1.11

[    3.968340] Bluetooth: BNEP (Ethernet Emulation) ver 1.3

[    3.968638] [mmc]: sdc2 set ios: clk 25000000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B

[    3.968734] [mmc]: mclk 0xf1c20090 0xc100000b

[    3.989421] Bluetooth: BNEP filters: protocol multicast

[    3.995242] Bluetooth: HIDP (Human Interface Emulation) ver 1.2

[    4.001921] L2TP core driver, V2.0

[    4.005706] PPPoL2TP kernel driver, V2.0

[    4.010070] L2TP IP encapsulation support (L2TPv3)

[    4.015468] L2TP netlink interface

[    4.019264] L2TP ethernet pseudowire support (L2TPv3)

[    4.023860] [mmc]: sdc2 set ios: clk 25000000Hz bm PP pm ON vdd 3.3V width 1 timing MMC-HS(SDR20) dt B

[    4.023929] [mmc]: mclk 0xf1c20090 0xc100000b

[    4.040272] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5

[    4.048780] ThumbEE CPU extension supported.

[    4.053550] Registering SWP/SWPB emulation handler

[    4.059269] [rfkill]: rfkill set power 1

[    4.063652] gpio ap6xxx_bt_regon set val 0, act val 0

正常啟動的BT加載:

[    3.207764] Bluetooth: HCI UART driver ver 2.2

[    3.212725] Bluetooth: HCI H4 protocol initialized

[    3.218045] Bluetooth: HCI BCSP protocol initialized

[    3.223671] usbcore: registered new interface driver btusb

[    3.229766] Bluetooth: Generic Bluetooth SDIO driver ver 0.1

[    3.236243] Bluetooth: MSM Sleep Mode Driver Ver 1.2

[email protected]:~/wyb/ap6212a0_a33_sc3817r$ ll

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee$ ./build.sh config

Welcome to mkscript setup progress

All available chips:

   0. sun8iw5p1

Choice: 0

All available platforms:

   0. android

   1. dragonboard

   2. linux

Choice: 0

All available kernel:

   0. linux-3.4

Choice: 0

All available boards:

   0. evb

   1. maple

   2. redwood

   3. y2

   4. y3

Choice: 4

rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ cd linux-3.4/

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4$ make ARCH=arm menuconfig

[*] Networking support  --->

<*>   Bluetooth subsystem support  --->

Bluetooth device drivers  --->

< > Broadcom Bluetooth Low Power Manager Support

<*> Realtek Bluesleep driver support

修改為:

<*> Broadcom Bluetooth Low Power Manager Support

< >   An inverter between bt hostwake pin and cpu (NEW)

< > Realtek Bluesleep driver support

2、(這個不修改:)

R:\wyb\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\overlay\frameworks\base\core\res\res\values\config.xml

<!-- List of regexpressions describing the interface (if any) that represent tetherable

         Wifi interfaces.  If the device doesn't want to support tethering over Wifi this

         should be empty.  An example would be "softap.*" -->

    <string-array translatable="false" name="config_tether_wifi_regexs">

<item>"wlan0"</item>

    </string-array>

    <!-- List of regexpressions describing the interface (if any) that represent tetherable

         bluetooth interfaces.  If the device doesn't want to support tethering over bluetooth this

         should be empty. -->

    <!--  default: disable Bluetooth PAN feature -->

    <string-array translatable="false" name="config_tether_bluetooth_regexs">

        <item>"bt-pan"</item>

    </string-array>

3、

R:\wyb\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\astar_y3.mk

# ap6181/6210/6330 sdio wifi fw and nvram

#$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6181/device-bcm.mk)

#$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6210/device-bcm.mk)

$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6212/device-bcm.mk)

#$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6330/device-bcm.mk)

#rtl8723bs bt fw and config

#$(call inherit-product, hardware/realtek/bluetooth/rtl8723bs/firmware/rtlbtfw_cfg.mk)

# camera config for camera detector

#PRODUCT_COPY_FILES += \

# device/softwinner/astar-y3/hawkview/sensor_list_cfg.ini:system/etc/hawkview/sensor_list_cfg.ini

#add gms features

#PRODUCT_COPY_FILES += \

#        frameworks/native/data/etc/android.hardware.faketouch.xml:system/etc/permissions/android.hardware.faketouch.xml \

#        frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \

#        frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml 

# 3G Data Card Packages

#PRODUCT_PACKAGES += \

# u3gmonitor \

# chat \

# rild \

# pppd

# 3G Data Card Configuration Flie

#PRODUCT_COPY_FILES += \

# device/softwinner/polaris-common/rild/ip-down:system/etc/ppp/ip-down \

# device/softwinner/polaris-common/rild/ip-up:system/etc/ppp/ip-up \

# device/softwinner/polaris-common/rild/3g_dongle.cfg:system/etc/3g_dongle.cfg \

# device/softwinner/polaris-common/rild/usb_modeswitch:system/bin/usb_modeswitch \

# device/softwinner/polaris-common/rild/call-pppd:system/xbin/call-pppd \

# device/softwinner/polaris-common/rild/usb_modeswitch.sh:system/xbin/usb_modeswitch.sh \

# device/softwinner/polaris-common/rild/apns-conf_sdk.xml:system/etc/apns-conf.xml \

# device/softwinner/polaris-common/rild/libsoftwinner-ril.so:system/lib/libsoftwinner-ril.so

#PRODUCT_COPY_FILES += \

# device/softwinner/polaris-common/rild/init.3gdongle.rc:root/init.sunxi.3gdongle.rc

# 3G Data Card usb modeswitch File

#PRODUCT_COPY_FILES += \

# $(call find-copy-subdir-files,*,device/softwinner/polaris-common/rild/usb_modeswitch.d,system/etc/usb_modeswitch.d)

PRODUCT_PROPERTY_OVERRIDES += \

   ro.sw.embeded.telephony = false

PRODUCT_PROPERTY_OVERRIDES += \

persist.sys.timezone=Asia/Shanghai \

persist.sys.language=zh \

persist.sys.country=CN

PRODUCT_PACKAGES += Bluetooth

#PRODUCT_PROPERTY_OVERRIDES += \

# ro.product.8723b_bt.used=true

#GPS Feature

#PRODUCT_PACKAGES +=  gps.polaris

#BOARD_USES_GPS_TYPE := simulator

#PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.location.xml:system/etc/permissions/android.hardware.location.xml

# evb logger

PRODUCT_COPY_FILES += \

    device/softwinner/astar-y3/tools/logger.sh:system/bin/logger.sh

PRODUCT_PROPERTY_OVERRIDES += \

persist.sys.usb.config=mass_storage,adb \

ro.adb.secure=0

ro.udisk.lable=Polaris \

ro.font.scale=1.0 \

ro.hwa.force=false \

rw.logger=0 \

ro.sys.bootfast=true \

debug.hwc.showfps=0 \

debug.hwui.render_dirty_regions=false

#ro.sys.storage_type = emulated \

#for gms

#PRODUCT_PROPERTY_OVERRIDES += \

#        ro.sys.mutedrm=true \

#        ro.adb.secure=1

PRODUCT_PROPERTY_OVERRIDES += \

ro.sf.lcd_density=213 \

ro.product.firmware=v2.0

$(call inherit-product-if-exists, device/softwinner/astar-y3/modules/modules.mk)

DEVICE_PACKAGE_OVERLAYS := device/softwinner/astar-y3/overlay

PRODUCT_CHARACTERISTICS := tablet

# Overrides

PRODUCT_AAPT_CONFIG := xlarge hdpi xhdpi large

PRODUCT_AAPT_PREF_CONFIG := xhdpi

PRODUCT_BRAND  := Allwinner

PRODUCT_NAME   := astar_y3

PRODUCT_DEVICE := astar-y3

PRODUCT_MODEL  := QUAD-CORE A33 y3

PRODUCT_MANUFACTURER := softwinner

#include device/softwinner/polaris-common/prebuild/google/products/gms_base.mk

4、

R:\wyb\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\BoardConfig.mk

# wifi and bt configuration

# 1. Wifi Configuration

# 1.1 realtek wifi support 

# 1.1  realtek wifi configuration

#BOARD_WIFI_VENDOR := realtek

ifeq ($(BOARD_WIFI_VENDOR), realtek)

    WPA_SUPPLICANT_VERSION := VER_0_8_X

    BOARD_WPA_SUPPLICANT_DRIVER := NL80211

    BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl

    BOARD_HOSTAPD_DRIVER        := NL80211

    BOARD_HOSTAPD_PRIVATE_LIB   := lib_driver_cmd_rtl

    SW_BOARD_USR_WIFI := rtl8188eu

    BOARD_WLAN_DEVICE := rtl8188eu

    #SW_BOARD_USR_WIFI := rtl8723au

    #BOARD_WLAN_DEVICE := rtl8723au

    #SW_BOARD_USR_WIFI := rtl8723bs

    #BOARD_WLAN_DEVICE := rtl8723bs

endif

# 1.2 broadcom wifi support

BOARD_WIFI_VENDOR := broadcom

ifeq ($(BOARD_WIFI_VENDOR), broadcom)

    BOARD_WPA_SUPPLICANT_DRIVER := NL80211

    WPA_SUPPLICANT_VERSION      := VER_0_8_X

    BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd

    BOARD_HOSTAPD_DRIVER        := NL80211

    BOARD_HOSTAPD_PRIVATE_LIB   := lib_driver_cmd_bcmdhd

    BOARD_WLAN_DEVICE           := bcmdhd

    WIFI_DRIVER_FW_PATH_PARAM   := "/sys/module/bcmdhd/parameters/firmware_path"

    #SW_BOARD_USR_WIFI := AP6181

    #SW_BOARD_USR_WIFI := AP6210

    #WIFI_DRIVER_FW_PATH_STA    := "/system/vendor/modules/fw_bcm40181a2.bin"

    #WIFI_DRIVER_FW_PATH_P2P    := "/system/vendor/modules/fw_bcm40181a2_p2p.bin"

    #WIFI_DRIVER_FW_PATH_AP     := "/system/vendor/modules/fw_bcm40181a2_apsta.bin"

    # 2017/6/21 15:11 wenyuanbo configure ap6212 use ap6210

    SW_BOARD_USR_WIFI := AP6212

    WIFI_DRIVER_FW_PATH_STA    := "/system/vendor/modules/fw_bcm43438a0.bin"

    WIFI_DRIVER_FW_PATH_P2P    := "/system/vendor/modules/fw_bcm43438a0_p2p.bin"

    WIFI_DRIVER_FW_PATH_AP     := "/system/vendor/modules/fw_bcm43438a0_apsta.bin"

    #SW_BOARD_USR_WIFI := AP6330

    #WIFI_DRIVER_FW_PATH_STA    := "/system/vendor/modules/fw_bcm40183b2_ag.bin"

    #WIFI_DRIVER_FW_PATH_P2P    := "/system/vendor/modules/fw_bcm40183b2_ag_p2p.bin"

    #WIFI_DRIVER_FW_PATH_AP     := "/system/vendor/modules/fw_bcm40183b2_ag_apsta.bin"

endif

#1.3 eag wifi config

#BOARD_WIFI_VENDOR := eagle

ifeq ($(BOARD_WIFI_VENDOR), eagle)

    WPA_SUPPLICANT_VERSION := VER_0_8_X

    BOARD_WPA_SUPPLICANT_DRIVER := NL80211

    BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_eagle

    BOARD_HOSTAPD_DRIVER        := NL80211

    BOARD_HOSTAPD_PRIVATE_LIB   := lib_driver_cmd_eagle

    SW_BOARD_USR_WIFI := esp8089

    BOARD_WLAN_DEVICE := esp8089

endif

# 2. Bluetooth Configuration

# make sure BOARD_HAVE_BLUETOOTH is true for every bt vendor

BOARD_HAVE_BLUETOOTH := true

BOARD_HAVE_BLUETOOTH_BCM := true

#SW_BOARD_HAVE_BLUETOOTH_NAME := ap6210

SW_BOARD_HAVE_BLUETOOTH_NAME := ap6212

#SW_BOARD_HAVE_BLUETOOTH_NAME := ap6330

#BOARD_HAVE_BLUETOOTH_RTK := true

#BLUETOOTH_HCI_USE_RTK_H5 := true

#SW_BOARD_HAVE_BLUETOOTH_NAME := rtl8723bs

5、

R:\wyb\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\init.sun8i.rc

on early-fs

mount_all /fstab.sun8i

setprop ro.crypto.fuse_sdcard true

insmod /system/vendor/modules/disp.ko

insmod /system/vendor/modules/lcd.ko

insmod /system/vendor/modules/mali.ko

insmod /system/vendor/modules/leds-sunxi.ko

insmod /system/vendor/modules/bcmdhd.ko

insmod /system/vendor/modules/bcm_btlpm.ko

#2G or 3G init.rc

# import init.sunxi.3gdongle.rc

## 1. realtek & eagle wifi service

## 1.1 realtek & eagle wifi sta service

#service wpa_supplicant /system/bin/wpa_supplicant \

#    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \

#    -O/data/misc/wifi/sockets \

#    -e/data/misc/wifi/entropy.bin [email protected]:wpa_wlan0

#    #   we will start as root and wpa_supplicant will switch to user wifi

#    #   after setting up the capabilities required for WEXT

#    #   user wifi

#    #   group wifi inet keystore

#    class main

#    socket wpa_wlan0 dgram 660 wifi wifi

#    disabled

#    oneshot

#

## 1.2 realtek & eagle wifi sta p2p concurrent service

#service p2p_supplicant /system/bin/wpa_supplicant \

# -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \

# -e/data/misc/wifi/entropy.bin -N \

#  -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \

# -O/data/misc/wifi/sockets \

# [email protected]:wpa_wlan0

# class main

# socket wpa_wlan0 dgram 660 wifi wifi

# disabled

# oneshot

# 2. broadcom wifi service

# 2.1 broadcom wifi station and softap

service wpa_supplicant /system/bin/wpa_supplicant \

    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \

    -I/system/etc/wifi/wpa_supplicant_overlay.conf \

    -O/data/misc/wifi/sockets \

    -e/data/misc/wifi/entropy.bin [email protected]:wpa_wlan0

    #   we will start as root and wpa_supplicant will switch to user wifi

    #   after setting up the capabilities required for WEXT

    #   user wifi

    #   group wifi inet keystore

    class main

    socket wpa_wlan0 dgram 660 wifi wifi

    disabled

    oneshot

# 2.2 broadcom wifi sta p2p concurrent service

service p2p_supplicant /system/bin/wpa_supplicant \

    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \

    -I/system/etc/wifi/wpa_supplicant_overlay.conf \

    -O/data/misc/wifi/sockets -N \

    -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \

    -I/system/etc/wifi/p2p_supplicant_overlay.conf \

    -puse_p2p_group_interface=1 -e/data/misc/wifi/entropy.bin \

    [email protected]:wpa_wlan0

    #   we will start as root and wpa_supplicant will switch to user wifi

    #   after setting up the capabilities required for WEXT

    #   user wifi

    #   group wifi inet keystore

    class main

    socket wpa_wlan0 dgram 660 wifi wifi

    disabled

    oneshot

6、(不需要修改)

R:\wyb\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\ueventd.sun8i.rc

7、

R:\wyb\ap6212a0_a33_sc3817r\android\frameworks\base\packages\SettingsProvider\res\values\defaults.xml

    <integer name="def_screen_off_timeout">1800000</integer>

    <bool name="def_lockscreen_disabled">true</bool>

8、

R:\wyb\ap6212a0_a33_sc3817r\android\frameworks\base\services\java\com\android\server\BatteryService.java

    // private static final boolean DEBUG = false;

    private static final boolean DEBUG = true;

    private void sendIntentLocked() {

        //  Pack up the values and broadcast them to everyone

        final Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED);

        intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY

                | Intent.FLAG_RECEIVER_REPLACE_PENDING);

        int icon = getIconLocked(mBatteryProps.batteryLevel);

        intent.putExtra(BatteryManager.EXTRA_STATUS, mBatteryProps.batteryStatus);

        intent.putExtra(BatteryManager.EXTRA_HEALTH, mBatteryProps.batteryHealth);

        intent.putExtra(BatteryManager.EXTRA_PRESENT, mBatteryProps.batteryPresent);

        //intent.putExtra(BatteryManager.EXTRA_LEVEL, mBatteryProps.batteryLevel);

        intent.putExtra(BatteryManager.EXTRA_LEVEL, 100);

        intent.putExtra(BatteryManager.EXTRA_SCALE, BATTERY_SCALE);

        intent.putExtra(BatteryManager.EXTRA_ICON_SMALL, icon);

        intent.putExtra(BatteryManager.EXTRA_PLUGGED, mPlugType);

        //intent.putExtra(BatteryManager.EXTRA_VOLTAGE, mBatteryProps.batteryVoltage);

        intent.putExtra(BatteryManager.EXTRA_VOLTAGE, 4200);

        intent.putExtra(BatteryManager.EXTRA_TEMPERATURE, mBatteryProps.batteryTemperature);

        intent.putExtra(BatteryManager.EXTRA_TECHNOLOGY, mBatteryProps.batteryTechnology);

        intent.putExtra(BatteryManager.EXTRA_INVALID_CHARGER, mInvalidCharger);

        if (DEBUG) {

            Slog.d(TAG, "2016/12/05 10:41 wenyuanbo **** Sending ACTION_BATTERY_CHANGED.  level:" + mBatteryProps.batteryLevel +

                    ", scale:" + BATTERY_SCALE + ", status:" + mBatteryProps.batteryStatus +

                    ", health:" + mBatteryProps.batteryHealth +  ", present:" + mBatteryProps.batteryPresent +

                    ", voltage: " + mBatteryProps.batteryVoltage +

                    ", temperature: " + mBatteryProps.batteryTemperature +

                    ", technology: " + mBatteryProps.batteryTechnology +

                    ", AC powered:" + mBatteryProps.chargerAcOnline + ", USB powered:" + mBatteryProps.chargerUsbOnline +

                    ", Wireless powered:" + mBatteryProps.chargerWirelessOnline +

                    ", icon:" + icon  + ", invalid charger:" + mInvalidCharger);

        }

        mHandler.post(new Runnable() {

            @Override

            public void run() {

                ActivityManagerNative.broadcastStickyIntent(intent, null, UserHandle.USER_ALL);

            }

        });

    }

9、(直接拷貝同目錄下的ap6210:)

R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\conf\softwinner\ap6212\Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := bt_vendor.conf

LOCAL_MODULE_CLASS := ETC

LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/bluetooth

LOCAL_MODULE_TAGS := eng

LOCAL_SRC_FILES := $(LOCAL_MODULE)

include $(BUILD_PREBUILT)

R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\conf\softwinner\ap6212\bt_vendor.conf

# UART device port where Bluetooth controller is attached

UartPort = /dev/ttyS1

# Firmware patch file location

FwPatchFilePath = /system/vendor/modules/

# Firmware Name

FwPatchFileName = bcm43438a0.hcd

10、新增:vnd_astar-y3-ap6212.txt,直接拷貝:vnd_astar-y2-ap6210.txt

R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\include\vnd_astar-y3-ap6212.txt

R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\include\vnd_astar-y2-ap6210.txt

BLUETOOTH_UART_DEVICE_PORT = "/dev/ttyS1"

FW_PATCHFILE_LOCATION = "/system/vendor/modules/"

LPM_IDLE_TIMEOUT_MULTIPLE = 5

UART_TARGET_BAUD_RATE = 1500000

BT_WAKE_VIA_PROC = TRUE

#LPM_SLEEP_MODE = FALSE

BTVND_DBG = TRUE

BTHW_DBG = TRUE

VNDUSERIAL_DBG = TRUE

UPIO_DBG = TRUE

11、

R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\src\userial_vendor.c

//#ifdef USE_AP6210_BT_MODULE

#if defined(USE_AP6210_BT_MODULE) || defined(USE_AP6212_BT_MODULE)

    ALOGE("userial vendor open: USE AP6210 BT MODULE.");

    usleep(100000);

    close(vnd_userial.fd);

    if ((vnd_userial.fd = open(vnd_userial.port_name, O_RDWR)) == -1)

    {

   ALOGE("userial vendor open: unable to open %s", vnd_userial.port_name);

   return -1;

    }

#endif //USE_AP6210_BT_MODULE

12、

R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\Android.mk

ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6210)

LOCAL_CFLAGS += -DUSE_AP6210_BT_MODULE

endif

ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6212)

LOCAL_CFLAGS += -DUSE_AP6212_BT_MODULE

endif

ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6330)

    include $(LOCAL_PATH)/conf/softwinner/ap6330/Android.mk

endif

ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6210)

    include $(LOCAL_PATH)/conf/softwinner/ap6210/Android.mk

endif

ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6212)

    include $(LOCAL_PATH)/conf/softwinner/ap6212/Android.mk

endif

13、

R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\vnd_buildcfg.mk

ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6210)

SRC := $(call my-dir)/include/$(addprefix vnd_, $(addsuffix -ap6210.txt,$(basename $(TARGET_DEVICE))))

endif

ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6212)

SRC := $(call my-dir)/include/$(addprefix vnd_, $(addsuffix -ap6212.txt,$(basename $(TARGET_DEVICE))))

endif

14、(這些AP6212的WIFI的bin檔案和BT的hcd檔案來自全志R16的SDK,當然也可以找正基原廠/代理商索取:)

R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\bcm43438a0.hcd

(根據ap6210修改:)

R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\device-bcm.mk

#

# Copyright (C) 2008 The Android Open Source Project

#

# Licensed under the Apache License, Version 2.0 (the "License");

# you may not use this file except in compliance with the License.

# You may obtain a copy of the License at

#

#      http://www.apache.org/licenses/LICENSE-2.0

#

# Unless required by applicable law or agreed to in writing, software

# distributed under the License is distributed on an "AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

# See the License for the specific language governing permissions and

# limitations under the License.

#

########################

-include hardware/broadcom/wlan/bcmdhd/config/config-bcm.mk

PRODUCT_COPY_FILES += \

    hardware/broadcom/wlan/firmware/ap6212/fw_bcm43438a0.bin:system/vendor/modules/fw_bcm43438a0.bin \

    hardware/broadcom/wlan/firmware/ap6212/fw_bcm43438a0_apsta.bin:system/vendor/modules/fw_bcm43438a0_apsta.bin \

    hardware/broadcom/wlan/firmware/ap6212/fw_bcm43438a0_p2p.bin:system/vendor/modules/fw_bcm43438a0_p2p.bin \

    hardware/broadcom/wlan/firmware/ap6212/nvram_ap6212.txt:system/vendor/modules/nvram_ap6212.txt \

    hardware/broadcom/wlan/firmware/ap6212/bcm43438a0.hcd:system/vendor/modules/bcm43438a0.hcd

    #hardware/broadcom/wlan/firmware/ap6212/config.txt:system/vendor/modules/config.txt

########################

R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\fw_bcm43438a0.bin

R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\fw_bcm43438a0_apsta.bin

R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\fw_bcm43438a0_p2p.bin

R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\nvram_ap6212.txt

15、(可選修改:)

R:\wyb\ap6212a0_a33_sc3817r\android\packages\apps\Camera2\src\com\android\camera\CameraActivity.java

    private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() {

    @Override

    public void onReceive(Context context, Intent intent) {

    String action = intent.getAction();

    if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {

    int Level = intent.getIntExtra("level", 0);

    int Scale = intent.getIntExtra("scale", 100);

    Log.w(TAG, "2016/11/29 19:54 &&&& wenyuanbo battery Level" + Level);

    if(Level < 5)

    {

Runnable runnable_close_camera = new Runnable() {

@Override

public void run() {

//close the camera.

// CameraActivity.this.finish();

}

};

Log.w(TAG, "2016/11/29 18:20 **** wenyuanbo battery Level" + Level);

showLocationDialog();    

    }

    else if(Level < 16)

    {

    //close the flash mode.

    }

    }

    }

    };

16、(可選:)

R:\wyb\ap6212a0_a33_sc3817r\lichee\tools\pack\chips\sun8iw5p1\configs\default\env.cfg

bootdelay=3

loglevel=8

17、

R:\wyb\ap6212a0_a33_sc3817r\lichee\tools\pack\chips\sun8iw5p1\configs\y3\sys_config.fex

[power_sply]

dcdc1_vol       = 3000

dcdc2_vol       = 1100

dcdc3_vol       = 1200

dcdc4_vol       = 0

dcdc5_vol       = 1500

aldo1_vol       = 3300

aldo2_vol       = 2500

aldo3_vol       = 3000

dldo1_vol       = 3300

dldo2_vol       = 3300

dldo3_vol       = 2800

;gpio0_vol      = 2800

ldoio0_vol      = 2800

;----------------------------------------------------------------------------------

;uart configuration

;uart_used = uart x enable

;uart_type       = 2:2 wire,4:4 wire,8:8 wire, full function

;----------------------------------------------------------------------------------

[uart0]

uart_used       = 1

uart_port       = 0

uart_type       = 2

uart_tx         = port:PF02<3><1><default><default>

uart_rx         = port:PF04<3><1><default><default>

[uart1]

uart_used       = 1

uart_port       = 1

uart_type       = 4

uart_tx         = port:PG06<2><1><default><default>

uart_rx         = port:PG07<2><1><default><default>

uart_rts        = port:PG08<2><1><default><default>

uart_cts        = port:PG09<2><1><default><default>

[uart2]

uart_used       = 1

uart_type       = 4

uart_tx         = port:PB00<2><1><default><default>

uart_rx         = port:PB01<2><1><default><default>

uart_rts        = port:PB02<2><1><default><default>

uart_cts        = port:PB03<2><1><default><default>

[uart3]

uart_used       = 0

uart_type       = 4

uart_tx         = port:PH06<3><1><default><default>

uart_rx         = port:PH07<3><1><default><default>

uart_rts        = port:PH08<3><1><default><default>

uart_cts        = port:PH09<3><1><default><default>

[uart4]

uart_used       = 0

uart_port       = 4

uart_type       = 2

uart_tx         = port:PA04<2><1><default><default>

uart_rx         = port:PA05<2><1><default><default>

uart_rts        = port:PA06<2><1><default><default>

uart_cts        = port:PA07<2><1><default><default>

;----------------------------------------------------------------------------------

;capacitor tp configuration

;ctp_twi_id : twi controller ID

;ctp_twi_addr : I2C slave address, 7bit

;ctp_screen_max_x/_y : resolution of touch panel

;ctp_revert_x/_y_flag : whether need to revert x/y

;ctp_exchange_x_y_flag: whether need to exchange the value of x and y

;ctp_int_port : port for tp's interrupt signal

;ctp_wakeup : port for wakeup tp

;----------------------------------------------------------------------------------

[ctp_para]

ctp_used            = 1

ctp_name            = "gt82x"

ctp_twi_id          = 0

ctp_twi_addr        = 0x5d

ctp_screen_max_x    = 1280

ctp_screen_max_y    = 800

ctp_revert_x_flag   = 1

ctp_revert_y_flag   = 1

ctp_exchange_x_y_flag = 1

ctp_int_port        = port:PL04<4><default><default><default>

ctp_wakeup          = port:PL03<1><default><default><1>

ctp_power_ldo       = 

ctp_power_ldo_vol   = 

ctp_power_io        =

;--------------------------------------------------------------------------------

; CTP automatic detection configuration

;ctp_detect_used  --- Whether startup automatic inspection function. 1:used,0:unused

;Module name postposition 1 said detection, 0 means no detection. 

;--------------------------------------------------------------------------------

[ctp_list_para]

ctp_det_used              = 1

ft5x_ts                   = 1

gt82x                     = 1

gslX680                   = 1

gslX680new                = 0

gt9xx_ts                  = 1

gt9xxf_ts                 = 0

tu_ts                     = 0

gt818_ts                  = 1

zet622x                   = 1

aw5306_ts                 = 1

icn83xx_ts                = 0

[lcd0_para]

lcd_used            = 1

lcd_driver_name     = "default_lcd"

lcd_if              = 3

lcd_x               = 1280

lcd_y               = 800

lcd_width           = 150

lcd_height          = 94

lcd_dclk_freq       = 71

lcd_pwm_used        = 1

lcd_pwm_ch          = 0

lcd_pwm_freq        = 50000

lcd_pwm_pol         = 1

lcd_hbp             = 20

lcd_ht              = 1418

lcd_hspw            = 10

lcd_vbp             = 10

lcd_vt              = 830

lcd_vspw            = 5

lcd_lvds_if         = 0

lcd_lvds_colordepth = 1

lcd_lvds_mode       = 0

lcd_frm             = 1

lcd_gamma_en        = 0

lcd_bright_curve_en = 0

lcd_cmap_en         = 0

deu_mode            = 0

lcdgamma4iep        = 22

smart_color        = 90

lcd_bl_en           = port:PD13<1><0><default><1>

;ap6xxx_wl_regon      = port:PL06<1><default><default><0>

;lcd_bl_en           = port:PL06<1><0><default><1>

lcd_power           = "axp22_dc1sw"

lcdd0               = port:PD18<3><0><default><default>

lcdd1               = port:PD19<3><0><default><default>

lcdd2               = port:PD20<3><0><default><default>

lcdd3               = port:PD21<3><0><default><default>

lcdd4               = port:PD22<3><0><default><default>

lcdd5               = port:PD23<3><0><default><default>

lcdd6               = port:PD24<3><0><default><default>

lcdd7               = port:PD25<3><0><default><default>

lcdd8               = port:PD26<3><0><default><default>

lcdd9               = port:PD27<3><0><default><default>

;----------------------------------------------------------------------------------

;pwm config

;----------------------------------------------------------------------------------

[pwm0_para]

pwm_used            = 0

pwm_positive        = port:PH00<2><0><default><default>

[pwm1_para]

pwm_used            = 1

pwm_positive        = port:PH01<2><0><default><default>

;--------------------------------------------------------------------------------

;wifi configuration

;wifi_sdc_id:    0- SDC0, 1- SDC1, 2- SDC2, 3- SDC3

;wifi_usbc_id:   0- USB0, 1- USB1, 2- USB2

;wifi_usbc_type: 1- EHCI(speed 2.0), 2- OHCI(speed 1.0)

;wifi_mod_sel:   0- none, 1- ap6181, 2- ap6210(wifi+bt),

;                3 - rtl8188eu, 4- rtl8723au(wifi+bt),

;                5 - rtl8723bs, 6- esp8089

;--------------------------------------------------------------------------------

[wifi_para]

wifi_used          = 1

wifi_sdc_id        = 1

wifi_usbc_id       = 1

wifi_usbc_type     = 1

wifi_mod_sel       = 2

wifi_power         = "axp22_dldo1"

wifi_power_ext1    = "axp22_dldo2"

wifi_power_ext2    = "axp22_aldo1"

wifi_power_switch  = 

;wifi_power_switch  = port:power0<1><0><default><0>

; 1 - ap6181 sdio wifi gpio config

;ap6xxx_wl_regon      = port:PL06<1><default><default><0>

;ap6xxx_wl_host_wake  = port:PL07<4><default><default><0>

;ap6xxx_lpo_use_apclk = 1

; 2 - ap6210 sdio wifi gpio config

ap6xxx_wl_regon      = port:PL06<1><default><default><0>

;ap6xxx_wl_regon      = port:PD13<1><default><default><0>

ap6xxx_wl_host_wake  = port:PL07<4><default><default><0>

ap6xxx_bt_regon      = port:PL08<1><default><default><0>

ap6xxx_bt_wake       = port:PL10<1><default><default><0>

ap6xxx_bt_host_wake  = port:PL09<4><default><default><0>

ap6xxx_lpo_use_apclk = 1

; 3 - rtl8188eu usb wifi gpio conifg

; 4 - rtl8723au usb wifi + bt

; 5 - rtl8723bs sdio wifi + bt

;rtl8723bs_chip_en       = port:PL11<1><default><default><0>

;rtl8723bs_wl_regon      = port:PL06<1><default><default><0>

;rtl8723bs_wl_host_wake  = port:PL07<4><default><default><0>

;rtl8723bs_bt_regon      = port:PL08<1><default><default><0>

;rtl8723bs_bt_wake       = port:PL10<1><default><default><0>

;rtl8723bs_bt_host_wake  = port:PL09<4><default><default><0>

;rtl8723bs_lpo_use_apclk = 0

; 6 - eagle sdio wifi

;esp_wl_chip_en        = port:PL03<1><default><default><0>

;esp_wl_rst            = port:PL02<1><default><default><0>

;--------------------------------------------------------------------------------

;blue tooth

;bt_used ---- blue tooth used (0- no used, 1- used)

;bt_uard_id ---- uart index

;--------------------------------------------------------------------------------

[bt_para]

bt_used             = 1

bt_uart_id          = 1

power_start                = 3

pmu_temp_enable            = 0

18、

刷機之後,BT可以用。

傳輸4.5MB的JPG圖檔大概需要2分鐘。

WIFI:

在設定→WLAN(打開之後):

[email protected]:/ $ 

[email protected]:/ $ [  469.609956] init: computing context for service '/system/bin/wpa_supplicant'

[  469.618386] init: starting 'p2p_supplicant'

[  469.625739] init: Created socket '/dev/socket/wpa_wlan0' with mode '660', user '1010', group '1010'

[  469.673379] init: waitpid returned pid 2065, status = 0000ff00

[  469.679923] init: process 'p2p_supplicant', pid 2065 exited

[  476.197334] sndpcm_unmute,line:1099

[  451.464755] CPU1: Booted secondary processor

[  478.459403] CPU1: shutdown

[  478.462947] [hotplug]: cpu(0) try to kill cpu(1)

[  478.468478] [hotplug]: cpu1 is killed! .

[email protected]:/ $ 

分析啟動的log:

[   17.526849] gpio ap6xxx_wl_regon set val 1, act val 1

[   17.632508] [ap6xxx]: sdio wifi power state: on

[   17.637576] [mmc]: sdc1 set ios: clk 0Hz bm PP pm UP vdd 3.3V width 1 timing LEGACY(SDR12) dt B

[   17.637751] =========== WLAN placed in POWER ON ========

[   17.654651] [mmc]: sdc1 card_power_on start...

[   17.659576] [mmc]: sdc1 power_supply is null

[   17.664322] [mmc]: sdc1 card_power_on ok

[   17.680039] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B

[   17.690275] [mmc]: mclk 0xf1c2008c 0x8002000e

[   17.772361] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 52,  RTO !!

[   17.781309] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 52,  RTO !!

[   17.789448] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B

[   17.799714] [mmc]: mclk 0xf1c2008c 0x8002000e

[   17.862032] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B

[   17.872262] [mmc]: mclk 0xf1c2008c 0x8002000e

[   17.933953] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 8,  RTO !!

[   17.941997] *******************Try sdio*******************

[   17.948400] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B

[   17.958630] [mmc]: mclk 0xf1c2008c 0x8002000e

[   18.027775] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)

[   18.035416] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)

[   18.043087] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)

[   18.051920] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)

[   18.145287] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B

[   18.155436] [mmc]: mclk 0xf1c2008c 0x8002000e

[   18.215346] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B

[   18.225736] [mmc]: mclk 0xf1c2008c 0x8100000b

[   18.285675] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[   18.296021] [mmc]: mclk 0xf1c2008c 0x8140030b

[   18.357915] mmc1: new high speed SDIO card at address 0001

[   18.364532] bcmsdh_register: Linux Kernel SDIO/MMC Driver

[   18.364575] *******************sdio init ok*******************

[   18.377207] bcm_wlan_get_oob_irq enter.

[   18.381537] gpio [359] map to virq [7] ok

[   18.388851] F1 signature OK, socitype:0x1 chip:0xa9a6 rev:0x0 pkg:0x4

[   18.396019] dhdsdio_probe_attach: unsupported chip: 0xa9a6

[   18.402155] dhdsdio_probe: dhdsdio_probe_attach failed

[   18.407899] bcmsdh_probe: device attach failed

[   18.412981] 

[   18.412984] Dongle Host Driver, version 1.88.45.3 (r420671)

[   18.412989] Compiled in drivers/net/wireless/bcmdhd on Jun 26 2017 at 12:06:39

[   18.428835] dhd_module_init: sdio_register_driver timeout or error 

[   18.435928] gpio ap6xxx_wl_regon set val 0, act val 0

[   18.541549] [ap6xxx]: sdio wifi power state: off

[   18.546679] =========== WLAN placed in POWER OFF ========

[   18.546915] mmc1: card 0001 removed

[   18.546995] [mmc]: mmc not poweroff notifiy

[   18.547007] [mmc]: sdc1 set ios: clk 0Hz bm OD pm OFF vdd 3.3V width 1 timing LEGACY(SDR12) dt B

[   18.547160] [mmc]: sdc1 card_power_off start...

[   18.547166] [mmc]: sdc1 power_supply is null

[   18.547173] [mmc]: sdc1 card_power_off ok

[   18.631655] init: command 'insmod' r=-1

[   18.636066] init: command 'insmod' r=-1

[   18.658010] fs_mgr: swapon failed for /dev/block/zram0

[   18.663804] init: command 'swapon_all' r=-1

[   18.668504] init: processing action 0x58e70 (console_init)

[   18.675396] init: width = 1280

[   18.678788] init: height = 800

[   18.682224] init: s.st_size = 3145728

[   18.686308] init: logo match failed!fbsize = 4096000

[   18.718811] init: command 'console_init' r=0

[   18.723628] init: processing action 0x55bf0 (fs)

[   18.730640] init: command 'mkdir' r=-2

[   18.741901] init: command 'insmod' r=0

[   18.752227] init: command 'insmod' r=0

[   18.756491] init: command 'insmod' r=-1

[   18.771211] init: command 'insmod' r=0

[   18.779731] init: command 'insmod' r=0

[   18.791739] init: command 'insmod' r=0

[   18.803941] init: command 'insmod' r=0

[   18.816178] init: command 'insmod' r=0

19、查找:(dhdsdio_probe_attach: unsupported chip: 0xa9a6)

[email protected]:~$ cd wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd/

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ 

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ grep "unsupported chip" . -R

./dhd_sdio.c: DHD_ERROR(("%s: unsupported chip: 0x%04x\n",

./sbutils.c: SI_ERROR(("sb_chip2numcores: unsupported chip 0x%x\n",

比對到二進制檔案 ./dhd_sdio.o

比對到二進制檔案 ./bcmdhd.o

比對到二進制檔案 ./bcmdhd.ko

比對到二進制檔案 ./sbutils.o

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ 

經過确認:

R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd\dhd_sdio.c

static bool

dhdsdio_probe_attach(struct dhd_bus *bus, osl_t *osh, void *sdh, void *regsva,

                     uint16 devid)

{

……

bcmsdh_chipinfo(sdh, bus->sih->chip, bus->sih->chiprev);

if (!dhdsdio_chipmatch((uint16)bus->sih->chip)) {

DHD_ERROR(("%s: unsupported chip: 0x%04x\n",

          __FUNCTION__, bus->sih->chip));

goto fail;

}

……

}

繼續追蹤:

static bool

dhdsdio_chipmatch(uint16 chipid)

{

if (chipid == BCM4325_CHIP_ID)

return TRUE;

if (chipid == BCM4329_CHIP_ID)

return TRUE;

if (chipid == BCM4315_CHIP_ID)

return TRUE;

if (chipid == BCM4319_CHIP_ID)

return TRUE;

if (chipid == BCM4336_CHIP_ID)

return TRUE;

if (chipid == BCM4330_CHIP_ID)

return TRUE;

if (chipid == BCM43237_CHIP_ID)

return TRUE;

if (chipid == BCM43362_CHIP_ID)

return TRUE;

if (chipid == BCM4314_CHIP_ID)

return TRUE;

if (chipid == BCM43242_CHIP_ID)

return TRUE;

if (chipid == BCM43340_CHIP_ID)

return TRUE;

if (chipid == BCM43341_CHIP_ID)

return TRUE;

if (chipid == BCM43143_CHIP_ID)

return TRUE;

if (chipid == BCM43342_CHIP_ID)

return TRUE;

if (chipid == BCM4334_CHIP_ID)

return TRUE;

if (chipid == BCM43239_CHIP_ID)

return TRUE;

if (chipid == BCM4324_CHIP_ID)

return TRUE;

if (chipid == BCM4335_CHIP_ID)

return TRUE;

if (chipid == BCM4339_CHIP_ID)

return TRUE;

if (chipid == BCM43349_CHIP_ID)

return TRUE;

if (chipid == BCM4345_CHIP_ID)

return TRUE;

if (chipid == BCM4350_CHIP_ID)

return TRUE;

if (chipid == BCM4354_CHIP_ID)

return TRUE;

if (chipid == BCM4356_CHIP_ID)

return TRUE;

if (chipid == BCM4358_CHIP_ID)

return TRUE;

if (chipid == BCM4371_CHIP_ID)

return TRUE;

if (chipid == BCM43430_CHIP_ID)

return TRUE;

if (BCM4349_CHIP(chipid))

return TRUE;

return FALSE;

}

20、

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee$ ll

總用量 40

drwxr-xr-x  7 rootroot rootroot 4096  6月 26 12:02 ./

drwx------  6 rootroot rootroot 4096  6月 26 14:16 ../

drwxr-xr-x 10 rootroot rootroot 4096  9月  4  2014 brandy/

-rw-rw-r--  1 rootroot rootroot  116  6月 26 12:02 .buildconfig

drwxr-xr-x 15 rootroot rootroot 4096  9月  4  2014 buildroot/

-r-xr-xr-x  1 rootroot rootroot   55  9月  4  2014 build.sh*

drwxr-xr-x 28 rootroot rootroot 4096  6月 26 14:30 linux-3.4/

drwxrwxr-x  3 rootroot rootroot 4096  6月 26 12:02 out/

-r--r--r--  1 rootroot rootroot  232  9月  4  2014 README

drwxr-xr-x  7 rootroot rootroot 4096  6月  7 19:33 tools/

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee$ ./build.sh config

Welcome to mkscript setup progress

All available chips:

   0. sun8iw5p1

Choice: 0

All available platforms:

   0. android

   1. dragonboard

   2. linux

Choice: 0

All available kernel:

   0. linux-3.4

Choice: 0

All available boards:

   0. evb

   1. maple

   2. redwood

   3. y2

   4. y3

Choice: 4

rootro[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee$ ./build.sh 

INFO: ----------------------------------------

INFO: build lichee ...

INFO: chip: sun8iw5p1

INFO: platform: android

INFO: kernel: linux-3.4

INFO: board: y3

INFO: output: out/sun8iw5p1/android/y3

INFO: ----------------------------------------

INFO: build buildroot ...

external toolchain has been installed

INFO: build buildroot OK.

INFO: build kernel ...

INFO: prepare toolchain ...

Building kernel

  CHK     include/linux/version.h

  CHK     include/generated/utsrelease.h

make[1]: “include/generated/mach-types.h”是最新的。

  CALL    scripts/checksyscalls.sh

  CHK     include/generated/compile.h

  CC      arch/arm/mach-sunxi/pm/standby/common.o

  CC      arch/arm/mach-sunxi/pm/standby/standby_clock.o

  CC      arch/arm/mach-sunxi/pm/standby/standby_ir.o

  CC      arch/arm/mach-sunxi/pm/standby/standby_key.o

  CC      arch/arm/mach-sunxi/pm/standby/standby_power.o

  CC      arch/arm/mach-sunxi/pm/standby/standby_twi.o

  CC      arch/arm/mach-sunxi/pm/standby/standby_usb.o

  AS      arch/arm/mach-sunxi/pm/standby/standby_delay.o

  CC      arch/arm/mach-sunxi/pm/standby/./arisc/standby_arisc.o

  CC      arch/arm/mach-sunxi/pm/standby/./arisc/arisc_hwmsgbox.o

  CHK     kernel/config_data.h

  CC      arch/arm/mach-sunxi/pm/standby/./arisc/arisc_hwspinlock.o

  CC      arch/arm/mach-sunxi/pm/standby/./arisc/arisc_message_manager.o

  CC      arch/arm/mach-sunxi/pm/standby/./../pm_debug.o

  CC      arch/arm/mach-sunxi/pm/standby/./../mem_timing.o

  CC      arch/arm/mach-sunxi/pm/standby/./../mem_mmu_pc.o

  AS      arch/arm/mach-sunxi/pm/standby/./../mem_mmu_pc_asm.o

  CC      arch/arm/mach-sunxi/pm/standby/./../mem_serial.o

  CC      arch/arm/mach-sunxi/pm/standby/./../mem_printk.o

  AS      arch/arm/mach-sunxi/pm/standby/./../mem_divlib.o

  CC      arch/arm/mach-sunxi/pm/standby/./../mem_divlibc.o

  CC      arch/arm/mach-sunxi/pm/standby/./../mem_int.o

  CC      arch/arm/mach-sunxi/pm/standby/./../mem_tmr.o

  CC      arch/arm/mach-sunxi/pm/standby/./../mem_tmstmp.o

  CC      arch/arm/mach-sunxi/pm/standby/./../mem_clk.o

  CC      arch/arm/mach-sunxi/pm/standby/./../mem_hwspinlock.o

  CC      arch/arm/mach-sunxi/pm/standby/standby.o

rm -rf *.o arch/arm/mach-sunxi/pm/standby/..

#define BCM4342_CHIP_ID 4342

可以編譯通過了。

(檢視屬性:)

[email protected]:/ $ 

[email protected]:/ $ cd /system/vendor/modules/                                  

[email protected]:/system/vendor/modules $ ll bcm*

-rw-r--r-- root     root        26020 2017-06-26 12:46 bcm43438a0.hcd

-rw-r--r-- root     root       748856 2017-06-26 12:46 bcmdhd.ko

[email protected]:/system/vendor/modules $ 

Microsoft Windows [版本 6.1.7600]

版權所有 (c) 2009 Microsoft Corporation。保留所有權利。

C:\Users\Administrator>cd R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\n

et\wireless\bcmdhd

C:\Users\Administrator>r:

R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd>adb remount

* daemon not running. starting it now on port 5037 *

* daemon started successfully *

remount succeeded

R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd>

R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd>adb push bcmdhd.ko /system/vendor/modules/

1677 KB/s (748864 bytes in 0.436s)

R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd>

繼續檢視屬性:

[email protected]:/system/vendor/modules $ ll bcm*                                

-rw-r--r-- root     root        26020 2017-06-26 12:46 bcm43438a0.hcd

-rw-rw-rw- root     root       748864 2017-06-26 14:34 bcmdhd.ko

[email protected]:/system/vendor/modules $ 

[email protected]:/system/vendor/modules $ 

[email protected]:/system/vendor/modules $ chmod 644 bcmdhd.ko                    

Unable to chmod bcmdhd.ko: Operation not permitted

10|[email protected]:/system/vendor/modules $ 

(必須在su下才能夠修改屬性:)

[email protected]:/system/vendor/modules $ su

[email protected]:/system/vendor/modules # chmod 644 bcmdhd.ko                    

[email protected]:/system/vendor/modules # 

[email protected]:/system/vendor/modules # sync

[email protected]:/system/vendor/modules # reboot

22、

[    0.658241] [wifi]: select wifi: ap6210 !!

[    0.658587] [ap6xxx]: module power name axp22_dldo1

[    0.658601] [ap6xxx]: module power ext1 name axp22_dldo2

[    0.658613] [ap6xxx]: module power ext2 name axp22_aldo1

[    0.658721] [ap6xxx]: get ap6xxx wifi_power_switch failed

[    0.658731] [ap6xxx]: ap6xxx module power set by axp.

[    0.658930] [ap6xxx]: first time

[    0.659285] [ap6xxx]: regulator on.

[    0.661306] [wifi_pm]: wifi gpio init is OK !!

(重新開機之後,WIFI子產品要想辦法配置為ap6212,現階段借用的是AP6210!)

[    8.517657] gpio ap6xxx_wl_regon set val 1, act val 1

[    8.623325] [ap6xxx]: sdio wifi power state: on

[    8.628389] [mmc]: sdc1 set ios: clk 0Hz bm PP pm UP vdd 3.3V width 1 timing LEGACY(SDR12) dt B

[    8.628566] =========== WLAN placed in POWER ON ========

[    8.645459] [mmc]: sdc1 card_power_on start...

[    8.650397] [mmc]: sdc1 power_supply is null

[    8.655129] [mmc]: sdc1 card_power_on ok

[    8.680031] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B

[    8.690267] [mmc]: mclk 0xf1c2008c 0x8002000e

[    8.772360] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 52,  RTO !!

[    8.781316] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 52,  RTO !!

[    8.789448] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B

[    8.799684] [mmc]: mclk 0xf1c2008c 0x8002000e

[    8.861971] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B

[    8.872189] [mmc]: mclk 0xf1c2008c 0x8002000e

[    8.933887] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 8,  RTO !!

[    8.941921] *******************Try sdio*******************

[    8.948329] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B

[    8.958545] [mmc]: mclk 0xf1c2008c 0x8002000e

[    9.027690] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)

[    9.035325] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)

[    9.043192] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)

[    9.052046] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)

[    9.145358] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B

[    9.155486] [mmc]: mclk 0xf1c2008c 0x8002000e

[    9.215398] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B

[    9.225785] [mmc]: mclk 0xf1c2008c 0x8100000b

[    9.285721] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[    9.296049] [mmc]: mclk 0xf1c2008c 0x8140030b

[    9.357922] mmc1: new high speed SDIO card at address 0001

[    9.364523] bcmsdh_register: Linux Kernel SDIO/MMC Driver

[    9.364563] *******************sdio init ok*******************

[    9.377203] bcm_wlan_get_oob_irq enter.

[    9.381534] gpio [359] map to virq [7] ok

[    9.388816] F1 signature OK, socitype:0x1 chip:0xa9a6 rev:0x0 pkg:0x4

[    9.396740] DHD: dongle ram size is set to 524288(orig 524288) at 0x0

[    9.404660] dhdsdio_probe: Disable prop_txstatus

[    9.410903] wl_create_event_handler(): thread:wl_event_handler:5d started

[    9.410914] tsk Enter, tsk = 0xddca13d8

[    9.423788] p2p0: P2P Interface Registered

[    9.428464] dhd_attach(): thread:dhd_watchdog_thread:5e started

[    9.435144] dhd_attach(): thread:dhd_dpc:5f started

[    9.440653] dhd_attach(): thread:dhd_sysioc:60 started

[    9.447276] Broadcom Dongle Host Driver: register interface [wlan0] MAC: 00:90:4c:11:22:33

[    9.456558] 

[    9.456561] Dongle Host Driver, version 1.88.45.3 (r420671)

[    9.456565] Compiled in drivers/net/wireless/bcmdhd on Jun 26 2017 at 14:34:04

[    9.472427] gpio ap6xxx_wl_regon set val 0, act val 0

[    9.578054] [ap6xxx]: sdio wifi power state: off

[    9.583186] =========== WLAN placed in RESET ========

(WIFI啟動加載正常)

[email protected]:/ $ lsmod

gt82x 9849 0 - Live 0x00000000

sunxi_schw 12559 0 - Live 0x00000000 (O)

cdc_ether 5099 0 - Live 0x00000000

rtl8150 9023 0 - Live 0x00000000

mcs7830 6292 0 - Live 0x00000000

qf9700 7805 0 - Live 0x00000000

asix 17150 0 - Live 0x00000000

usbnet 17700 4 cdc_ether,mcs7830,qf9700,asix, Live 0x00000000

sunxi_keyboard 3021 0 - Live 0x00000000

sw_device 13604 0 - Live 0x00000000

vfe_v4l2 445364 0 - Live 0x00000000

gc2035 12696 0 - Live 0x00000000

gc0308 10702 0 - Live 0x00000000

vfe_subdev 4523 3 vfe_v4l2,gc2035,gc0308, Live 0x00000000

vfe_os 4099 2 vfe_v4l2,vfe_subdev, Live 0x00000000

cci 21594 2 gc2035,gc0308, Live 0x00000000

videobuf_dma_contig 5535 1 vfe_v4l2, Live 0x00000000

videobuf_core 16520 2 vfe_v4l2,videobuf_dma_contig, Live 0x00000000

bcmdhd 556965 0 - Live 0x00000000

leds_sunxi 1351 0 - Live 0x00000000

mali 209914 20 - Live 0x00000000 (O)

lcd 38180 0 - Live 0x00000000

disp 993096 8 mali,lcd, Live 0x00000000

nand 280622 0 - Live 0x00000000 (O)

[email protected]:/ $ 

(bcmdhd.ko這個驅動子產品加載正常:)

(BT沒有打開,但是不停地列印BT逾時出錯,不知道是何解?)

[email protected]:/ $ [  511.880344] [BT_LPM] bluesleep_tx_timer_expire: Tx timer expired

[  511.887326] [BT_LPM] bluesleep_tx_timer_expire: Tx has been idle

23、

由于此時WIFI出于記住上一次的狀态的狀态(打不開),是以需要重新刷鏡像IMG,然後替換:bcmdhd.ko

[email protected]:/ $ 

[email protected]:/ $ lsmod

gt82x 9849 0 - Live 0x00000000

sunxi_schw 12559 0 - Live 0x00000000 (O)

cdc_ether 5099 0 - Live 0x00000000

rtl8150 9023 0 - Live 0x00000000

mcs7830 6292 0 - Live 0x00000000

qf9700 7805 0 - Live 0x00000000

asix 17150 0 - Live 0x00000000

usbnet 17700 4 cdc_ether,mcs7830,qf9700,asix, Live 0x00000000

sunxi_keyboard 3021 0 - Live 0x00000000

sw_device 13604 0 - Live 0x00000000

vfe_v4l2 445364 0 - Live 0x00000000

gc2035 12696 0 - Live 0x00000000

gc0308 10702 0 - Live 0x00000000

vfe_subdev 4523 3 vfe_v4l2,gc2035,gc0308, Live 0x00000000

vfe_os 4099 2 vfe_v4l2,vfe_subdev, Live 0x00000000

cci 21594 2 gc2035,gc0308, Live 0x00000000

videobuf_dma_contig 5535 1 vfe_v4l2, Live 0x00000000

videobuf_core 16520 2 vfe_v4l2,videobuf_dma_contig, Live 0x00000000

bcmdhd 556965 0 - Live 0x00000000

leds_sunxi 1351 0 - Live 0x00000000

mali 209914 15 - Live 0x00000000 (O)

lcd 38180 0 - Live 0x00000000

disp 993096 8 mali,lcd, Live 0x00000000

nand 280622 0 - Live 0x00000000 (O)

[email protected]:/ $ 

[email protected]:/ $ 

[email protected]:/ $ [  110.012176] init: computing context for service '/system/bin/wpa_supplicant'

[  110.025400] init: starting 'p2p_supplicant'

[  110.039886] init: Created socket '/dev/socket/wpa_wlan0' with mode '660', user '1010', group '1010'

[  110.119751] dhd_conf_set_fw_name_by_chip: firmware_path=/system/vendor/modules/fw_bcm43438a0.bin

[  110.140144] 

[  110.140153] Dongle Host Driver, version 1.88.45.3 (r420671)

[  110.140158] Compiled in drivers/net/wireless/bcmdhd on Jun 26 2017 at 14:34:04

[  110.173523] wl_android_wifi_on in 1

[  110.177409] wl_android_wifi_on in 2: g_wifi_on=0

[  110.200103] gpio ap6xxx_wl_regon set val 1, act val 1

[  110.280025] [BT_LPM] bluesleep_tx_timer_expire: Tx timer expired

[  110.286694] [BT_LPM] bluesleep_tx_timer_expire: Tx has been idle

[  110.355684] [ap6xxx]: sdio wifi power state: on

[  110.360930] =========== WLAN going back to live  ========

[  110.366925] sdio_reset_comm():

[  110.370346] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[  110.380773] [mmc]: mclk 0xf1c2008c 0x8140030b

[  110.443029] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[  110.454758] [mmc]: mclk 0xf1c2008c 0x8140030b

[  110.516097] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[  110.530958] [mmc]: mclk 0xf1c2008c 0x80430309

[  110.592013] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[  110.603518] [mmc]: mclk 0xf1c2008c 0x80030009

[  110.681418] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)

[  110.690726] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)

[  110.700331] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)

[  110.712218] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)

[  110.894520] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[  110.904933] [mmc]: mclk 0xf1c2008c 0x80030009

[  110.964907] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[  110.975514] [mmc]: mclk 0xf1c2008c 0x8100000b

[  111.035618] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[  111.046398] [mmc]: mclk 0xf1c2008c 0x8140030b

[  111.108547] 

[  111.108566] 

[  111.108579] dhd_bus_devreset: == WLAN ON ==

[  111.116882] dhd_bus_devreset called when dongle is not in reset

[  111.123683] Will call dhd_bus_start instead

[  111.128637] dhd_conf_set_fw_name_by_chip: firmware_path=/system/vendor/modules/fw_bcm43438a0.bin

[  111.140963] dhd_conf_download_config: Ignore config file /system/vendor/modules/config.txt

[  111.151802] Final fw_path=/system/vendor/modules/fw_bcm43438a0.bin

[  111.158689] Final nv_path=/system/vendor/modules/nvram_ap6210.txt

[  111.165542] Final conf_path=/system/vendor/modules/config.txt

[  111.257577] dhdsdio_download_nvram: Open nvram file failed /system/vendor/modules/nvram_ap6210.txt

[  111.268309] _dhdsdio_download_firmware: dongle nvram file download failed

[  111.276022] dhd_bus_start: dhdsdio_probe_download failed. firmware = /system/vendor/modules/fw_bcm43438a0.bin nvram = /system/vendor/modules/nvram_ap6210.txt config = /system/vendor/modules/config.txt

[  111.295979] dhd_bus_devreset: dhd_bus_start fail with -1

[  111.304154] dhd_dev_reset: dhd_bus_devreset: -1

[  111.309190] dhd_prot_ioctl : bus is down. we have nothing to do

[  111.330328] dhd_bus_devreset:  WLAN OFF DONE

[  111.335225] gpio ap6xxx_wl_regon set val 0, act val 0

[  111.472499] [ap6xxx]: sdio wifi power state: off

[  111.477661] =========== WLAN placed in RESET ========

[  111.483304] wl_android_wifi_on: Failed

[  111.487473] wl_android_wifi_off in 1

[  111.491478] wl_android_wifi_off in 2: g_wifi_on=0

[  111.496711] wl_android_wifi_off out

[  111.509335] init: waitpid returned pid 1211, status = 0000ff00

[  111.516072] init: process 'p2p_supplicant', pid 1211 exited

[email protected]:/ $ 

[email protected]:/ $ 

24、定位問題:dhd_bus_devreset: dhd_bus_start fail with -1

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee$ 

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee$ 

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee$ cd linux-3.4/drivers/net/wireless/bcmdhd/

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ 

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ 

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ grep "dhd_bus_start fail with" . -R

./dhd_sdio.c: DHD_ERROR(("%s: dhd_bus_start fail with %d\n",

比對到二進制檔案 ./dhd_sdio.o

比對到二進制檔案 ./bcmdhd.o

比對到二進制檔案 ./bcmdhd.ko

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ 

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee$ 

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee$ 

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee$ cd linux-3.4/drivers/net/wireless/bcmdhd/

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ 

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ 

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ grep "dhd_bus_start fail with" . -R

./dhd_sdio.c: DHD_ERROR(("%s: dhd_bus_start fail with %d\n",

比對到二進制檔案 ./dhd_sdio.o

比對到二進制檔案 ./bcmdhd.o

比對到二進制檔案 ./bcmdhd.ko

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ 

int

dhd_bus_devreset(dhd_pub_t *dhdp, uint8 flag)

{

……

dhd_conf_set_fw_name_by_chip(dhdp, fw_path, firmware_path);

if ((bcmerror = dhd_bus_start(dhdp)) != 0)

DHD_ERROR(("%s: dhd_bus_start fail with %d\n",

__FUNCTION__, bcmerror));

}

}

return bcmerror;

}

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ 

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ grep dhd_bus_start . -R

./dhd_sdio.c: if ((ret = dhd_bus_start(bus->dhd)) != 0) {

./dhd_sdio.c: DHD_ERROR(("%s: dhd_bus_start failed\n", __FUNCTION__));

./dhd_sdio.c: DHD_ERROR(("Will call dhd_bus_start instead\n"));

./dhd_sdio.c: if ((bcmerror = dhd_bus_start(dhdp)) != 0)

./dhd_sdio.c: DHD_ERROR(("%s: dhd_bus_start fail with %d\n",

./dhd_sdio - 副本.c: if ((ret = dhd_bus_start(bus->dhd)) != 0) {

./dhd_sdio - 副本.c: DHD_ERROR(("%s: dhd_bus_start failed\n", __FUNCTION__));

./dhd_sdio - 副本.c: DHD_ERROR(("Will call dhd_bus_start instead\n"));

./dhd_sdio - 副本.c: if ((bcmerror = dhd_bus_start(dhdp)) != 0)

./dhd_sdio - 副本.c: DHD_ERROR(("%s: dhd_bus_start fail with %d\n",

./dhd_sdio - 副本 (2).c: if ((ret = dhd_bus_start(bus->dhd)) != 0) {

./dhd_sdio - 副本 (2).c: DHD_ERROR(("%s: dhd_bus_start failed\n", __FUNCTION__));

./dhd_sdio - 副本 (2).c: DHD_ERROR(("Will call dhd_bus_start instead\n"));

./dhd_sdio - 副本 (2).c: if ((bcmerror = dhd_bus_start(dhdp)) != 0)

./dhd_sdio - 副本 (2).c: DHD_ERROR(("%s: dhd_bus_start fail with %d\n",

./dhd.h:extern int  dhd_bus_start(dhd_pub_t *dhdp);

./wl_android.c:

./dhd_linux.c:dhd_bus_start(dhd_pub_t *dhdp)

[email protected]:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ 

定位到這裡:

int

dhd_bus_start(dhd_pub_t *dhdp)

{

……

if  ((dhd->pub.busstate == DHD_BUS_DOWN) &&

(fw_path[0] != '\0') && (nv_path[0] != '\0')) {

#ifdef SHOW_NVRAM_TYPE

{

int i;

for (i = 0; nv_path[i] != '\0'; ++i) {

if (nv_path[i] == '.') {

++i;

break;

}

}

DHD_ERROR(("%s: nvram_type = [%s]\n", __FUNCTION__, &nv_path[i]));

}

#endif

if (!(dhd_bus_download_firmware(dhd->pub.bus, dhd->pub.osh,

fw_path, nv_path, conf_path))) {

DHD_ERROR(("%s: dhdsdio_probe_download failed. firmware = %s nvram = %s config = %s\n",

__FUNCTION__, fw_path, nv_path, conf_path));

#ifdef DHDTHREAD

if (dhd->threads_only)

dhd_os_sdunlock(dhdp);

#endif

// 2017/6/23 18:40 wenyuanbo download ap6212 fail not return error!!!!

//return -1;

}

}

……

return 0;

}

由于ap6212沒有config.txt檔案,下載下傳肯定會出錯,比對全志R16平台去AP6212的處理,關閉這裡:

//return -1;

25、

[email protected]:/ $ 

[email protected]:/ $ [  110.012176] init: computing context for service '/system/bin/wpa_supplicant'

[  110.025400] init: starting 'p2p_supplicant'

[  110.039886] init: Created socket '/dev/socket/wpa_wlan0' with mode '660', user '1010', group '1010'

[  110.119751] dhd_conf_set_fw_name_by_chip: firmware_path=/system/vendor/modules/fw_bcm43438a0.bin

[  110.140144] 

[  110.140153] Dongle Host Driver, version 1.88.45.3 (r420671)

[  110.140158] Compiled in drivers/net/wireless/bcmdhd on Jun 26 2017 at 14:34:04

[  110.173523] wl_android_wifi_on in 1

[  110.177409] wl_android_wifi_on in 2: g_wifi_on=0

[  110.200103] gpio ap6xxx_wl_regon set val 1, act val 1

[  110.280025] [BT_LPM] bluesleep_tx_timer_expire: Tx timer expired

[  110.286694] [BT_LPM] bluesleep_tx_timer_expire: Tx has been idle

[  110.355684] [ap6xxx]: sdio wifi power state: on

[  110.360930] =========== WLAN going back to live  ========

[  110.366925] sdio_reset_comm():

[  110.370346] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[  110.380773] [mmc]: mclk 0xf1c2008c 0x8140030b

[  110.443029] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[  110.454758] [mmc]: mclk 0xf1c2008c 0x8140030b

[  110.516097] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[  110.530958] [mmc]: mclk 0xf1c2008c 0x80430309

[  110.592013] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[  110.603518] [mmc]: mclk 0xf1c2008c 0x80030009

[  110.681418] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)

[  110.690726] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)

[  110.700331] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)

[  110.712218] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)

[  110.894520] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[  110.904933] [mmc]: mclk 0xf1c2008c 0x80030009

[  110.964907] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[  110.975514] [mmc]: mclk 0xf1c2008c 0x8100000b

[  111.035618] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[  111.046398] [mmc]: mclk 0xf1c2008c 0x8140030b

[  111.108547] 

[  111.108566] 

[  111.108579] dhd_bus_devreset: == WLAN ON ==

[  111.116882] dhd_bus_devreset called when dongle is not in reset

[  111.123683] Will call dhd_bus_start instead

[  111.128637] dhd_conf_set_fw_name_by_chip: firmware_path=/system/vendor/modules/fw_bcm43438a0.bin

[  111.140963] dhd_conf_download_config: Ignore config file /system/vendor/modules/config.txt

[  111.151802] Final fw_path=/system/vendor/modules/fw_bcm43438a0.bin

[  111.158689] Final nv_path=/system/vendor/modules/nvram_ap6210.txt

[  111.165542] Final conf_path=/system/vendor/modules/config.txt

[  111.257577] dhdsdio_download_nvram: Open nvram file failed /system/vendor/modules/nvram_ap6210.txt

[  111.268309] _dhdsdio_download_firmware: dongle nvram file download failed

[  111.276022] dhd_bus_start: dhdsdio_probe_download failed. firmware = /system/vendor/modules/fw_bcm43438a0.bin nvram = /system/vendor/modules/nvram_ap6210.txt config = /system/vendor/modules/config.txt

[  111.295979] dhd_bus_devreset: dhd_bus_start fail with -1

[  111.304154] dhd_dev_reset: dhd_bus_devreset: -1

[  111.309190] dhd_prot_ioctl : bus is down. we have nothing to do

[  111.330328] dhd_bus_devreset:  WLAN OFF DONE

[  111.335225] gpio ap6xxx_wl_regon set val 0, act val 0

[  111.472499] [ap6xxx]: sdio wifi power state: off

[  111.477661] =========== WLAN placed in RESET ========

[  111.483304] wl_android_wifi_on: Failed

[  111.487473] wl_android_wifi_off in 1

[  111.491478] wl_android_wifi_off in 2: g_wifi_on=0

[  111.496711] wl_android_wifi_off out

[  111.509335] init: waitpid returned pid 1211, status = 0000ff00

[  111.516072] init: process 'p2p_supplicant', pid 1211 exited

[email protected]:/ $ 

定位問題:

dhdsdio_download_nvram: Open nvram file failed /system/vendor/modules/nvram_ap6210.txt

猜測:

應該是nvram_ap6210.txt沒有的問題。

R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd>adb remount

* daemon not running. starting it now on port 5037 *

* daemon started successfully *

remount succeeded

R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd>

[email protected]:/system/vendor/modules $ su

[email protected]:/system/vendor/modules # cp nvram_ap6212.txt nvram_ap6210.txt

[email protected]:/system/vendor/modules # ll *.txt

-rw------- root     root          956 1970-01-02 14:17 nvram_ap6210.txt

-rw-r--r-- root     root          956 2017-06-26 12:46 nvram_ap6212.txt

[email protected]:/system/vendor/modules # 

[email protected]:/system/vendor/modules # 

[email protected]:/system/vendor/modules # su

[email protected]:/system/vendor/modules # chmod 644 *.txt

[email protected]:/system/vendor/modules # 

[email protected]:/system/vendor/modules # ll *.txt

-rw-r--r-- root     root          956 1970-01-02 14:17 nvram_ap6210.txt

-rw-r--r-- root     root          956 2017-06-26 12:46 nvram_ap6212.txt

[email protected]:/system/vendor/modules # 

[email protected]:/system/vendor/modules # sync

[email protected]:/system/vendor/modules # 

26、

重新開機,出現了WIFI的圖示了。可以上yahoo了。

www.yahoo.com

分析log:

[   23.961121] dhd_conf_set_fw_name_by_chip: firmware_path=/system/vendor/modules/fw_bcm43438a0.bin

[   23.971093] 

[   23.971105] Dongle Host Driver, version 1.88.45.3 (r420671)

[   23.971110] Compiled in drivers/net/wireless/bcmdhd on Jun 26 2017 at 15:13:12

[   23.987060] wl_android_wifi_on in 1

[   23.991256] wl_android_wifi_on in 2: g_wifi_on=0

[   23.996530] gpio ap6xxx_wl_regon set val 1, act val 1

[   24.108502] [ap6xxx]: sdio wifi power state: on

[   24.114131] =========== WLAN going back to live  ========

[   24.120239] sdio_reset_comm():

[   24.123685] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[   24.134194] [mmc]: mclk 0xf1c2008c 0x8140030b

[   24.192530] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[   24.203052] [mmc]: mclk 0xf1c2008c 0x8140030b

[   24.261211] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[   24.275672] [mmc]: mclk 0xf1c2008c 0x80430309

[   24.334239] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[   24.344564] [mmc]: mclk 0xf1c2008c 0x80030009

[   24.414727] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)

[   24.423342] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)

[   24.431719] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)

[   24.441929] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)

[   24.586633] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[   24.596986] [mmc]: mclk 0xf1c2008c 0x80030009

[   24.657120] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[   24.669034] [mmc]: mclk 0xf1c2008c 0x8100000b

[   24.729146] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B

[   24.739668] [mmc]: mclk 0xf1c2008c 0x8140030b

[   24.800407] 

[   24.800419] 

[   24.800422] dhd_bus_devreset: == WLAN ON ==

[   24.808385] dhd_bus_devreset called when dongle is not in reset

[   24.815109] Will call dhd_bus_start instead

[   24.820188] dhd_conf_set_fw_name_by_chip: firmware_path=/system/vendor/modules/fw_bcm43438a0.bin

[   24.830412] dhd_conf_download_config: Ignore config file /system/vendor/modules/config.txt

[   24.839623] Final fw_path=/system/vendor/modules/fw_bcm43438a0.bin

[   24.846602] Final nv_path=/system/vendor/modules/nvram_ap6210.txt

[   24.853483] Final conf_path=/system/vendor/modules/config.txt

[   25.011351] NVRAM version: AP6212_NVRAM_V1.0_20140603

[   25.021334] dhdsdio_write_vars: Download, Upload and compare of NVRAM succeeded.

[   25.088139] dhd_bus_init: enable 0x06, ready 0x06 (waited 0us)

[   25.095604] bcmsdh_set_drvdata: Enter

[   25.099694] bcmsdh_register_oob_intr: Enter 

[   25.104564] bcmsdh_register_oob_intr: IRQ=7 Type=414 

[   25.110404] 

[   25.110410] bcmdhd wakeup 0

[   25.116123] dhd_conf_set_band: Set band 0

[   25.127250] Firmware up: op_mode=0x0005, Broadcom Dongle Host Driver mac=94:a1:a2:c6:49:d6

[   25.136538] dhd_conf_set_country: Set country ALL, revision 0

[   25.148297] dhd_conf_set_country: country code setting failed -2

[   25.157285] Country code: US (US/0)

[   25.162196] dhd_conf_set_roam: Set roam_off 1

[   25.183522] Firmware version = wl0: Jun 15 2015 09:40:03 version 7.10.323.47.cn2.x7 FWID 01-b2db05ee es4.c3.n3.a2

[   25.195074]   Driver: 1.88.45.3 (r420671)

[   25.195089]   Firmware: wl0: Jun 15 2015 09:40:03 version 7.10.323.47.cn2.x7 FWID 01-b2db05ee es4.c3.n3.a2 

[   25.211856] wl_android_wifi_on: Success

[   25.219177] wl_cfg80211_attach_post: p2p0 p2p_dev_addr=96:a1:a2:c6:49:d6

也就是燒錄鏡像IMG之後,需要一下兩個步驟:

[email protected]:/system/vendor/modules # cp nvram_ap6212.txt nvram_ap6210.txt

R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd>adb push bcmdhd.ko /system/vendor/modules/