全志A33 android6.0 rtl8723蓝牙部分移植

s

 1.准备20150528_RTL8723BU_BT_android5.0_V3.0_P11_FW_svn14422-BTCOEX20150119-5844.zip文件

2.将上面提供的蓝牙驱动文件rtk_btusb.h和rtk_btusb.c拷贝到kernel的drivers/bluetooth/

drivers/bluetooth/rtk_btusb.c
drivers/bluetooth/rtk_btusb.h

3.修改linux-3.4/drivers/bluetooth/Kconfig

config BT_RTKBTUSB
tristate "RTK HCI USB driver"
depends on USB
help
RTK Bluetooth HCI USB driver

3.修改linux-3.4/drivers/bluetooth/Makefile

obj-$(CONFIG_BT_RTKBTUSB) += rtk_btusb.o

4.修改linux-3.4/.config

//usb蓝牙
CONFIG_BT_RTKBTUSB=m
//hid支持
CONFIG_UHID=y
CONFIG_HID_A4TECH=y
CONFIG_HID_ACRUX=y
CONFIG_HID_ACRUX_FF=y
CONFIG_HID_APPLE=y
CONFIG_HID_BELKIN=y
//PAN支持
CONFIG_TUN=y
// AVRCP支持
CONFIG_INPUT_UINPUT=y # User level driver support
CONFIG_INPUT_MISC=y

5.编译kernel,生成

./build.sh
out/sun8iw5p1/android/common/lib/modules/3.4.39/rtk_btusb.ko

6.修改Android device 层 init.rc 插入蓝牙驱动

1.device/softwinner/astar-d7/init.sun8i.rc
on early-fs
.....
insmod /system/vendor/modules/rtk_btusb.ko

7.编译固件后,看蓝牙驱动是否加载成功

root:/ # ls dev/rtk_btusb                                                
dev/rtk_btusb

8.接下来让蓝牙能再hard层显示,修改BoardConfig.mk,添加对Realtek支持

vi device/softwinner/astar-d7/BoardConfig.mk
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


    BOARD_USR_WIFI := rtl8723bu

    #BOARD_USR_WIFI := rtl8189es

    include hardware/realtek/wlan/config/config.mk
..........
..........
BOARD_HAVE_BLUETOOTH := true
BOARD_HAVE_BLUETOOTH_BCM := true
BOARD_HAVE_BLUETOOTH_NAME := rtl8723bu
BOARD_HAVE_BLUETOOTH_RTK_COEX := true
BOARD_HAVE_BLUETOOTH_RTK := true
BLUETOOTH_HCI_USE_RTK_H5 := true
BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/softwinner/astar-d7/bluetooth
TARGET_USE_BOOSTUP_OPZ := true

 9.修改init.sun8i.rc

device/softwinner/astar-d7/init.sun8i.rc
on boot
.......
# bluetooth
 # change back to bluetooth from system
chown bluetooth net_bt_stack /data/misc/Bluetooth
mkdir /data/misc/bluedroid 0770 bluetooth net_bt_stack
chmod 0660 /dev/rtk_btusb
chown bluetooth net_bt_stack /dev/rtk_btusb
 # bluetooth MAC address programming
 chown bluetooth net_bt_stack ro.bt.bdaddr_path
 chown bluetooth net_bt_stack /system/etc/bluetooth
 chown bluetooth net_bt_stack /data/misc/bluetooth
 setprop ro.bt.bdaddr_path "/data/misc/bluetooth/bdaddr"

10. 修改astar_d7.mk,选择支持蓝牙固件,这里固件一般android自带的源码有,我资源里面也有

vi device/softwinner/astar-d7/astar_d7.mk
........

$(call inherit-product, hardware/realtek/bt/firmware/rtl8723a/device-rtl.mk)
$(call inherit-product, hardware/realtek/bt/firmware/rtl8723b/device-rtl.mk)
$(call inherit-product, hardware/realtek/bt/firmware/rtl8821a/device-rtl.mk)
$(call inherit-product, hardware/realtek/bt/firmware/rtl8761a/device-rtl.mk)

#If the customer want support LE, make sure the configure below.
#Realtek add start
PRODUCT_COPY_FILES += \ 
frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \ 
frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml \
#realtek add en
....................

11.修改ueventd.sun8i.rc 增加热插拔usb节点权限

vi device/softwinner/astar-d7/ueventd.sun8i.rc
.....
/dev/rtk_btusb              0660    bluetooth   net_bt_stack

12.修改 file_contexts

