diff --git a/rootdir/Android.mk b/rootdir/Android.mk
index 9e7b259..de7d5a4 100644
--- a/rootdir/Android.mk
+++ b/rootdir/Android.mk
@@ -141,7 +141,7 @@
 LOCAL_MODULE_TAGS  := optional eng
 LOCAL_MODULE_CLASS := ETC
 LOCAL_SRC_FILES    := etc/$(LOCAL_MODULE)
-LOCAL_MODULE_PATH  := $(TARGET_ROOT_OUT)
+LOCAL_MODULE_PATH  := $(TARGET_ROOT_OUT)/etc
 include $(BUILD_PREBUILT)
 
 ######################
@@ -211,7 +211,17 @@
 LOCAL_MODULE_TAGS  := optional eng
 LOCAL_MODULE_CLASS := ETC
 LOCAL_SRC_FILES    := ../recovery/$(LOCAL_MODULE)
-LOCAL_MODULE_PATH  := $(TARGET_RECOVERY_ROOT_OUT)/etc
+LOCAL_MODULE_PATH  := $(TARGET_ROOT_OUT)/etc
+include $(BUILD_PREBUILT)
+
+######################
+### init.qcom.bt.sh
+include $(CLEAR_VARS)
+LOCAL_MODULE       := init.qcom.bt.sh
+LOCAL_MODULE_TAGS  := optional eng
+LOCAL_MODULE_CLASS := ETC
+LOCAL_SRC_FILES    := etc/$(LOCAL_MODULE)
+LOCAL_MODULE_PATH  := $(TARGET_ROOT_OUT)/etc
 include $(BUILD_PREBUILT)
 
 ######################
diff --git a/rootdir/etc/init.qcom.bt.sh b/rootdir/etc/init.qcom.bt.sh
new file mode 100644
index 0000000..1a9f031
--- /dev/null
+++ b/rootdir/etc/init.qcom.bt.sh
@@ -0,0 +1,357 @@
+#!/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" )
+       if [ "$btsoc" != "ath3k" ]
+       then
+           setprop ro.bluetooth.hfp.ver 1.6
+           setprop ro.qualcomm.bt.hci_transport smd
+       fi
+       ;;
+    "apq8084" | "mpq8092" | "msm8994" )
+       if [ "$btsoc" != "rome" ]
+       then
+           setprop ro.qualcomm.bt.hci_transport smd
+       elif [ "$btsoc" = "rome" ]
+       then
+           setprop ro.bluetooth.hfp.ver 1.6
+       fi
+       ;;
+    *)
+       ;;
+  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")
+        program_bdaddr
+        config_bt
+        exit 0
+        ;;
+    *)
+        ;;
+esac
+
+# mimic hciattach options parsing -- maybe a waste of effort
+USAGE="hciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] <tty> <type | id> [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`
+
+# BR/EDR RF power backoff
+POWER_BACKOFF=`getprop qcom.bt.dev_power_backoff`
+
+#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
+
+case $POWER_BACKOFF in
+   0) POWER_BACKOFF="-k 0" ;
+      logi "Power Backoff: 0";;
+   1) POWER_BACKOFF="-k 1" ;
+      logi "Power Backoff: 1";;
+   2) POWER_BACKOFF="-k 2" ;
+      logi "Power Backoff: 2";;
+   3) POWER_BACKOFF="-k 3" ;
+      logi "Power Backoff: 3";;
+   *) POWER_BACKOFF="";
+      logi "Power Backoff: Ignored. Configuration in source code will be used";
+esac
+
+eval $(/system/bin/hci_qcomm_init -e $PWR_CLASS $LE_PWR_CLASS $POWER_BACKOFF && 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
