diff --git a/plugins/hciops.c b/plugins/hciops.c
index 56ce978..b8bf00e 100644
--- a/plugins/hciops.c
+++ b/plugins/hciops.c
@@ -870,51 +870,18 @@
 static void pin_code_request(int index, bdaddr_t *dba)
 {
 	struct dev_info *dev = &devs[index];
-	pin_code_reply_cp pr;
-	struct hci_conn_info_req *cr;
-	struct hci_conn_info *ci;
-	char da[18], pin[17];
-	int pinlen;
+	char addr[18];
+	int err;
 
-	memset(&pr, 0, sizeof(pr));
-	bacpy(&pr.bdaddr, dba);
+	ba2str(dba, addr);
+	DBG("hci%d PIN request for %s", index, addr);
 
-	ba2str(dba, da);
-	DBG("hci%d PIN request for %s", index, da);
-
-	cr = g_malloc0(sizeof(*cr) + sizeof(*ci));
-
-	bacpy(&cr->bdaddr, dba);
-	cr->type = ACL_LINK;
-	if (ioctl(dev->sk, HCIGETCONNINFO, (unsigned long) cr) < 0) {
-		error("Can't get conn info: %s (%d)", strerror(errno), errno);
-		goto reject;
+	err = btd_event_request_pin(&dev->bdaddr, dba);
+	if (err < 0) {
+		error("PIN code negative reply: %s", strerror(-err));
+		hci_send_cmd(dev->sk, OGF_LINK_CTL, OCF_PIN_CODE_NEG_REPLY,
+								6, dba);
 	}
-	ci = cr->conn_info;
-
-	memset(pin, 0, sizeof(pin));
-	pinlen = read_pin_code(&dev->bdaddr, dba, pin);
-
-	if (pinlen > 0) {
-		dev->pin_length = pinlen;
-		memcpy(pr.pin_code, pin, pinlen);
-		pr.pin_len = pinlen;
-		hci_send_cmd(dev->sk, OGF_LINK_CTL, OCF_PIN_CODE_REPLY,
-						PIN_CODE_REPLY_CP_SIZE, &pr);
-	} else {
-		/* Request PIN from passkey agent */
-		if (btd_event_request_pin(&dev->bdaddr, ci) < 0)
-			goto reject;
-	}
-
-	g_free(cr);
-
-	return;
-
-reject:
-	g_free(cr);
-
-	hci_send_cmd(dev->sk, OGF_LINK_CTL, OCF_PIN_CODE_NEG_REPLY, 6, dba);
 }
 
 static void start_inquiry(bdaddr_t *local, uint8_t status, gboolean periodic)
diff --git a/src/event.c b/src/event.c
index 009560e..2a1edf1 100644
--- a/src/event.c
+++ b/src/event.c
@@ -129,12 +129,14 @@
 	error("Sending PIN code reply failed: %s (%d)", strerror(-err), -err);
 }
 
-int btd_event_request_pin(bdaddr_t *sba, struct hci_conn_info *ci)
+int btd_event_request_pin(bdaddr_t *sba, bdaddr_t *dba)
 {
 	struct btd_adapter *adapter;
 	struct btd_device *device;
+	char pin[17];
+	int pinlen;
 
-	if (!get_adapter_and_device(sba, &ci->bdaddr, &adapter, &device, TRUE))
+	if (!get_adapter_and_device(sba, dba, &adapter, &device, TRUE))
 		return -ENODEV;
 
 	/* Check if the adapter is not pairable and if there isn't a bonding in
@@ -142,6 +144,13 @@
 	if (!adapter_is_pairable(adapter) && !device_is_bonding(device, NULL))
 		return -EPERM;
 
+	memset(pin, 0, sizeof(pin));
+	pinlen = read_pin_code(sba, dba, pin);
+	if (pinlen > 0) {
+		btd_adapter_pincode_reply(adapter, dba, pin);
+		return 0;
+	}
+
 	return device_request_authentication(device, AUTH_TYPE_PINCODE, 0,
 								pincode_cb);
 }
diff --git a/src/event.h b/src/event.h
index 4321949..83528a4 100644
--- a/src/event.h
+++ b/src/event.h
@@ -22,7 +22,7 @@
  *
  */
 
-int btd_event_request_pin(bdaddr_t *sba, struct hci_conn_info *ci);
+int btd_event_request_pin(bdaddr_t *sba, bdaddr_t *dba);
 void btd_event_advertising_report(bdaddr_t *local, le_advertising_info *info);
 void btd_event_inquiry_result(bdaddr_t *local, bdaddr_t *peer, uint32_t class, int8_t rssi, uint8_t *data);
 void btd_event_set_legacy_pairing(bdaddr_t *local, bdaddr_t *peer, gboolean legacy);