vi device/softwinner/astar-common/sepolicy/file_contexts
.....
# Bluetooth
/dev/rtk_btusb              u:object_r:hci_attach_dev:s0

13.修改bt_vendor.conf

vi device/softwinner/astar-d7/bluetooth/bt_vendor.conf
# UART device port where Bluetooth controller is attached
UartPort = /dev/rtk_btusb

# Firmware patch file location
FwPatchFilePath = /system/vendor/modules/

# Firmware Name
FwPatchFileName = bcm20710a1.hcd

 14.修改rtkbt.conf

vi device/softwinner/astar-d7/bluetooth/rtkbt.conf
#For usb /dev/rtk_btusb
BtDeviceNode=/dev/rtk_btusb

此后编译完成后,加载蓝牙发现 hard层没有libbt-vendor_usb.so,打开蓝牙失败!

接下来hard层支持usb蓝牙库

15.将 hardware/realtek/bluetooth/libbt-vendor/下新建文件夹 uart,拷贝libbt-vendor所有文件到uart;

新建文件夹 usb,拷贝libbt-vendor/include下bt_vendor_rtk.h  upio.h  vnd_buildcfg.h 到usb/include;拷贝libbt-vendor/src/bt_vendor_rtk.c  upio.c 到 usb/src

cd hardware/realtek/bluetooth/libbt-vendor/
Android.mk  uart/  usb/
libbt-vendor$ ls uart/
Android.mk  include/  src/
libbt-vendor$ ls uart/include/
bt_vendor_rtk.h  upio.h  userial_vendor.h  vnd_buildcfg.h
libbt-vendor$ ls uart/src/
bt_vendor_rtk.c  hardware.c  upio.c  userial_vendor.c
libbt-vendor$ ls usb/
Android.mk  include/  src/
libbt-vendor$ ls usb/include/
bt_vendor_rtk.h  upio.h  vnd_buildcfg.h
libbt-vendor$ ls usb/src/
bt_vendor_rtk.c  upio.c

16.修改usb/include/vnd_buildcfg.h 下BLUETOOTH_UART_DEVICE_PORT

#ifndef _VND_BUILDCFG_H
#define _VND_BUILDCFG_H
#define BLUETOOTH_UART_DEVICE_PORT   "/dev/rtk_btusb"
#define BTVND_DBG   TRUE
#define LPM_SLEEP_MODE   FALSE
#endif

17.修改usb/Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

BDROID_DIR := $(TOP_DIR)system/bt

LOCAL_SRC_FILES := \
        src/bt_vendor_rtk.c \
        src/upio.c

LOCAL_C_INCLUDES += \
        $(LOCAL_PATH)/include \
        $(BDROID_DIR)/hci/include

LOCAL_SHARED_LIBRARIES := \
        libcutils

LOCAL_MODULE := libbt-vendor_usb
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := SHARED_LIBRARIES

include $(BUILD_SHARED_LIBRARY)

18.hardware/realtek/bluetooth/libbt-vendor/新增加Android.mk

LOCAL_PATH := $(call my-dir)

include $(call all-subdir-makefiles)

19.最后编译通过

android6.0-a33/android# mmm hardware/realtek/bluetooth/libbt-vendor/
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=6.0.1
TARGET_PRODUCT=astar_d7
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=cortex-a7
TARGET_2ND_ARCH=
TARGET_2ND_ARCH_VARIANT=
TARGET_2ND_CPU_VARIANT=
HOST_ARCH=x86_64
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.2.0-27-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_BUILD_TYPE=release
BUILD_ID=MOB30R
OUT_DIR=out
============================================
No private recovery resources for TARGET_DEVICE astar-d7
make: Entering directory `/home/yufea/mnt/A33/blue_wifi_android6/android6.0-a33/android'
target SharedLib: libbt-vendor_usb (out/target/product/astar-d7/obj/SHARED_LIBRARIES/libbt-vendor_usb_intermediates/LINKED/libbt-vendor_usb.so)
target Pack Relocations: libbt-vendor_usb (out/target/product/astar-d7/obj/SHARED_LIBRARIES/libbt-vendor_usb_intermediates/PACKED/libbt-vendor_usb.so)
INFO: Compaction                 : 0 bytes
INFO: Too few relocations to pack after alignment
target Symbolic: libbt-vendor_usb (out/target/product/astar-d7/symbols/system/lib/libbt-vendor_usb.so)
target Strip: libbt-vendor_usb (out/target/product/astar-d7/obj/lib/libbt-vendor_usb.so)

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值