Hi, During Bluetooth Qualification tests with PTS I found out that if an attribute provided by a GATT server created by BlueZ 5.50 running on my IUT is written by remote, the value of this attribute is not provided by 'bluetoothd' to the upper layer. With a minor modification of 'bluetoothd' I managed to get the tests through, so I'd like to get feedback from the community, whether this modification was necessary or may be there's another way of getting attribute write working. For GATT tests I used 'btgatt-server' application provided by BlueZ. In order to test writing characteristic value I made "Device Name" provided by the application writable. It turned out, that the 'gap_device_name_write_cb' function that is called by the daemon upon writing "Device Name" always receives 'value=NULL' and 'len=0'. The reason for this is that in the 'gatt_db_attribute_write' call in 'prep_write_cb' in 'gatt-server.c' file in 'bluetoothd' both 'value' and 'len' are hard-coded to NULL and 0 respectively. With the following modification in 'gatt-server.c' the callback in 'btgatt-server' application receives the arguments it expects and the GATT tests can be passed: --- a/src/shared/gatt-server.c 2018-06-01 10:37:36.000000000 +0200 +++ b/src/shared/gatt-server.c 2019-12-13 12:16:58.000000000 +0100 @@ -1291,7 +1291,7 @@ pwcd->length = length; pwcd->server = server; - status = gatt_db_attribute_write(attr, offset, NULL, 0, + status = gatt_db_attribute_write(attr, offset, pwcd->pdu + 4, pwcd->length - 4, BT_ATT_OP_PREP_WRITE_RE Q, server->att, prep_write_complete_cb, pwcd); Best regards Konstantin