diff --git a/libbt-vendor/src/bt_vendor_qcom.c b/libbt-vendor/src/bt_vendor_qcom.c
index 77ccd55..86dd5ce 100644
--- a/libbt-vendor/src/bt_vendor_qcom.c
+++ b/libbt-vendor/src/bt_vendor_qcom.c
@@ -52,7 +52,7 @@
 extern int check_embedded_mode(int fd);
 extern int rome_get_addon_feature_list(int fd);
 extern int rome_ver;
-extern int enable_controller_log(int fd);
+extern int enable_controller_log(int fd, unsigned char req);
 /******************************************************************************
 **  Variables
 ******************************************************************************/
@@ -619,7 +619,7 @@
     uint8_t local_bd_addr_from_prop[6];
     char* tok;
 #endif
-
+    bool skip_init = true;
     ALOGV("bt-vendor : op for %d", opcode);
 
     switch(opcode)
@@ -811,6 +811,7 @@
                                         ALOGV("rome_soc_init is completed");
                                         property_set("wc_transport.soc_initialized", "1");
                                         userial_clock_operation(fd, USERIAL_OP_CLK_OFF);
+                                        skip_init = false;
                                         /*Close the UART port*/
                                         close(fd);
                                     }
@@ -842,7 +843,11 @@
                                              rome_get_addon_feature_list(fd);
                                          }
                                      }
-                                     enable_controller_log(fd);
+                                     if (!skip_init) {
+                                         /*Skip if already sent*/
+                                         enable_controller_log(fd, is_ant_req);
+                                         skip_init = true;
+                                     }
                                      for (idx=0; idx < CH_MAX; idx++)
                                           (*fd_array)[idx] = fd;
                                           retval = 1;
diff --git a/libbt-vendor/src/hw_rome.c b/libbt-vendor/src/hw_rome.c
index 06241f5..6dcb183 100644
--- a/libbt-vendor/src/hw_rome.c
+++ b/libbt-vendor/src/hw_rome.c
@@ -1700,7 +1700,7 @@
 }
 
 
-void enable_controller_log (int fd)
+void enable_controller_log (int fd, unsigned char wait_for_evt)
 {
    int ret = 0;
    /* VS command to enable controller logging to the HOST. By default it is disabled */
@@ -1713,16 +1713,22 @@
    // value at cmd[5]: 1 - to enable, 0 - to disable
    ret = (strcmp(value, "true") == 0) ? cmd[5] = 0x01: 0;
    ALOGI("%s: %d", __func__, ret);
+   /* Ignore vsc evt if wait_for_evt is true */
+   if (wait_for_evt) wait_vsc_evt = FALSE;
 
    ret = hci_send_vs_cmd(fd, (unsigned char *)cmd, rsp, 6);
    if (ret != 6) {
        ALOGE("%s: command failed", __func__);
    }
-
+   /*Ignore hci_event if wait_for_evt is true*/
+   if (wait_for_evt)
+       goto end;
    ret = read_hci_event(fd, rsp, HCI_MAX_EVENT_SIZE);
    if (ret < 0) {
        ALOGE("%s: Failed to get CC for enable SoC log", __FUNCTION__);
    }
+end:
+   wait_vsc_evt = TRUE;
    return;
 }
 
@@ -1862,14 +1868,6 @@
             }
             ALOGI("%s: Download TLV file successfully ", __FUNCTION__);
 
-            /* This function sends a vendor specific command to enable/disable
-             * controller logs on need. Once the command is received to the SOC,
-             * It would start sending cotroller's print strings and LMP RX/TX
-             * packets to the HOST (over the UART) which will be logged in QXDM.
-             * The property 'enablebtsoclog' used to send this command on BT init
-             * sequence.
-             */
-
             /* Get SU FM label information */
             if((err = rome_get_build_info_req(fd)) <0){
                 ALOGI("%s: Fail to get Rome FW SU Build info (0x%x)", __FUNCTION__, err);
