diff --git a/configs/manifest.xml b/configs/manifest.xml
index 57aef6b..b500d78 100644
--- a/configs/manifest.xml
+++ b/configs/manifest.xml
@@ -196,5 +196,23 @@
default
+
+ android.hardware.bluetooth
+ hwbinder
+ 1.0
+
+ IBluetoothHci
+ default
+
+
+
+ com.qualcomm.qti.bluetooth_audio
+ hwbinder
+ 1.0
+
+ IBluetoothAudio
+ default
+
+
diff --git a/device.mk b/device.mk
index ed54b9b..8b98f81 100644
--- a/device.mk
+++ b/device.mk
@@ -98,7 +98,8 @@ PRODUCT_COPY_FILES += \
# Bluetooth
PRODUCT_PACKAGES += \
libbt-vendor \
- android.hardware.bluetooth@1.0-impl
+ android.hardware.bluetooth@1.0-impl \
+ android.hardware.bluetooth@1.0-service
# Camera
PRODUCT_PACKAGES += \
diff --git a/rootdir/Android.mk b/rootdir/Android.mk
index f26e84e..ccfab97 100644
--- a/rootdir/Android.mk
+++ b/rootdir/Android.mk
@@ -34,14 +34,6 @@ LOCAL_SRC_FILES := etc/wlan_carrier_bin.sh
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
include $(BUILD_PREBUILT)
-include $(CLEAR_VARS)
-LOCAL_MODULE := init.qcom.bt.sh
-LOCAL_MODULE_TAGS := optional eng
-LOCAL_MODULE_CLASS := ETC
-LOCAL_SRC_FILES := etc/init.qcom.bt.sh
-LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)
-include $(BUILD_PREBUILT)
-
include $(CLEAR_VARS)
LOCAL_MODULE := init.qcom.fm.sh
LOCAL_MODULE_TAGS := optional eng
diff --git a/rootdir/etc/init.qcom.bt.sh b/rootdir/etc/init.qcom.bt.sh
deleted file mode 100644
index f17b2fb..0000000
--- a/rootdir/etc/init.qcom.bt.sh
+++ /dev/null
@@ -1,351 +0,0 @@
-#!/system/bin/sh
-# Copyright (c) 2009-2013, The Linux Foundation. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# * Neither the name of The Linux Foundation nor
-# the names of its contributors may be used to endorse or promote
-# products derived from this software without specific prior written
-# permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-#Read the arguments passed to the script
-config="$1"
-
-BLUETOOTH_SLEEP_PATH=/proc/bluetooth/sleep/proto
-LOG_TAG="qcom-bluetooth"
-LOG_NAME="${0}:"
-
-hciattach_pid=""
-
-loge ()
-{
- /system/bin/log -t $LOG_TAG -p e "$LOG_NAME $@"
-}
-
-logi ()
-{
- /system/bin/log -t $LOG_TAG -p i "$LOG_NAME $@"
-}
-
-failed ()
-{
- loge "$1: exit code $2"
- exit $2
-}
-
-program_bdaddr ()
-{
- /system/bin/btnvtool -O
- logi "Bluetooth Address programmed successfully"
-}
-
-#
-# enable bluetooth profiles dynamically
-#
-config_bt ()
-{
- baseband=`getprop ro.baseband`
- target=`getprop ro.board.platform`
- if [ -f /sys/devices/soc0/soc_id ]; then
- soc_hwid=`cat /sys/devices/soc0/soc_id`
- else
- soc_hwid=`cat /sys/devices/system/soc/soc0/id`
- fi
- btsoc=`getprop qcom.bluetooth.soc`
-
- case $baseband in
- "apq")
- setprop ro.qualcomm.bluetooth.opp true
- setprop ro.qualcomm.bluetooth.ftp true
- setprop ro.qualcomm.bluetooth.nap false
- setprop ro.bluetooth.sap false
- setprop ro.bluetooth.dun false
- # For MPQ as baseband is same for both
- case $soc_hwid in
- "130")
- setprop ro.qualcomm.bluetooth.hsp true
- setprop ro.qualcomm.bluetooth.hfp true
- setprop ro.qualcomm.bluetooth.pbap false
- setprop ro.qualcomm.bluetooth.map false
- ;;
- *)
- setprop ro.qualcomm.bluetooth.hsp false
- setprop ro.qualcomm.bluetooth.hfp false
- setprop ro.qualcomm.bluetooth.pbap true
- setprop ro.qualcomm.bluetooth.map true
- ;;
- esac
- ;;
- "mdm" | "svlte2a" | "svlte1" | "csfb")
- setprop ro.qualcomm.bluetooth.opp true
- setprop ro.qualcomm.bluetooth.hfp true
- setprop ro.qualcomm.bluetooth.hsp true
- setprop ro.qualcomm.bluetooth.pbap true
- setprop ro.qualcomm.bluetooth.ftp true
- setprop ro.qualcomm.bluetooth.map true
- setprop ro.qualcomm.bluetooth.nap true
- setprop ro.bluetooth.sap true
- case $target in
- "apq8084")
- setprop ro.bluetooth.dun true
- logi "Enabling BT-DUN for APQ8084"
- ;;
- *)
- setprop ro.bluetooth.dun false
- ;;
- esac
- ;;
- "msm")
- setprop ro.qualcomm.bluetooth.opp true
- setprop ro.qualcomm.bluetooth.hfp true
- setprop ro.qualcomm.bluetooth.hsp true
- setprop ro.qualcomm.bluetooth.pbap true
- setprop ro.qualcomm.bluetooth.ftp true
- setprop ro.qualcomm.bluetooth.nap true
- setprop ro.bluetooth.sap true
- setprop ro.bluetooth.dun true
- case $btsoc in
- "ath3k")
- setprop ro.qualcomm.bluetooth.map false
- ;;
- *)
- setprop ro.qualcomm.bluetooth.map true
- ;;
- esac
- ;;
- *)
- setprop ro.qualcomm.bluetooth.opp true
- setprop ro.qualcomm.bluetooth.hfp true
- setprop ro.qualcomm.bluetooth.hsp true
- setprop ro.qualcomm.bluetooth.pbap true
- setprop ro.qualcomm.bluetooth.ftp true
- setprop ro.qualcomm.bluetooth.map true
- setprop ro.qualcomm.bluetooth.nap true
- setprop ro.bluetooth.sap true
- setprop ro.bluetooth.dun true
- ;;
- esac
-
- #Enable Bluetooth Profiles specific to target Dynamically
- case $target in
- "msm8960")
- if [ "$btsoc" != "ath3k" ] && [ "$soc_hwid" != "130" ]
- then
- setprop ro.bluetooth.hfp.ver 1.6
- setprop ro.qualcomm.bt.hci_transport smd
- fi
- ;;
- "msm8974" | "msm8226" | "msm8610" | "msm8916" | "msm8909" | "msm8952" | "msm8937" | "msm8953" )
- if [ "$btsoc" != "ath3k" ]
- then
- setprop ro.bluetooth.hfp.ver 1.7
- setprop ro.qualcomm.bt.hci_transport smd
- fi
- ;;
- "apq8084" | "mpq8092" | "msm8994" | "msm8992" )
- if [ "$btsoc" != "rome" ]
- then
- setprop ro.qualcomm.bt.hci_transport smd
- elif [ "$btsoc" = "rome" ]
- then
- setprop ro.bluetooth.hfp.ver 1.6
- fi
- ;;
- "msm8996" )
- if [ "$btsoc" != "rome" ]
- then
- setprop ro.qualcomm.bt.hci_transport smd
- elif [ "$btsoc" = "rome" ]
- then
- setprop ro.bluetooth.hfp.ver 1.7
- fi
- ;;
- "msmcobalt")
- setprop ro.bluetooth.hfp.ver 1.6
- ;;
- *)
- ;;
- esac
-
-if [ -f /system/etc/bluetooth/stack.conf ]; then
-stack=`cat /system/etc/bluetooth/stack.conf`
-fi
-
-case "$stack" in
- "bluez")
- logi "Bluetooth stack is $stack"
- setprop ro.qc.bluetooth.stack $stack
- reason=`getprop vold.decrypt`
- case "$reason" in
- "trigger_restart_framework")
- start dbus
- ;;
- esac
- ;;
- *)
- logi "Bluetooth stack is Bluedroid"
- ;;
-esac
-
-}
-
-start_hciattach ()
-{
- /system/bin/hciattach -n $BTS_DEVICE $BTS_TYPE $BTS_BAUD &
- hciattach_pid=$!
- logi "start_hciattach: pid = $hciattach_pid"
- echo 1 > $BLUETOOTH_SLEEP_PATH
-}
-
-kill_hciattach ()
-{
- echo 0 > $BLUETOOTH_SLEEP_PATH
- logi "kill_hciattach: pid = $hciattach_pid"
- ## careful not to kill zero or null!
- kill -TERM $hciattach_pid
- # this shell doesn't exit now -- wait returns for normal exit
-}
-
-logi "init.qcom.bt.sh config = $config"
-case "$config" in
- "onboot")
- exit 0
- ;;
- *)
- ;;
-esac
-
-# mimic hciattach options parsing -- maybe a waste of effort
-USAGE="hciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] [speed] [flow|noflow] [bdaddr]"
-
-while getopts "blnpt:s:" f
-do
- case $f in
- b | l | n | p) opt_flags="$opt_flags -$f" ;;
- t) timeout=$OPTARG;;
- s) initial_speed=$OPTARG;;
- \?) echo $USAGE; exit 1;;
- esac
-done
-shift $(($OPTIND-1))
-
-# Note that "hci_qcomm_init -e" prints expressions to set the shell variables
-# BTS_DEVICE, BTS_TYPE, BTS_BAUD, and BTS_ADDRESS.
-
-#Selectively Disable sleep
-BOARD=`getprop ro.board.platform`
-STACK=`getprop ro.qc.bluetooth.stack`
-
-# BR/EDR & LE power class configurations
-POWER_CLASS=`getprop qcom.bt.dev_power_class`
-LE_POWER_CLASS=`getprop qcom.bt.le_dev_pwr_class`
-
-#find the transport type
-TRANSPORT=`getprop ro.qualcomm.bt.hci_transport`
-logi "Transport : $TRANSPORT"
-case $STACK in
- "bluez")
- logi "** Bluez stack **"
- ;;
- *)
- logi "** Bluedroid stack **"
- setprop bluetooth.status off
- ;;
-esac
-
-
-case $POWER_CLASS in
- 1) PWR_CLASS="-p 0" ;
- logi "Power Class: 1";;
- 2) PWR_CLASS="-p 1" ;
- logi "Power Class: 2";;
- 3) PWR_CLASS="-p 2" ;
- logi "Power Class: CUSTOM";;
- *) PWR_CLASS="";
- logi "Power Class: Ignored. Default(1) used (1-CLASS1/2-CLASS2/3-CUSTOM)";
- logi "Power Class: To override, Before turning BT ON; setprop qcom.bt.dev_power_class <1 or 2 or 3>";;
-esac
-
-case $LE_POWER_CLASS in
- 1) LE_PWR_CLASS="-P 0" ;
- logi "LE Power Class: 1";;
- 2) LE_PWR_CLASS="-P 1" ;
- logi "LE Power Class: 2";;
- 3) LE_PWR_CLASS="-P 2" ;
- logi "LE Power Class: CUSTOM";;
- *) LE_PWR_CLASS="-P 1";
- logi "LE Power Class: Ignored. Default(2) used (1-CLASS1/2-CLASS2/3-CUSTOM)";
- logi "LE Power Class: To override, Before turning BT ON; setprop qcom.bt.le_dev_pwr_class <1 or 2 or 3>";;
-esac
-
-eval $(/system/bin/hci_qcomm_init -e $PWR_CLASS $LE_PWR_CLASS && echo "exit_code_hci_qcomm_init=0" || echo "exit_code_hci_qcomm_init=1")
-
-case $exit_code_hci_qcomm_init in
- 0) logi "Bluetooth QSoC firmware download succeeded, $BTS_DEVICE $BTS_TYPE $BTS_BAUD $BTS_ADDRESS";;
- *) failed "Bluetooth QSoC firmware download failed" $exit_code_hci_qcomm_init;
- case $STACK in
- "bluez")
- logi "** Bluez stack **"
- ;;
- *)
- logi "** Bluedroid stack **"
- setprop bluetooth.status off
- ;;
- esac
-
- exit $exit_code_hci_qcomm_init;;
-esac
-
-# init does SIGTERM on ctl.stop for service
-trap "kill_hciattach" TERM INT
-
-case $TRANSPORT in
- "smd")
- case $STACK in
- "bluez")
- logi "** Bluez stack **"
- echo 1 > /sys/module/hci_smd/parameters/hcismd_set
- ;;
- *)
- logi "** Bluedroid stack **"
- setprop bluetooth.status on
- ;;
- esac
- ;;
- *)
- logi "start hciattach"
- start_hciattach
- case $STACK in
- "bluez")
- logi "Bluetooth is turning On with Bluez stack "
- ;;
- *)
- logi "** Bluedroid stack **"
- setprop bluetooth.status on
- ;;
- esac
-
- wait $hciattach_pid
- logi "Bluetooth stopped"
- ;;
-esac
-
-exit 0
diff --git a/rootdir/etc/init.qcom.rc b/rootdir/etc/init.qcom.rc
index d706299..f61130f 100644
--- a/rootdir/etc/init.qcom.rc
+++ b/rootdir/etc/init.qcom.rc
@@ -670,38 +670,6 @@ on property:sys.shutdown.requested=*
on property:ro.hw.ecompass=true
enable ecompassd
-service config_bt_addr /system/vendor/bin/btnvtool -O
- class core
- user bluetooth
- group bluetooth radio
- oneshot
-
-service config_bluetooth /system/bin/sh /system/vendor/etc/init.qcom.bt.sh "onboot"
- class core
- user bluetooth
- group bluetooth system
- oneshot
-
-service hciattach /system/bin/sh /system/vendor/etc/init.qcom.bt.sh
- class late_start
- user bluetooth
- group bluetooth net_bt_admin
- disabled
- oneshot
-
-on property:bluetooth.hciattach=true
- start hciattach
-
-on property:bluetooth.hciattach=false
- setprop bluetooth.status off
-
-service btsnoop /system/bin/btsnoop
- user bluetooth
- group bluetooth net_bt_admin sdcard_rw sdcard_r media_rw
- class late_start
- disabled
- oneshot
-
service netmgrd /system/vendor/bin/netmgrd
class main
group radio system wakelock
diff --git a/sepolicy/bluetooth_loader.te b/sepolicy/bluetooth_loader.te
deleted file mode 100644
index ff626cc..0000000
--- a/sepolicy/bluetooth_loader.te
+++ /dev/null
@@ -1,40 +0,0 @@
-# Bluetooth executables and scripts
-type bluetooth_loader, domain;
-type bluetooth_loader_exec, exec_type, file_type;
-
-# Start bdAddrLoader from init
-init_daemon_domain(bluetooth_loader)
-
-# Run init.qcom.bt.sh
-allow bluetooth_loader shell_exec:file { entrypoint getattr read };
-allow bluetooth_loader bluetooth_loader_exec:file { getattr open execute_no_trans };
-
-# init.qcom.bt.sh needs /system/bin/log access
-allow bluetooth_loader devpts:chr_file rw_file_perms;
-
-# Run hci_qcomm_init from init.qcom.bt.sh
-domain_auto_trans(bluetooth_loader, hci_attach_exec, hci_attach)
-allow hci_attach bluetooth_loader:fd use;
-
-# Set persist.service.bdroid.* and bluetooth.* property values
-set_prop(bluetooth_loader, bluetooth_prop)
-
-# Allow getprop/setprop for init.qcom.bt.sh
-allow bluetooth_loader system_file:file execute_no_trans;
-allow bluetooth_loader toolbox_exec:file rx_file_perms;
-
-# Allow hci_qcomm_init /persist/.bt_nv.bin access
-r_dir_file(bluetooth_loader, persist_file);
-allow bluetooth_loader bluetooth_data_file:file r_file_perms;
-
-# Access the smd device
-allow bluetooth_loader hci_attach_dev:chr_file rw_file_perms;
-
-# And qmuxd
-allow bluetooth_loader qmuxd_socket:dir { write add_name remove_name search };
-allow bluetooth_loader qmuxd_socket:sock_file { create setattr getattr write unlink };
-allow bluetooth_loader qmuxd:unix_stream_socket { connectto };
-
-userdebug_or_eng(`
- diag_use(bluetooth_loader)
-')
diff --git a/sepolicy/config_bluetooth.te b/sepolicy/config_bluetooth.te
deleted file mode 100644
index e1cde29..0000000
--- a/sepolicy/config_bluetooth.te
+++ /dev/null
@@ -1,3 +0,0 @@
-type config_bluetooth, domain;
-type config_bluetooth_exec, exec_type, file_type;
-init_daemon_domain(config_bluetooth)
diff --git a/sepolicy/hci_attach.te b/sepolicy/hci_attach.te
deleted file mode 100644
index 6ac5cf8..0000000
--- a/sepolicy/hci_attach.te
+++ /dev/null
@@ -1,9 +0,0 @@
-type hci_attach, domain;
-type hci_attach_exec, exec_type, file_type;
-
-init_daemon_domain(hci_attach)
-
-allow hci_attach kernel:system module_request;
-allow hci_attach hci_attach_dev:chr_file rw_file_perms;
-allow hci_attach bluetooth_efs_file:dir r_dir_perms;
-allow hci_attach bluetooth_efs_file:file r_file_perms;
\ No newline at end of file