Hi, According to Bluetooth specs (BLUETOOTH CORE SPECIFICATION Version 5.1 | Vol 3, Part F 3.4.6.1 Prepare Write Request): "... The Attribute Value validation is done when an Execute Write Request is received. Hence, any Invalid Offset or Invalid Attribute Value Length errors are generated when an Execute Write Request is received. ..." In contrary to the specs, 'bluetoothd' is sending error response during prepare write. The following patch changes this behaviour: --- a/src/shared/gatt-server.c 2018-06-01 10:37:36.000000000 +0200 +++ b/src/shared/gatt-server.c 2019-12-13 12:25:22.000000000 +0100 @@ -1223,7 +1223,17 @@ handle = get_le16(pwcd->pdu); - if (err) { + if ((0 != err) && (BT_ATT_ERROR_INVALID_OFFSET != err) + && (BT_ATT_ERROR_INVALID_ATTRIBUTE_VALUE_LEN != err)) { bt_att_send_error_rsp(pwcd->server->att, BT_ATT_OP_PREP_WRITE_REQ, handle, err); free(pwcd->pdu); Best regards, Konstantin