diff --git a/plugins/hciops.c b/plugins/hciops.c
index f1eb1a2..caf0bd8 100644
--- a/plugins/hciops.c
+++ b/plugins/hciops.c
{
struct dev_info *dev = &devs[index];
- dev->io_capability = io_capability;
+ /* hciops is not to be used for SMP pairing for LE devices. So
+ * change the IO capability from KeyboardDisplay to DisplayYesNo
+ * in case it is set. */
+ dev->io_capability = (io_capability == 0x04) ? 0x01 : io_capability;
return 0;
}
diff --git a/src/adapter.c b/src/adapter.c
index 7a41df9..a75a0c4 100644
--- a/src/adapter.c
+++ b/src/adapter.c
#define IO_CAPABILITY_DISPLAYYESNO 0x01
#define IO_CAPABILITY_KEYBOARDONLY 0x02
#define IO_CAPABILITY_NOINPUTNOOUTPUT 0x03
+#define IO_CAPABILITY_KEYBOARDDISPLAY 0x04
#define IO_CAPABILITY_INVALID 0xFF
#define check_address(address) bachk(address)
return IO_CAPABILITY_KEYBOARDONLY;
if (g_str_equal(capability, "NoInputNoOutput"))
return IO_CAPABILITY_NOINPUTNOOUTPUT;
+ if (g_str_equal(capability, "KeyboardDisplay"))
+ return IO_CAPABILITY_KEYBOARDDISPLAY;
return IO_CAPABILITY_INVALID;
}