diff --git a/epicardium/ble/ble_main.c b/epicardium/ble/ble_main.c
index bd2f9948201243e63e6a6e48228640c0b58b6154..76aba4885722889771e4e2aa030e3fc7a71342c1 100644
--- a/epicardium/ble/ble_main.c
+++ b/epicardium/ble/ble_main.c
@@ -185,6 +185,29 @@ static const uint8_t bleAdvDataDisc[] =
   DM_ADV_TYPE_128_UUID_PART,
   CARD10_UUID_SUFFIX, 0x0, CARD10_UUID_PREFIX,
 
+  2,                                      /*! length */
+  DM_ADV_TYPE_TX_POWER,                   /*! AD type */
+  0,                                      /*! tx power */
+};
+
+/*! advertising data, discoverable mode with HID service*/
+static const uint8_t bleAdvDataDiscHID[] =
+{
+  /*! flags */
+  2,                                      /*! length */
+  DM_ADV_TYPE_FLAGS,                      /*! AD type */
+  DM_FLAG_LE_LIMITED_DISC |               /*! flags */
+  DM_FLAG_LE_BREDR_NOT_SUP,
+
+  3,
+  DM_ADV_TYPE_APPEARANCE,
+  UINT16_TO_BYTES(CH_APPEAR_WATCH),
+
+  /*! service UUID list */
+  17,
+  DM_ADV_TYPE_128_UUID_PART,
+  CARD10_UUID_SUFFIX, 0x0, CARD10_UUID_PREFIX,
+
   3,                                      /*! length */
   DM_ADV_TYPE_16_UUID_PART,               /*! AD type */
   UINT16_TO_BYTES(ATT_UUID_HID_SERVICE)
@@ -514,7 +537,12 @@ static void bleSetup(bleMsg_t *pMsg)
   }
 
   /* set advertising and scan response data for discoverable mode */
-  AppAdvSetData(APP_ADV_DATA_DISCOVERABLE, sizeof(bleAdvDataDisc), (uint8_t *) bleAdvDataDisc);
+  if(config_get_boolean_with_default("ble_hid_enable", false)) {
+    AppAdvSetData(APP_ADV_DATA_DISCOVERABLE, sizeof(bleAdvDataDiscHID), (uint8_t *) bleAdvDataDiscHID);
+  } else {
+    AppAdvSetData(APP_ADV_DATA_DISCOVERABLE, sizeof(bleAdvDataDisc), (uint8_t *) bleAdvDataDisc);
+  }
+
   AppAdvSetData(APP_SCAN_DATA_DISCOVERABLE, sizeof(bleScanDataDisc), (uint8_t *) bleScanDataDisc);
 
   /* set advertising and scan response data for connectable mode */