diff --git a/fmapp2/src/com/caf/fmradio/FMRadio.java b/fmapp2/src/com/caf/fmradio/FMRadio.java
index 91d1503..97e6961 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadio.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadio.java
@@ -448,7 +448,7 @@
       if ((mERadioTextScroller == null) && (mERadioTextTV != null)) {
           mERadioTextScroller = new ScrollerText(mERadioTextTV);
       }
-      mBTsoc = SystemProperties.get("vendor.bluetooth.soc");
+      mBTsoc = SystemProperties.get("vendor.qcom.bluetooth.soc");
    }
 
    protected void setDisplayvalue(){
diff --git a/fmapp2/src/com/caf/fmradio/FMStats.java b/fmapp2/src/com/caf/fmradio/FMStats.java
index aa8299d..6f51263 100644
--- a/fmapp2/src/com/caf/fmradio/FMStats.java
+++ b/fmapp2/src/com/caf/fmradio/FMStats.java
@@ -2837,7 +2837,7 @@
         }
     }
     private void checkTransportLayer() {
-       String chip = SystemProperties.get("vendor.bluetooth.soc","default");
+       String chip = SystemProperties.get("vendor.qcom.bluetooth.soc","default");
        if (chip.equals("default"))
            mIsTransportSMD = true;
        else
@@ -2850,7 +2850,7 @@
     private boolean isCherokeeChip() {
         Log.d(LOGTAG, "isCherokeeChip");
 
-        String chip = SystemProperties.get("vendor.bluetooth.soc");
+        String chip = SystemProperties.get("vendor.qcom.bluetooth.soc");
         if (chip.equals("cherokee"))
             return true;
         else
@@ -2860,14 +2860,14 @@
     private boolean isRomeChip() {
         String chip = "";
 
-        chip = SystemProperties.get("vendor.bluetooth.soc");
+        chip = SystemProperties.get("vendor.qcom.bluetooth.soc");
         if(chip.equals("rome"))
            return true;
         return false;
     }
 
     private boolean isHastingsChip() {
-        String chip = SystemProperties.get("vendor.bluetooth.soc","default");
+        String chip = SystemProperties.get("vendor.qcom.bluetooth.soc","default");
 
         if(chip.equals("hastings"))
            return true;
diff --git a/jni/android_hardware_fm.cpp b/jni/android_hardware_fm.cpp
index 613b160..c7d4463 100644
--- a/jni/android_hardware_fm.cpp
+++ b/jni/android_hardware_fm.cpp
@@ -605,7 +605,7 @@
        return FM_JNI_FAILURE;
     }
 
-    property_get("vendor.bluetooth.soc", value, NULL);
+    property_get("vendor.qcom.bluetooth.soc", value, NULL);
 
     ALOGD("BT soc is %s\n", value);
 
@@ -643,7 +643,7 @@
 {
     char value[PROPERTY_VALUE_MAX] = {'\0'};
 
-    property_get("vendor.bluetooth.soc", value, NULL);
+    property_get("vendor.qcom.bluetooth.soc", value, NULL);
 
     ALOGD("BT soc is %s\n", value);
 
@@ -657,7 +657,7 @@
 
 static bool is_soc_cherokee() {
     char value[PROPERTY_VALUE_MAX] = {'\0'};
-    property_get("vendor.bluetooth.soc", value, NULL);
+    property_get("vendor.qcom.bluetooth.soc", value, NULL);
     ALOGD("BT soc is %s\n", value);
 
     if(strcmp(value, "cherokee") == 0)
diff --git a/qcom/fmradio/FmReceiver.java b/qcom/fmradio/FmReceiver.java
index 711eba4..4686d26 100644
--- a/qcom/fmradio/FmReceiver.java
+++ b/qcom/fmradio/FmReceiver.java
@@ -344,7 +344,7 @@
    private static final int SEARCH_SINR_INT = 1;
 
    public boolean isSmdTransportLayer() {
-       String chip = SystemProperties.get("vendor.bluetooth.soc","default");
+       String chip = SystemProperties.get("vendor.qcom.bluetooth.soc","default");
        if (chip.equals("default"))
            return true;
        else
@@ -352,7 +352,7 @@
    }
 
    public static boolean isRomeChip() {
-       String chip = SystemProperties.get("vendor.bluetooth.soc");
+       String chip = SystemProperties.get("vendor.qcom.bluetooth.soc");
        if (chip.equals("rome"))
            return true;
        else
@@ -360,7 +360,7 @@
    }
 
    public static boolean isCherokeeChip() {
-       String chip = SystemProperties.get("vendor.bluetooth.soc");
+       String chip = SystemProperties.get("vendor.qcom.bluetooth.soc");
        if (chip.equals("cherokee"))
            return true;
        else
