ATT Timeout

Hi,

I've been trying to find the cause of this ATT timeout for quite a few days, and my brain is toasted to a crisp now.

do you have any useful suggestions on how to debug?

I can share full source code in private, it runs on a NRF52840DK

[00:00:24.556,854] <dbg> eriskay_bluetooth: eir_found_cb: BT_DATA_UUID128_ALL
[00:00:24.556,915] <dbg> eriskay_bluetooth: rpb2_user_pairing_stop: rpb2_user_pairing_stop
[00:00:24.556,915] <dbg> eriskay_bluetooth: rpb2_user_pairing_stop: user-initiated pairing stopped or timed-out
[00:00:24.557,220] <dbg> bt_conn: bt_conn_prepare_events: 
[00:00:24.557,281] <dbg> eriskay_bluetooth: rpb2_pairing_blink_stop_cb: rpb2_pairing_blink_stop_cb
[00:00:24.557,312] <dbg> eriskay_led: led_update: led_update
[00:00:24.558,227] <dbg> bt_conn: bt_conn_set_state: disconnected -> connecting
[00:00:24.558,227] <dbg> bt_conn: bt_conn_ref: handle 0 ref 1 -> 2
[00:00:24.558,441] <dbg> bt_conn: bt_conn_prepare_events: 
[00:00:24.558,837] <dbg> bt_conn: bt_conn_prepare_events: 
[00:00:24.558,898] <dbg> bt_conn: bt_conn_ref: handle 0 ref 2 -> 3
[00:00:24.558,898] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:24.558,929] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:24.599,517] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:24.599,548] <dbg> bt_conn: bt_conn_set_state: connecting -> connected
[00:00:24.599,609] <dbg> bt_att: bt_att_accept: conn 0x20004e80 handle 0
[00:00:24.599,639] <dbg> bt_att: att_chan_attach: att 0x20013bc0 chan 0x20011bc0 flags 0
[00:00:24.599,639] <dbg> bt_att: bt_att_connected: chan 0x20011bc4 cid 0x0004
[00:00:24.599,670] <dbg> bt_gatt: bt_gatt_connected: conn 0x20004e80
[00:00:24.599,731] <dbg> bt_att: bt_att_status: chan 0x20011bc4 status 0x20011bd4
[00:00:24.599,761] <dbg> eriskay_bluetooth: connected_cb: connected_cb
[00:00:24.599,945] <inf> eriskay_bluetooth: connected_cb: Connected to RPB2: 00:A0:50:E1:E0:19 (public)
[00:00:24.599,975] <dbg> eriskay_bluetooth: rpb2_auth: rpb2_auth
[00:00:24.599,975] <dbg> eriskay_bluetooth: rpb2_auth: RPB2 auth payload 70
[00:00:24.600,006] <dbg> bt_gatt: bt_gatt_write: handle 0x0012 length 1
[00:00:24.600,006] <dbg> bt_att: bt_att_req_alloc: req 0x20013c24
[00:00:24.600,067] <dbg> bt_att: bt_att_req_send: conn 0x20004e80 req 0x20013c24
[00:00:24.600,067] <dbg> bt_att: bt_att_chan_req_send: req 0x20013c24
[00:00:24.600,097] <dbg> bt_att: chan_req_send: chan 0x20011bc0 req 0x20013c24 len 4
[00:00:24.600,097] <dbg> bt_att: bt_att_chan_send: chan 0x20011bc0 flags 4 code 0x12
[00:00:24.600,128] <dbg> bt_att: chan_send: code 0x12
[00:00:24.600,128] <dbg> bt_conn: bt_conn_send_cb: conn handle 0 buf len 8 cb 0x68fd5 user_data 0x2000710c
[00:00:24.600,433] <dbg> bt_conn: bt_conn_prepare_events: 
[00:00:24.600,463] <dbg> bt_conn: conn_prepare_events: Adding conn 0x20004e80 to poll list
[00:00:24.600,494] <dbg> bt_conn: bt_conn_process_tx: conn 0x20004e80
[00:00:24.600,494] <dbg> bt_conn: send_buf: conn 0x20004e80 buf 0x20013b78 len 8
[00:00:24.600,524] <dbg> bt_conn: send_frag: conn 0x20004e80 buf 0x20013b78 len 8 flags 0x02
[00:00:24.600,616] <dbg> bt_conn: bt_conn_prepare_events: 
[00:00:24.600,616] <dbg> bt_conn: conn_prepare_events: Adding conn 0x20004e80 to poll list
[00:00:24.600,982] <dbg> bt_conn: bt_conn_prepare_events: 
[00:00:24.600,982] <dbg> bt_conn: conn_prepare_events: Adding conn 0x20004e80 to poll list
[00:00:24.601,043] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:24.601,043] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:24.601,074] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:24.601,104] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:24.601,104] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:24.801,177] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:24.801,239] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:24.801,391] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:24.801,391] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:24.801,452] <dbg> bt_conn: tx_complete_work: conn 0x20004e80
[00:00:24.801,452] <dbg> bt_conn: tx_notify: conn 0x20004e80
[00:00:24.801,483] <dbg> bt_conn: tx_notify: tx 0x20007040 cb 0x68fd5 user_data 0x2000710c
[00:00:24.801,513] <dbg> bt_att: att_sent: conn 0x20004e80 chan 0x20011bc4
[00:00:24.801,513] <dbg> bt_att: bt_att_sent: chan 0x20011bc0
[00:00:24.801,544] <dbg> bt_att: chan_req_sent: chan 0x20011bc0 chan->req 0x20013c24
[00:00:24.901,153] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:24.901,184] <dbg> bt_conn: tx_notify: conn 0x20004e80
[00:00:24.901,184] <dbg> bt_conn: bt_conn_recv: handle 0 len 5 flags 02
[00:00:24.901,214] <dbg> bt_conn: bt_acl_recv: First, len 5 final 1
[00:00:24.901,214] <dbg> bt_conn: bt_acl_recv: Successfully parsed 5 byte L2CAP packet
[00:00:24.901,245] <dbg> bt_att: bt_att_recv: Received ATT chan 0x20011bc0 code 0x13 len 0
[00:00:24.901,275] <dbg> bt_att: att_handle_write_rsp: 
[00:00:24.901,306] <dbg> bt_att: att_handle_rsp: chan 0x20011bc0 err 0x00 len 0: 
[00:00:24.901,336] <dbg> bt_att: bt_att_req_free: req 0x20013c24
[00:00:24.901,336] <dbg> bt_gatt: gatt_write_rsp: err 0x00
[00:00:24.901,367] <dbg> eriskay_bluetooth: on_rpb2_auth_write_cb: on_rpb2_auth_write_cb
[00:00:24.901,855] <dbg> bt_conn: bt_conn_send_cb: conn handle 0 buf len 11 cb (nil) user_data (nil)
[00:00:24.901,947] <dbg> bt_gatt: gatt_write_ccc: handle 0x0013 value 0x0001
[00:00:24.901,947] <dbg> bt_att: bt_att_req_alloc: req 0x20013c24
[00:00:24.902,008] <dbg> bt_att: bt_att_req_send: conn 0x20004e80 req 0x20013c24
[00:00:24.902,038] <dbg> bt_att: bt_att_chan_req_send: req 0x20013c24
[00:00:24.902,038] <dbg> bt_att: chan_req_send: chan 0x20011bc0 req 0x20013c24 len 5
[00:00:24.902,069] <dbg> bt_att: bt_att_chan_send: chan 0x20011bc0 flags 4 code 0x12
[00:00:24.902,099] <dbg> bt_att: chan_send: code 0x12
[00:00:24.902,099] <dbg> bt_conn: bt_conn_send_cb: conn handle 0 buf len 9 cb 0x68fd5 user_data 0x20007120
[00:00:24.902,130] <inf> eriskay_bluetooth: on_rpb2_auth_write_cb: Subscribed to RPB2
[00:00:24.902,160] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:24.902,191] <dbg> bt_conn: bt_conn_process_tx: conn 0x20004e80
[00:00:24.902,221] <dbg> bt_conn: send_buf: conn 0x20004e80 buf 0x20013b78 len 11
[00:00:24.902,221] <dbg> bt_conn: send_frag: conn 0x20004e80 buf 0x20013b78 len 11 flags 0x02
[00:00:24.902,282] <dbg> bt_conn: bt_conn_prepare_events: 
[00:00:24.902,313] <dbg> bt_conn: conn_prepare_events: Adding conn 0x20004e80 to poll list
[00:00:24.902,343] <dbg> bt_conn: bt_conn_process_tx: conn 0x20004e80
[00:00:24.902,343] <dbg> bt_conn: send_buf: conn 0x20004e80 buf 0x20013b90 len 9
[00:00:24.902,374] <dbg> bt_conn: send_frag: conn 0x20004e80 buf 0x20013b90 len 9 flags 0x02
[00:00:24.902,404] <dbg> bt_conn: bt_conn_prepare_events: 
[00:00:24.902,435] <dbg> bt_conn: conn_prepare_events: Adding conn 0x20004e80 to poll list
[00:00:25.001,159] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:25.001,190] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:25.001,342] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:25.001,373] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:25.101,196] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:25.101,226] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:25.101,379] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:25.101,409] <dbg> bt_conn: tx_notify: conn 0x20004e80
[00:00:25.101,409] <dbg> bt_conn: tx_notify: tx 0x20007050 cb 0x68fd5 user_data 0x20007120
[00:00:25.101,440] <dbg> bt_att: att_sent: conn 0x20004e80 chan 0x20011bc4
[00:00:25.101,470] <dbg> bt_att: bt_att_sent: chan 0x20011bc0
[00:00:25.101,470] <dbg> bt_att: chan_req_sent: chan 0x20011bc0 chan->req 0x20013c24
[00:00:25.101,501] <dbg> bt_conn: bt_conn_recv: handle 0 len 11 flags 02
[00:00:25.101,531] <dbg> bt_conn: bt_acl_recv: First, len 11 final 7
[00:00:25.101,531] <dbg> bt_conn: bt_acl_recv: Successfully parsed 11 byte L2CAP packet
[00:00:25.101,654] <dbg> bt_conn: bt_conn_send_cb: conn handle 0 buf len 21 cb (nil) user_data (nil)
[00:00:25.101,715] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:25.101,745] <dbg> bt_conn: bt_conn_process_tx: conn 0x20004e80
[00:00:25.101,745] <dbg> bt_conn: send_buf: conn 0x20004e80 buf 0x20013b90 len 21
[00:00:25.101,776] <dbg> bt_conn: send_frag: conn 0x20004e80 buf 0x20013b90 len 21 flags 0x02
[00:00:25.101,806] <dbg> bt_conn: bt_conn_prepare_events: 
[00:00:25.101,837] <dbg> bt_conn: conn_prepare_events: Adding conn 0x20004e80 to poll list
[00:00:25.101,898] <dbg> bt_conn: tx_complete_work: conn 0x20004e80
[00:00:25.101,898] <dbg> bt_conn: tx_notify: conn 0x20004e80
[00:00:25.201,324] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:25.201,354] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:25.201,507] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:25.201,507] <dbg> bt_conn: tx_notify: conn 0x20004e80
[00:00:25.201,538] <dbg> bt_conn: bt_conn_recv: handle 0 len 16 flags 02
[00:00:25.201,538] <dbg> bt_conn: bt_acl_recv: First, len 16 final 12
[00:00:25.201,568] <dbg> bt_conn: bt_acl_recv: Successfully parsed 16 byte L2CAP packet
[00:00:25.201,599] <dbg> bt_conn: bt_conn_send_cb: conn handle 0 buf len 10 cb (nil) user_data (nil)
[00:00:25.201,721] <dbg> bt_conn: bt_conn_process_tx: conn 0x20004e80
[00:00:25.201,721] <dbg> bt_conn: send_buf: conn 0x20004e80 buf 0x20013b90 len 10
[00:00:25.201,751] <dbg> bt_conn: send_frag: conn 0x20004e80 buf 0x20013b90 len 10 flags 0x02
[00:00:25.201,873] <dbg> bt_conn: bt_conn_prepare_events: 
[00:00:25.201,904] <dbg> bt_conn: conn_prepare_events: Adding conn 0x20004e80 to poll list
[00:00:25.201,965] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:25.301,300] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:25.301,330] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:25.301,483] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:25.301,513] <dbg> bt_conn: tx_notify: conn 0x20004e80
[00:00:25.301,513] <dbg> bt_conn: bt_conn_recv: handle 0 len 21 flags 02
[00:00:25.301,544] <dbg> bt_conn: bt_acl_recv: First, len 21 final 17
[00:00:25.301,544] <dbg> bt_conn: bt_acl_recv: Successfully parsed 21 byte L2CAP packet
[00:00:25.301,635] <dbg> bt_conn: bt_conn_send_cb: conn handle 0 buf len 21 cb (nil) user_data (nil)
[00:00:25.301,666] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:25.301,696] <dbg> bt_conn: bt_conn_process_tx: conn 0x20004e80
[00:00:25.301,727] <dbg> bt_conn: send_buf: conn 0x20004e80 buf 0x20013b90 len 21
[00:00:25.301,727] <dbg> bt_conn: send_frag: conn 0x20004e80 buf 0x20013b90 len 21 flags 0x02
[00:00:25.301,788] <dbg> bt_conn: bt_conn_prepare_events: 
[00:00:25.301,818] <dbg> bt_conn: conn_prepare_events: Adding conn 0x20004e80 to poll list
[00:00:25.501,190] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:25.501,220] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:25.701,293] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:25.701,293] <dbg> bt_conn: tx_notify: conn 0x20004e80
[00:00:25.701,324] <dbg> bt_conn: bt_conn_recv: handle 0 len 21 flags 02
[00:00:25.701,324] <dbg> bt_conn: bt_acl_recv: First, len 21 final 17
[00:00:25.701,354] <dbg> bt_conn: bt_acl_recv: Successfully parsed 21 byte L2CAP packet
[00:00:25.701,660] <dbg> bt_conn: bt_conn_prepare_events: 
[00:00:25.701,660] <dbg> bt_conn: conn_prepare_events: Adding conn 0x20004e80 to poll list
[00:00:25.701,721] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:26.901,123] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:26.901,153] <dbg> eriskay_bluetooth: le_param_updated: le_param_updated
[00:00:26.901,367] <inf> eriskay_bluetooth: le_param_updated: LE param updated 00:A0:50:E1:E0:19 (public): interval 48 latency 0 timeout 200
[00:00:26.901,397] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:27.301,147] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:27.301,361] <dbg> bt_att: bt_att_encrypt_change: chan 0x20011bc4 conn 0x20004e80 handle 0 sec_level 0x02 status 0x00
[00:00:27.301,361] <dbg> bt_gatt: bt_gatt_encrypt_change: conn 0x20004e80
[00:00:27.301,422] <dbg> eriskay_bluetooth: security_changed_cb: security_changed_cb
[00:00:27.301,605] <inf> eriskay_bluetooth: security_changed_cb: Security changed: 00:A0:50:E1:E0:19 (public) level 2
[00:00:27.301,635] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:27.421,264] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:27.421,295] <dbg> bt_conn: tx_notify: conn 0x20004e80
[00:00:27.421,295] <dbg> bt_conn: bt_conn_recv: handle 0 len 21 flags 02
[00:00:27.421,325] <dbg> bt_conn: bt_acl_recv: First, len 21 final 17
[00:00:27.421,325] <dbg> bt_conn: bt_acl_recv: Successfully parsed 21 byte L2CAP packet
[00:00:27.421,386] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:27.421,905] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:27.421,936] <dbg> bt_conn: tx_notify: conn 0x20004e80
[00:00:27.421,936] <dbg> bt_conn: bt_conn_recv: handle 0 len 15 flags 02
[00:00:27.421,966] <dbg> bt_conn: bt_acl_recv: First, len 15 final 11
[00:00:27.421,966] <dbg> bt_conn: bt_acl_recv: Successfully parsed 15 byte L2CAP packet
[00:00:27.422,027] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:27.422,546] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:27.422,546] <dbg> bt_conn: tx_notify: conn 0x20004e80
[00:00:27.422,576] <dbg> bt_conn: bt_conn_recv: handle 0 len 21 flags 02
[00:00:27.422,576] <dbg> bt_conn: bt_acl_recv: First, len 21 final 17
[00:00:27.422,607] <dbg> bt_conn: bt_acl_recv: Successfully parsed 21 byte L2CAP packet
[00:00:27.422,637] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:27.423,156] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:27.423,187] <dbg> bt_conn: tx_notify: conn 0x20004e80
[00:00:27.423,217] <dbg> bt_conn: bt_conn_recv: handle 0 len 12 flags 02
[00:00:27.423,217] <dbg> bt_conn: bt_acl_recv: First, len 12 final 8
[00:00:27.423,248] <dbg> bt_conn: bt_acl_recv: Successfully parsed 12 byte L2CAP packet
[00:00:27.424,041] <dbg> bt_conn: bt_conn_send_cb: conn handle 0 buf len 21 cb (nil) user_data (nil)
[00:00:27.424,133] <dbg> bt_conn: bt_conn_send_cb: conn handle 0 buf len 15 cb 0x6ae2b user_data (nil)
[00:00:27.424,194] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:27.424,255] <dbg> bt_conn: bt_conn_process_tx: conn 0x20004e80
[00:00:27.424,255] <dbg> bt_conn: send_buf: conn 0x20004e80 buf 0x20013b90 len 21
[00:00:27.424,285] <dbg> bt_conn: send_frag: conn 0x20004e80 buf 0x20013b90 len 21 flags 0x02
[00:00:27.424,346] <dbg> bt_conn: bt_conn_prepare_events: 
[00:00:27.424,346] <dbg> bt_conn: conn_prepare_events: Adding conn 0x20004e80 to poll list
[00:00:27.424,377] <dbg> bt_conn: bt_conn_process_tx: conn 0x20004e80
[00:00:27.424,407] <dbg> bt_conn: send_buf: conn 0x20004e80 buf 0x20013b78 len 15
[00:00:27.424,407] <dbg> bt_conn: send_frag: conn 0x20004e80 buf 0x20013b78 len 15 flags 0x02
[00:00:27.424,468] <dbg> bt_conn: bt_conn_prepare_events: 
[00:00:27.424,499] <dbg> bt_conn: conn_prepare_events: Adding conn 0x20004e80 to poll list
[00:00:27.481,140] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:27.481,170] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:27.481,842] <dbg> bt_conn: bt_conn_ref: handle 0 ref 3 -> 4
[00:00:27.481,872] <dbg> bt_conn: bt_conn_unref: handle 0 ref 4 -> 3
[00:00:27.481,964] <dbg> bt_conn: tx_complete_work: conn 0x20004e80
[00:00:27.481,964] <dbg> bt_conn: tx_notify: conn 0x20004e80
[00:00:27.481,994] <dbg> bt_conn: tx_notify: tx 0x20007060 cb 0x6ae2b user_data (nil)
[00:00:27.487,274] <dbg> eriskay_bluetooth: auth_pairing_complete_cb: auth_pairing_complete_cb
[00:00:27.487,487] <inf> eriskay_bluetooth: auth_pairing_complete_cb: Bonded with RPB2 00:A0:50:E1:E0:19 (public)
[00:00:40.771,636] <dbg> eriskay_bluetooth: rpb2_user_pairing_timeout_cb: rpb2_user_pairing_timeout_cb
[00:00:40.771,697] <dbg> eriskay_bluetooth: rpb2_user_pairing_stop_work_handler: rpb2_user_pairing_stop_work_handler
[00:00:40.771,728] <dbg> eriskay_bluetooth: rpb2_user_pairing_stop: rpb2_user_pairing_stop
[00:00:40.771,728] <dbg> eriskay_bluetooth: rpb2_user_pairing_stop: user-initiated pairing stopped or timed-out
[00:00:55.101,562] <err> bt_att: att_timeout: ATT Timeout
[00:00:55.101,593] <dbg> bt_att: bt_att_disconnected: chan 0x20011bc4 cid 0x0004
[00:00:55.101,623] <dbg> bt_att: att_chan_detach: chan 0x20011bc0
[00:00:55.101,654] <dbg> bt_att: att_handle_rsp: chan 0x20011bc0 err 0x0e len 0: 
[00:00:55.101,684] <dbg> bt_att: bt_att_req_free: req 0x20013c24
[00:00:55.101,684] <dbg> bt_gatt: gatt_write_ccc_rsp: err 0x0e
[00:00:55.101,715] <inf> eriskay_bluetooth: notify_cb: Unsubscribed from RPB2
[00:00:55.101,745] <dbg> bt_gatt: bt_gatt_disconnected: conn 0x20004e80
[00:00:55.102,203] <dbg> bt_gatt: bt_gatt_store_ccc: Stored CCCs for 00:A0:50:E1:E0:19 (public) (bt/ccc/00a050e1e0190)
[00:00:55.102,233] <dbg> bt_gatt: bt_gatt_store_ccc:   CCC: NULL
[00:00:55.102,233] <dbg> bt_gatt: bt_gatt_store_cf: No config for CF
[00:00:55.102,661] <dbg> bt_gatt: bt_gatt_store_cf: Stored CF for 00:A0:50:E1:E0:19 (public) (bt/cf/00a050e1e0190)

Parents Reply Children
  • After 3 days of debugging I've been able to find the issue. Subscribing straight away causes absolute mayhem in the peripheral (A Cypress PSoC 6).

    So I think this issue is largely not applicable to other people. If you use a Cypress PSoC 6, my first recommendation is buy a nordic IC instead. Second best, add some timers after you do anything that involves changing the security, at least 300mS.

    To debug, I used Nordic's sniffer. Do note that the documentation is a tiny bit outdated here and there, but it works really well.

    I found this configs beneficial for debugging:

    # GENERIC DEBUG
    CONFIG_ASSERT=n # ALWAYS USE ASSERT TO TEST BEFORE RELEASE
    CONFIG_DEBUG_OPTIMIZATIONS=y
    CONFIG_DEBUG=y
    
    # BLUETOOTH DEBUG
    CONFIG_BT_SHELL=y
    CONFIG_BT_DEBUG_ATT=y
    CONFIG_BT_DEBUG_CONN=y
    CONFIG_BT_DEBUG_GATT=y
    CONFIG_BT_DEBUG_LOG=y
    # CONFIG_BT_DEBUG_SMP=y

Related