diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index f775571..5e82784 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -243,7 +243,6 @@
    private static Object mNotchFilterLock = new Object();
    private static Object mNotificationLock = new Object();
 
-   private boolean mFmA2dpDisabled;
    private boolean mEventReceived = false;
    private boolean isfmOffFromApplication = false;
 
@@ -254,7 +253,6 @@
    public void onCreate() {
       super.onCreate();
 
-      mFmA2dpDisabled = SystemProperties.getBoolean("vendor.fm.a2dp.conc.disabled",false);
       mPref = getApplicationContext().getSharedPreferences("SlimbusPref", MODE_PRIVATE);
       mEditor = mPref.edit();
       mPrefs = new FmSharedPreferences(this);
@@ -298,8 +296,7 @@
       mA2dpDeviceSupportInHal = valueStr.contains("=true");
       Log.d(LOGTAG, " is A2DP device Supported In HAL"+mA2dpDeviceSupportInHal);
 
-      if (!mFmA2dpDisabled)
-          getA2dpStatusAtStart();
+      getA2dpStatusAtStart();
    }
 
    @Override
@@ -793,9 +790,7 @@
             AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
             IntentFilter iFilter = new IntentFilter();
             iFilter.addAction(Intent.ACTION_HEADSET_PLUG);
-            if (!mFmA2dpDisabled) {
-                iFilter.addAction(mA2dpDeviceState.getActionSinkStateChangedString());
-            }
+            iFilter.addAction(mA2dpDeviceState.getActionSinkStateChangedString());
             iFilter.addAction("HDMI_CONNECTED");
             iFilter.addAction(Intent.ACTION_SHUTDOWN);
             iFilter.addCategory(Intent.CATEGORY_DEFAULT);
diff --git a/fmapp2/src/com/caf/fmradio/FMStats.java b/fmapp2/src/com/caf/fmradio/FMStats.java
index 0441682..cee1b85 100644
--- a/fmapp2/src/com/caf/fmradio/FMStats.java
+++ b/fmapp2/src/com/caf/fmradio/FMStats.java
@@ -2883,11 +2883,11 @@
         }
     }
     private void checkTransportLayer() {
-        String transportLayer = "";
-
-        transportLayer = SystemProperties.get("ro.qualcomm.bt.hci_transport");
-        if(transportLayer.equals("smd"))
+       String chip = SystemProperties.get("vendor.bluetooth.soc","default");
+       if (chip.equals("default"))
            mIsTransportSMD = true;
+       else
+           mIsTransportSMD = false;
     }
     private boolean isTransportLayerSMD() {
         return mIsTransportSMD;
diff --git a/qcom/fmradio/FmReceiver.java b/qcom/fmradio/FmReceiver.java
index 9738540..b1a2521 100644
--- a/qcom/fmradio/FmReceiver.java
+++ b/qcom/fmradio/FmReceiver.java
@@ -344,8 +344,8 @@
    private static final int SEARCH_SINR_INT = 1;
 
    public boolean isSmdTransportLayer() {
-       String transportLayer = SystemProperties.get("ro.qualcomm.bt.hci_transport");
-       if (transportLayer.equals("smd"))
+       String chip = SystemProperties.get("vendor.bluetooth.soc","default");
+       if (chip.equals("default"))
            return true;
        else
            return false;
