diff --git a/plugins/hciops.c b/plugins/hciops.c
index a297096..63d7cbd 100644
--- a/plugins/hciops.c
+++ b/plugins/hciops.c
@@ -253,6 +253,24 @@
 	return 0;
 }
 
+static int init_ssp_mode(int index)
+{
+	write_simple_pairing_mode_cp cp;
+
+	if (ioctl(SK(index), HCIGETAUTHINFO, NULL) < 0 && errno == EINVAL)
+		return 0;
+
+	memset(&cp, 0, sizeof(cp));
+	cp.mode = 0x01;
+
+	if (hci_send_cmd(SK(index), OGF_HOST_CTL,
+				OCF_WRITE_SIMPLE_PAIRING_MODE,
+				WRITE_SIMPLE_PAIRING_MODE_CP_SIZE, &cp) < 0)
+		return -errno;
+
+	return 0;
+}
+
 static void start_adapter(int index)
 {
 	uint8_t events[8] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00 };
@@ -294,6 +312,9 @@
 						sizeof(events), events);
 	}
 
+	if (FEATURES(index)[6] & LMP_SIMPLE_PAIR)
+		init_ssp_mode(index);
+
 	inqmode = get_inquiry_mode(index);
 	if (inqmode)
 		write_inq_mode(index, inqmode);
@@ -2208,24 +2229,6 @@
 	return 0;
 }
 
-static int hciops_init_ssp_mode(int index, uint8_t *mode)
-{
-	write_simple_pairing_mode_cp cp;
-
-	if (ioctl(SK(index), HCIGETAUTHINFO, NULL) < 0 && errno == EINVAL)
-		return 0;
-
-	memset(&cp, 0, sizeof(cp));
-	cp.mode = 0x01;
-
-	if (hci_send_cmd(SK(index), OGF_HOST_CTL,
-				OCF_WRITE_SIMPLE_PAIRING_MODE,
-				WRITE_SIMPLE_PAIRING_MODE_CP_SIZE, &cp) < 0)
-		return -errno;
-
-	return 0;
-}
-
 static int hciops_read_link_policy(int index)
 {
 	if (hci_send_cmd(SK(index), OGF_LINK_POLICY,
@@ -2488,7 +2491,6 @@
 	.read_local_version = hciops_read_local_version,
 	.read_local_features = hciops_read_local_features,
 	.read_local_ext_features = hciops_read_local_ext_features,
-	.init_ssp_mode = hciops_init_ssp_mode,
 	.read_link_policy = hciops_read_link_policy,
 	.disconnect = hciops_disconnect,
 	.remove_bonding = hciops_remove_bonding,
diff --git a/plugins/mgmtops.c b/plugins/mgmtops.c
index c06b311..f1e15fc 100644
--- a/plugins/mgmtops.c
+++ b/plugins/mgmtops.c
@@ -688,12 +688,6 @@
 	return -ENOSYS;
 }
 
-static int mgmt_init_ssp_mode(int index, uint8_t *mode)
-{
-	DBG("index %d", index);
-	return -ENOSYS;
-}
-
 static int mgmt_read_link_policy(int index)
 {
 	DBG("index %d", index);
@@ -828,7 +822,6 @@
 	.read_local_version = mgmt_read_local_version,
 	.read_local_features = mgmt_read_local_features,
 	.read_local_ext_features = mgmt_read_local_ext_features,
-	.init_ssp_mode = mgmt_init_ssp_mode,
 	.read_link_policy = mgmt_read_link_policy,
 	.disconnect = mgmt_disconnect,
 	.remove_bonding = mgmt_remove_bonding,
diff --git a/src/adapter.c b/src/adapter.c
index a0d4b23..b89f2b7 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2433,12 +2433,6 @@
 
 	memcpy(dev->features, features, 8);
 
-	if (!(features[6] & LMP_SIMPLE_PAIR))
-		goto setup;
-
-	adapter_ops->init_ssp_mode(adapter->dev_id, &dev->ssp_mode);
-
-setup:
 	adapter_ops->read_link_policy(adapter->dev_id);
 
 	adapter->current_cod = 0;
diff --git a/src/adapter.h b/src/adapter.h
index 1081737..3930630 100644
--- a/src/adapter.h
+++ b/src/adapter.h
@@ -210,7 +210,6 @@
 	int (*read_local_version) (int index, struct hci_version *ver);
 	int (*read_local_features) (int index, uint8_t *features);
 	int (*read_local_ext_features) (int index);
-	int (*init_ssp_mode) (int index, uint8_t *ssp_mode);
 	int (*read_link_policy) (int index);
 	int (*disconnect) (int index, uint16_t handle);
 	int (*remove_bonding) (int index, bdaddr_t *bdaddr);
