diff --git a/system/bta/hd/bta_hd_act.cc b/system/bta/hd/bta_hd_act.cc
index a8a43d1d81682c8a6aea6526f9c3c860b7585ea8..2b3ff46d7f870302a55315ba7185213812154e12 100644
--- a/system/bta/hd/bta_hd_act.cc
+++ b/system/bta/hd/bta_hd_act.cc
@@ -256,13 +256,19 @@ void bta_hd_unregister2_act(tBTA_HD_DATA* p_data) {
  * Returns          void
  *
  ******************************************************************************/
-extern void bta_hd_connect_act(UNUSED_ATTR tBTA_HD_DATA* p_data) {
+extern void bta_hd_connect_act(tBTA_HD_DATA* p_data) {
   tHID_STATUS ret;
+  tBTA_HD_DEVICE_CTRL* p_ctrl = (tBTA_HD_DEVICE_CTRL*)p_data;
 
   APPL_TRACE_API("%s", __func__);
 
-  ret = HID_DevConnect();
+  ret = HID_DevPlugDevice(p_ctrl->addr);
+  if (ret != HID_SUCCESS) {
+    APPL_TRACE_WARNING("%s: HID_DevPlugDevice returned %d", __func__, ret);
+    return;
+  }
 
+  ret = HID_DevConnect();
   if (ret != HID_SUCCESS) {
     APPL_TRACE_WARNING("%s: HID_DevConnect returned %d", __func__, ret);
   }
diff --git a/system/bta/hd/bta_hd_api.cc b/system/bta/hd/bta_hd_api.cc
index 5ad73ba054917907a60246f0680f605c82f63d83..7b402ea38b7a57e232b50145e53dbea690a8c8f0 100644
--- a/system/bta/hd/bta_hd_api.cc
+++ b/system/bta/hd/bta_hd_api.cc
@@ -236,13 +236,16 @@ extern void BTA_HdVirtualCableUnplug(void) {
  * Returns          void
  *
  ******************************************************************************/
-extern void BTA_HdConnect(void) {
-  BT_HDR* p_buf;
+extern void BTA_HdConnect(BD_ADDR addr) {
+  tBTA_HD_DEVICE_CTRL* p_buf;
 
   APPL_TRACE_API("%s", __func__);
 
-  if ((p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR))) != NULL) {
-    p_buf->event = BTA_HD_API_CONNECT_EVT;
+  if ((p_buf = (tBTA_HD_DEVICE_CTRL*)osi_malloc(sizeof(tBTA_HD_DEVICE_CTRL))) !=
+      NULL) {
+    p_buf->hdr.event = BTA_HD_API_CONNECT_EVT;
+
+    memcpy(p_buf->addr, addr, sizeof(BD_ADDR));
 
     bta_sys_sendmsg(p_buf);
   }
diff --git a/system/bta/include/bta_hd_api.h b/system/bta/include/bta_hd_api.h
index a8314f6f161cd4015049b5cf01febe54d50a9b60..7bd2cb5809f809f337686196aeba79e9c4277d82 100644
--- a/system/bta/include/bta_hd_api.h
+++ b/system/bta/include/bta_hd_api.h
@@ -209,12 +209,12 @@ extern void BTA_HdVirtualCableUnplug(void);
  * Function         BTA_HdConnect
  *
  * Description      This function is called when connection to host shall be
-*made
+ *                  made
  *
  * Returns          void
  *
  ******************************************************************************/
-extern void BTA_HdConnect(void);
+extern void BTA_HdConnect(BD_ADDR addr);
 
 /*******************************************************************************
  *
diff --git a/system/btif/src/btif_hd.cc b/system/btif/src/btif_hd.cc
index 3c7aa9abb3c1cd3856d1dfb09c69bcd31f9ac679..ff9b62a9c2ecac262040ccde97169f11bd962f8f 100644
--- a/system/btif/src/btif_hd.cc
+++ b/system/btif/src/btif_hd.cc
@@ -470,7 +470,7 @@ static bt_status_t unregister_app(void) {
  * Returns          bt_status_t
  *
  ******************************************************************************/
-static bt_status_t connect(void) {
+static bt_status_t connect(bt_bdaddr_t* bd_addr) {
   BTIF_TRACE_API("%s", __func__);
 
   if (!btif_hd_cb.app_registered) {
@@ -484,7 +484,7 @@ static bt_status_t connect(void) {
     return BT_STATUS_NOT_READY;
   }
 
-  BTA_HdConnect();
+  BTA_HdConnect(bd_addr->address);
 
   return BT_STATUS_SUCCESS;
 }