diff --git a/bthost_ipc/bthost_ipc.c b/bthost_ipc/bthost_ipc.c
index 72b3152..ee28ba2 100644
--- a/bthost_ipc/bthost_ipc.c
+++ b/bthost_ipc/bthost_ipc.c
@@ -894,7 +894,7 @@
         pthread_mutex_unlock(&audio_stream.lock);
         return -1;
     }
-    if (property_get("persist.vendor.bt.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
+    if (property_get("persist.vendor.bluetooth.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
             !strcmp(a2dp_hal_imp, "true"))
     {
       if (audio_stream.state == AUDIO_A2DP_STATE_STARTED)
@@ -930,7 +930,7 @@
                 {
                     ALOGW("waiting in pending");
                     ack_recvd = 0;
-                    if (property_get("persist.vendor.bt.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
+                    if (property_get("persist.vendor.bluetooth.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
                             !strcmp(a2dp_hal_imp, "true"))
                     {
                         wait_for_stack_response(1);
@@ -968,7 +968,7 @@
                     audio_stream.state = AUDIO_A2DP_STATE_STOPPED;
                     goto end;
                 }
-                else if (property_get("persist.vendor.bt.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
+                else if (property_get("persist.vendor.bluetooth.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
                         !strcmp(a2dp_hal_imp, "true") &&
                         status == A2DP_CTRL_ACK_PREVIOUS_COMMAND_PENDING)
                 {
@@ -1107,7 +1107,7 @@
             if (status == A2DP_CTRL_ACK_PENDING)
             {
                 ack_recvd = 0;
-                if (property_get("persist.vendor.bt.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
+                if (property_get("persist.vendor.bluetooth.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
                         !strcmp(a2dp_hal_imp, "true"))
                 {
                     wait_for_stack_response(1);
@@ -1127,7 +1127,7 @@
                 pthread_mutex_unlock(&audio_stream.lock);
                 return 0;
             }
-            else if (property_get("persist.vendor.bt.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
+            else if (property_get("persist.vendor.bluetooth.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
                     !strcmp(a2dp_hal_imp, "true") &&
                     status == A2DP_CTRL_ACK_PREVIOUS_COMMAND_PENDING)
             {
@@ -1184,7 +1184,7 @@
             {
                 //TODO wait for the response;
                 ack_recvd = 0;
-                if (property_get("persist.vendor.bt.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
+                if (property_get("persist.vendor.bluetooth.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
                         !strcmp(a2dp_hal_imp, "true"))
                 {
                     wait_for_stack_response(1);
@@ -1203,7 +1203,7 @@
                 pthread_mutex_unlock(&audio_stream.lock);
                 return 0;
             }
-            else if (property_get("persist.vendor.bt.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
+            else if (property_get("persist.vendor.bluetooth.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
                     !strcmp(a2dp_hal_imp, "true") &&
                     status == A2DP_CTRL_ACK_PREVIOUS_COMMAND_PENDING)
             {
@@ -1309,7 +1309,7 @@
     ALOGW("audio_check_a2dp_ready: state %s", dump_a2dp_hal_state(audio_stream.state));
     tA2DP_CTRL_ACK status;
     pthread_mutex_lock(&audio_stream.lock);
-    if (property_get("persist.vendor.bt.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
+    if (property_get("persist.vendor.bluetooth.a2dp.hal.implementation", a2dp_hal_imp, "false") &&
             !strcmp(a2dp_hal_imp, "true") &&
             audio_stream.state == AUDIO_A2DP_STATE_SUSPENDED)
     {
