diff options
-rwxr-xr-x | msm8996.mk | 1 | ||||
-rw-r--r-- | rootdir/Android.mk | 8 | ||||
-rw-r--r-- | rootdir/bin/init.bt.sh | 25 | ||||
-rw-r--r-- | rootdir/etc/init.qcom.rc | 13 | ||||
-rw-r--r-- | sepolicy/file_contexts | 1 | ||||
-rw-r--r-- | sepolicy/hal_bluetooth_qti.te | 2 | ||||
-rw-r--r-- | sepolicy/property.te | 1 | ||||
-rw-r--r-- | sepolicy/property_contexts | 3 | ||||
-rw-r--r-- | sepolicy/qti_init_shell.te | 5 | ||||
-rw-r--r-- | sepolicy/system_app.te | 1 |
10 files changed, 60 insertions, 0 deletions
@@ -144,6 +144,7 @@ PRODUCT_PACKAGES += \ # Common init scripts PRODUCT_PACKAGES += \ fstab.qcom \ + init.bt.sh \ init.msm.usb.configfs.rc \ init.qcom.rc \ init.qcom.sh \ diff --git a/rootdir/Android.mk b/rootdir/Android.mk index c7b6f0a..22f2f4b 100644 --- a/rootdir/Android.mk +++ b/rootdir/Android.mk @@ -18,6 +18,14 @@ LOCAL_SRC_FILES := bin/init.wlan.sh LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) include $(BUILD_PREBUILT) +include $(CLEAR_VARS) +LOCAL_MODULE := init.bt.sh +LOCAL_MODULE_TAGS := optional eng +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.bt.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + # Common init scripts include $(CLEAR_VARS) diff --git a/rootdir/bin/init.bt.sh b/rootdir/bin/init.bt.sh new file mode 100644 index 0000000..63ea643 --- /dev/null +++ b/rootdir/bin/init.bt.sh @@ -0,0 +1,25 @@ +#! /vendor/bin/sh + +# +# Copyright (C) 2019 The LineageOS 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. +# + +# Set the proper hardware based BT mac address +bt_mac_path="/data/vendor/bluetooth/bdaddr" +bt_mac=$(getprop sys.bt.address); +if [[ ! -f $bt_mac_path ]] || [[ $(echo $bt_mac) != $(cat /data/vendor/bluetooth/bdaddr) ]]; then + echo $bt_mac > $bt_mac_path +fi; +setprop ro.vendor.bt.bdaddr_path $bt_mac_path diff --git a/rootdir/etc/init.qcom.rc b/rootdir/etc/init.qcom.rc index 66b14d4..b197f87 100644 --- a/rootdir/etc/init.qcom.rc +++ b/rootdir/etc/init.qcom.rc @@ -587,9 +587,22 @@ service wlan-sh /vendor/bin/init.wlan.sh disabled oneshot +service bt-sh /vendor/bin/init.bt.sh + class late_start + user bluetooth + group bluetooth + disabled + oneshot + on property:sys.boot_completed=1 start wcg_mac_tool start wlan-sh + start bt-sh + +on property:ro.vendor.bt.bdaddr_path=/data/vendor/bluetooth/bdaddr + # Correct perms for bdaddr + chmod 0644 /data/vendor/bluetooth/bdaddr + chown bluetooth bluetooth /data/vendor/bluetooth/bdaddr on property:init.svc.vendor.hwcomposer-2-1=stopped stop vendor.ppd diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts index d0d9c61..d8e2011 100644 --- a/sepolicy/file_contexts +++ b/sepolicy/file_contexts @@ -1,4 +1,5 @@ # Binaries +/(vendor|system/vendor)/bin/init.bt.sh u:object_r:qti_init_shell_exec:s0 /(vendor|system/vendor)/bin/init.wlan.sh u:object_r:qti_init_shell_exec:s0 /(vendor|system/vendor)/bin/wcg_mac_tool u:object_r:wcg_mac_exec:s0 diff --git a/sepolicy/hal_bluetooth_qti.te b/sepolicy/hal_bluetooth_qti.te index 429585f..ebed0fb 100644 --- a/sepolicy/hal_bluetooth_qti.te +++ b/sepolicy/hal_bluetooth_qti.te @@ -1 +1,3 @@ allow hal_bluetooth_qti sysfs_bluetooth_writable:file rw_file_perms; + +get_prop(hal_bluetooth_qti, bt_mac_prop) diff --git a/sepolicy/property.te b/sepolicy/property.te index 87aea86..e77394a 100644 --- a/sepolicy/property.te +++ b/sepolicy/property.te @@ -1,2 +1,3 @@ type wcg_prop, property_type; type oem_unlock_prop, property_type; +type bt_mac_prop, property_type; diff --git a/sepolicy/property_contexts b/sepolicy/property_contexts index 4691248..ed4d762 100644 --- a/sepolicy/property_contexts +++ b/sepolicy/property_contexts @@ -1,3 +1,6 @@ +# Bluetooth +ro.vendor.bt.bdaddr_path u:object_r:bt_mac_prop:s0 + # Camera persist.camera. u:object_r:camera_prop:s0 diff --git a/sepolicy/qti_init_shell.te b/sepolicy/qti_init_shell.te index c5b8387..1331cc4 100644 --- a/sepolicy/qti_init_shell.te +++ b/sepolicy/qti_init_shell.te @@ -5,8 +5,13 @@ allow qti_init_shell file_contexts_file:file { getattr open read }; allow qti_init_shell mnt_vendor_file:dir rw_dir_perms; allow qti_init_shell mnt_vendor_file:file create_file_perms; +# Allow qti_init_shell to write and read /data/vendor/bluetooth/bdaddr +allow qti_init_shell vendor_bt_data_file:dir { add_name create search write }; +allow qti_init_shell vendor_bt_data_file:file { create getattr open read write }; + # Allow qti_init_shell to read cmdline allow qti_init_shell proc_cmdline:file { getattr open read }; get_prop(qti_init_shell, wcg_prop) set_prop(qti_init_shell, oem_unlock_prop) +set_prop(qti_init_shell, bt_mac_prop) diff --git a/sepolicy/system_app.te b/sepolicy/system_app.te index 1158907..0fbc30e 100644 --- a/sepolicy/system_app.te +++ b/sepolicy/system_app.te @@ -4,3 +4,4 @@ allow system_app shell_prop:property_service set; binder_call(system_app, wificond); get_prop(system_app, oem_unlock_prop); +get_prop(system_app, bt_mac_prop); |