As defined in Core Specification 4.2: "If a connection is already encrypted with LE security mode 1, level 2 or level 3 as defined in [Vol 3] Part C, Section 10.2 then, a Write Without Response as defined in Section 4.9.1 shall be used instead of a Signed Write Without Response." --- android/gatt.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/android/gatt.c b/android/gatt.c index 53b1983..9e348d7 100644 --- a/android/gatt.c +++ b/android/gatt.c @@ -3358,14 +3358,14 @@ static void handle_client_write_characteristic(const void *buf, uint16_t len) goto failed; } - if (get_sec_level(conn->device) != BT_SECURITY_LOW) { - error("gatt: Cannot write signed on encrypted link"); - status = HAL_STATUS_FAILED; - goto failed; - } - - res = signed_write_cmd(conn->device, ch->ch.value_handle, - cmd->value, cmd->len); + if (get_sec_level(conn->device) > BT_SECURITY_LOW) + res = gatt_write_cmd(conn->device->attrib, + ch->ch.value_handle, cmd->value, + cmd->len, NULL, NULL); + else + res = signed_write_cmd(conn->device, + ch->ch.value_handle, cmd->value, + cmd->len); break; default: error("gatt: Write type %d unsupported", cmd->write_type); -- 1.9.3 -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html