This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Samsung S10 Android 10 + BLE Error 8 (0x8): GATT CONN TIMEOUT

I am experiencing a GATT error 8(0x8) when connecting the Samsung S10 Android 10 to the nrfconnect app. This seems to be a Samsung issue as I do not experience this when connecting the Samsung S9 Android 10, Samsung J7 Prime android 8, Huawei P20 Android 10 and multiple iphones. To corroborate my statement, here's a link where many developers are experiencing the same problem : https://forum.developer.samsung.com/t/samsung-android-10-ble-connectivity-regression/509. I need a workaround to this issue as i do not see a fix coming to the mobile devices soon. 

I have a custom board running a custom firmware hosted by a nrf52832 SoC with a softdevice 6.0, using sdk 15. I have been reading through many other posts and have tried to make the following change :

from...
#define MIN_CONN_INTERVAL MSEC_TO_UNITS(15, UNIT_1_25_MS) 
#define MAX_CONN_INTERVAL MSEC_TO_UNITS(30, UNIT_1_25_MS)

to...
#define MIN_CONN_INTERVAL MSEC_TO_UNITS(50, UNIT_1_25_MS) 
#define MAX_CONN_INTERVAL MSEC_TO_UNITS(100, UNIT_1_25_MS) 

this did not work. I then came across posts that suggest that the issue has to do with "long MTU or DLE support" ....will removing DLE support fix my issue, is it worth the try ? 

In addition, Samsung made a security update recently and developer made a comment stating:

"Under Android 9 and 10 before Update June 2020 when you want use the BLE mode there was a warning message that the user must allow that the actual user position can be used by the app , that message is GONE AWAY in the latest update !
So now the good news … the data direction from the BLE Hardware to the Samsung Phone allows now full size MTUs of 180byte !
Bad news is that from the Phone to the BLE Hardware is still reduced data MTU of 20 byte !
So your bugfix was 50% successfully , now please do the rest 
Please tell them that they JUST only have to fix the problem with the data direction from the Samsung Phone to the BLE devices !"

With this being said , how do i go about implementing a fix with what the gentlemen said above?

Lastly, i can only provide a log of the connection issue which is attached to the post and i cannot provide a sniffer trace.
Help would be much appreciated. Thank you.

nRF Connect, 2020-07-02
RombotB_C520F1A0669B (C5:20:F1:A0:66:9B)
V	10:11:41.965	Connecting to C5:20:F1:A0:66:9B...
D	10:11:41.965	gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D	10:11:42.707	[Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
D	10:11:42.710	[Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I	10:11:42.710	Connected to C5:20:F1:A0:66:9B
V	10:11:42.737	Discovering services...
D	10:11:42.737	gatt.discoverServices()
I	10:11:43.266	Connection parameters updated (interval: 7.5ms, latency: 0, timeout: 5000ms)
D	10:11:43.751	[Callback] Services discovered with status: 0
I	10:11:43.751	Services discovered
V	10:11:43.768	Generic Access (0x1800)
- Device Name [R W] (0x2A00)
- Appearance [R] (0x2A01)
- Peripheral Preferred Connection Parameters [R] (0x2A04)
- Central Address Resolution [R] (0x2AA6)
Generic Attribute (0x1801)
- Service Changed [I] (0x2A05)
   Client Characteristic Configuration (0x2902)
Secure DFU Service (0xFE59)
- Buttonless DFU [I W] (8ec90003-f315-4f60-9fb8-838830daea50)
   Client Characteristic Configuration (0x2902)
Device Information (0x180A)
- Manufacturer Name String [R] (0x2A29)
- Hardware Revision String [R] (0x2A27)
- Firmware Revision String [R] (0x2A26)
- Software Revision String [R] (0x2A28)
Battery Service (0x180F)
- Battery Level [N R] (0x2A19)
   Client Characteristic Configuration (0x2902)
Unknown Service (8b71a0c0-d50e-67b4-e811-0e2d1c4b0b8b)
- Unknown Characteristic [R W] (8b710000-d50e-67b4-e811-0e2d1c4b0b8b)
- Unknown Characteristic [N R W] (8b710001-d50e-67b4-e811-0e2d1c4b0b8b)
   Client Characteristic Configuration (0x2902)
- Unknown Characteristic [R W] (8b710002-d50e-67b4-e811-0e2d1c4b0b8b)
- Unknown Characteristic [N R W] (8b710003-d50e-67b4-e811-0e2d1c4b0b8b)
   Client Characteristic Configuration (0x2902)
- Unknown Characteristic [N R W] (8b710004-d50e-67b4-e811-0e2d1c4b0b8b)
   Client Characteristic Configuration (0x2902)
D	10:11:43.769	gatt.setCharacteristicNotification(00002a05-0000-1000-8000-00805f9b34fb, true)
D	10:11:43.770	gatt.setCharacteristicNotification(00002a19-0000-1000-8000-00805f9b34fb, true)
D	10:11:43.771	gatt.setCharacteristicNotification(8b710001-d50e-67b4-e811-0e2d1c4b0b8b, true)
D	10:11:43.772	gatt.setCharacteristicNotification(8b710003-d50e-67b4-e811-0e2d1c4b0b8b, true)
D	10:11:43.773	gatt.setCharacteristicNotification(8b710004-d50e-67b4-e811-0e2d1c4b0b8b, true)
I	10:11:43.817	Connection parameters updated (interval: 35.0ms, latency: 0, timeout: 5000ms)
I	10:11:48.001	Connection parameters updated (interval: 87.5ms, latency: 0, timeout: 4000ms)
D	10:11:53.348	[Callback] Connection state changed with status: 8 and new state: DISCONNECTED (0)
E	10:11:53.348	Error 8 (0x8): GATT CONN TIMEOUT
I	10:11:53.348	Disconnected
D	10:11:53.433	[Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
D	10:12:04.283	gatt.close()
D	10:12:04.286	wait(200)
V	10:12:04.488	Connecting to C5:20:F1:A0:66:9B...
D	10:12:04.488	gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D	10:12:04.701	[Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
D	10:12:04.709	[Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I	10:12:04.709	Connected to C5:20:F1:A0:66:9B
V	10:12:04.723	Discovering services...
D	10:12:04.723	gatt.discoverServices()
I	10:12:05.261	Connection parameters updated (interval: 7.5ms, latency: 0, timeout: 5000ms)
D	10:12:05.592	[Callback] Services discovered with status: 0
I	10:12:05.592	Services discovered
V	10:12:05.609	Generic Access (0x1800)
- Device Name [R W] (0x2A00)
- Appearance [R] (0x2A01)
- Peripheral Preferred Connection Parameters [R] (0x2A04)
- Central Address Resolution [R] (0x2AA6)
Generic Attribute (0x1801)
- Service Changed [I] (0x2A05)
   Client Characteristic Configuration (0x2902)
Secure DFU Service (0xFE59)
- Buttonless DFU [I W] (8ec90003-f315-4f60-9fb8-838830daea50)
   Client Characteristic Configuration (0x2902)
Device Information (0x180A)
- Manufacturer Name String [R] (0x2A29)
- Hardware Revision String [R] (0x2A27)
- Firmware Revision String [R] (0x2A26)
- Software Revision String [R] (0x2A28)
Battery Service (0x180F)
- Battery Level [N R] (0x2A19)
   Client Characteristic Configuration (0x2902)
Unknown Service (8b71a0c0-d50e-67b4-e811-0e2d1c4b0b8b)
- Unknown Characteristic [R W] (8b710000-d50e-67b4-e811-0e2d1c4b0b8b)
- Unknown Characteristic [N R W] (8b710001-d50e-67b4-e811-0e2d1c4b0b8b)
   Client Characteristic Configuration (0x2902)
- Unknown Characteristic [R W] (8b710002-d50e-67b4-e811-0e2d1c4b0b8b)
- Unknown Characteristic [N R W] (8b710003-d50e-67b4-e811-0e2d1c4b0b8b)
   Client Characteristic Configuration (0x2902)
- Unknown Characteristic [N R W] (8b710004-d50e-67b4-e811-0e2d1c4b0b8b)
   Client Characteristic Configuration (0x2902)
D	10:12:05.609	gatt.setCharacteristicNotification(00002a05-0000-1000-8000-00805f9b34fb, true)
D	10:12:05.610	gatt.setCharacteristicNotification(00002a19-0000-1000-8000-00805f9b34fb, true)
D	10:12:05.611	gatt.setCharacteristicNotification(8b710001-d50e-67b4-e811-0e2d1c4b0b8b, true)
D	10:12:05.612	gatt.setCharacteristicNotification(8b710003-d50e-67b4-e811-0e2d1c4b0b8b, true)
D	10:12:05.612	gatt.setCharacteristicNotification(8b710004-d50e-67b4-e811-0e2d1c4b0b8b, true)
I	10:12:05.657	Connection parameters updated (interval: 35.0ms, latency: 0, timeout: 5000ms)
D	10:12:12.280	[Callback] Connection state changed with status: 8 and new state: DISCONNECTED (0)
E	10:12:12.280	Error 8 (0x8): GATT CONN TIMEOUT
I	10:12:12.280	Disconnected
D	10:12:12.363	[Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
D	10:12:19.204	gatt.close()
D	10:12:19.207	wait(200)
V	10:12:19.409	Connecting to C5:20:F1:A0:66:9B...
D	10:12:19.409	gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D	10:12:19.787	[Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I	10:12:19.787	Connected to C5:20:F1:A0:66:9B
D	10:12:19.806	[Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
V	10:12:19.808	Discovering services...
D	10:12:19.808	gatt.discoverServices()
I	10:12:20.344	Connection parameters updated (interval: 7.5ms, latency: 0, timeout: 5000ms)
D	10:12:20.662	[Callback] Services discovered with status: 0
I	10:12:20.662	Services discovered
V	10:12:20.677	Generic Access (0x1800)
- Device Name [R W] (0x2A00)
- Appearance [R] (0x2A01)
- Peripheral Preferred Connection Parameters [R] (0x2A04)
- Central Address Resolution [R] (0x2AA6)
Generic Attribute (0x1801)
- Service Changed [I] (0x2A05)
   Client Characteristic Configuration (0x2902)
Secure DFU Service (0xFE59)
- Buttonless DFU [I W] (8ec90003-f315-4f60-9fb8-838830daea50)
   Client Characteristic Configuration (0x2902)
Device Information (0x180A)
- Manufacturer Name String [R] (0x2A29)
- Hardware Revision String [R] (0x2A27)
- Firmware Revision String [R] (0x2A26)
- Software Revision String [R] (0x2A28)
Battery Service (0x180F)
- Battery Level [N R] (0x2A19)
   Client Characteristic Configuration (0x2902)
Unknown Service (8b71a0c0-d50e-67b4-e811-0e2d1c4b0b8b)
- Unknown Characteristic [R W] (8b710000-d50e-67b4-e811-0e2d1c4b0b8b)
- Unknown Characteristic [N R W] (8b710001-d50e-67b4-e811-0e2d1c4b0b8b)
   Client Characteristic Configuration (0x2902)
- Unknown Characteristic [R W] (8b710002-d50e-67b4-e811-0e2d1c4b0b8b)
- Unknown Characteristic [N R W] (8b710003-d50e-67b4-e811-0e2d1c4b0b8b)
   Client Characteristic Configuration (0x2902)
- Unknown Characteristic [N R W] (8b710004-d50e-67b4-e811-0e2d1c4b0b8b)
   Client Characteristic Configuration (0x2902)
D	10:12:20.677	gatt.setCharacteristicNotification(00002a05-0000-1000-8000-00805f9b34fb, true)
D	10:12:20.679	gatt.setCharacteristicNotification(00002a19-0000-1000-8000-00805f9b34fb, true)
D	10:12:20.680	gatt.setCharacteristicNotification(8b710001-d50e-67b4-e811-0e2d1c4b0b8b, true)
D	10:12:20.680	gatt.setCharacteristicNotification(8b710003-d50e-67b4-e811-0e2d1c4b0b8b, true)
D	10:12:20.681	gatt.setCharacteristicNotification(8b710004-d50e-67b4-e811-0e2d1c4b0b8b, true)
I	10:12:20.725	Connection parameters updated (interval: 35.0ms, latency: 0, timeout: 5000ms)
D	10:12:28.324	[Callback] Connection state changed with status: 8 and new state: DISCONNECTED (0)
E	10:12:28.324	Error 8 (0x8): GATT CONN TIMEOUT
I	10:12:28.324	Disconnected
D	10:12:28.388	[Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
D	10:12:36.257	gatt.close()
D	10:12:36.260	wait(200)
V	10:12:36.461	Connecting to C5:20:F1:A0:66:9B...
D	10:12:36.461	gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D	10:12:36.620	[Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I	10:12:36.620	Connected to C5:20:F1:A0:66:9B
D	10:12:36.622	[Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
V	10:12:36.644	Discovering services...
D	10:12:36.644	gatt.discoverServices()
I	10:12:37.180	Connection parameters updated (interval: 7.5ms, latency: 0, timeout: 5000ms)
D	10:12:37.571	[Callback] Services discovered with status: 0
I	10:12:37.571	Services discovered
V	10:12:37.585	Generic Access (0x1800)
- Device Name [R W] (0x2A00)
- Appearance [R] (0x2A01)
- Peripheral Preferred Connection Parameters [R] (0x2A04)
- Central Address Resolution [R] (0x2AA6)
Generic Attribute (0x1801)
- Service Changed [I] (0x2A05)
   Client Characteristic Configuration (0x2902)
Secure DFU Service (0xFE59)
- Buttonless DFU [I W] (8ec90003-f315-4f60-9fb8-838830daea50)
   Client Characteristic Configuration (0x2902)
Device Information (0x180A)
- Manufacturer Name String [R] (0x2A29)
- Hardware Revision String [R] (0x2A27)
- Firmware Revision String [R] (0x2A26)
- Software Revision String [R] (0x2A28)
Battery Service (0x180F)
- Battery Level [N R] (0x2A19)
   Client Characteristic Configuration (0x2902)
Unknown Service (8b71a0c0-d50e-67b4-e811-0e2d1c4b0b8b)
- Unknown Characteristic [R W] (8b710000-d50e-67b4-e811-0e2d1c4b0b8b)
- Unknown Characteristic [N R W] (8b710001-d50e-67b4-e811-0e2d1c4b0b8b)
   Client Characteristic Configuration (0x2902)
- Unknown Characteristic [R W] (8b710002-d50e-67b4-e811-0e2d1c4b0b8b)
- Unknown Characteristic [N R W] (8b710003-d50e-67b4-e811-0e2d1c4b0b8b)
   Client Characteristic Configuration (0x2902)
- Unknown Characteristic [N R W] (8b710004-d50e-67b4-e811-0e2d1c4b0b8b)
   Client Characteristic Configuration (0x2902)
D	10:12:37.585	gatt.setCharacteristicNotification(00002a05-0000-1000-8000-00805f9b34fb, true)
D	10:12:37.586	gatt.setCharacteristicNotification(00002a19-0000-1000-8000-00805f9b34fb, true)
D	10:12:37.587	gatt.setCharacteristicNotification(8b710001-d50e-67b4-e811-0e2d1c4b0b8b, true)
D	10:12:37.588	gatt.setCharacteristicNotification(8b710003-d50e-67b4-e811-0e2d1c4b0b8b, true)
D	10:12:37.589	gatt.setCharacteristicNotification(8b710004-d50e-67b4-e811-0e2d1c4b0b8b, true)
I	10:12:37.683	Connection parameters updated (interval: 35.0ms, latency: 0, timeout: 5000ms)
D	10:12:42.973	[Callback] Connection state changed with status: 8 and new state: DISCONNECTED (0)
E	10:12:42.974	Error 8 (0x8): GATT CONN TIMEOUT
I	10:12:42.974	Disconnected
D	10:12:43.050	[Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED





  • Hello,

    Can you try to capture a sniffer trace from the failed connection? And preferrably, if you have another phone that doesn't encounter this error, perhaps you can capture a trace of that connection as well. You can use the nRF Sniffer, and store the file as the default .pcapng format and upload it here.

    What application are you running on the DK? Does it happen in the "normal" unmodified examples from the SDK as well?

    BR,

    Edvin

  • I cannot provide a sniffer trace for the connection as the phone is not with me. Secondly, i am not using a DK. It is a custom firmware on a custom board. Lastly, how do i set up the nrf sniffer?

  • Is there another solution to debug this issue? as i said , i don't have the phone with me that has the connection issue. 

  • LASHCA@PIETERSE said:
    Lastly, how do i set up the nrf sniffer?

     You can download the sniffer from here. To set it up, please follow the guide here.

    You can try to run e.g. the ble_app_uart example from SDK17.

    Does the issue occur if you run this example as well? If it does not, then there may be some request that you are not responding to, but it is difficult to say which one without either seeing this myself, or seeing a sniffer trace. Please note that there are some examples in the SDK that are marked experimental that doesn't handle all the events, which may lead to a disconnection issue.

    Another possible reason is that the application is "crashing". Does the log from the nRF say anything? Any app errors resulting in something like "Fatal error." in the log?

    The last reason I can think of is wrong LFCLK setup. This is more common when you have custom PCBs. Do you use an external LFXTAL? Or the internal RC Oscillator?If you use an LFXTAL, can you try to use the RC Oscillator by changing the following definitions in sdk_config.h:

    NRF_SDH_CLOCK_LF_SRC 0
    NRF_SDH_CLOCK_LF_RC_CTIV 16
    NRF_SDH_CLOCK_LF_RC_TEMP_CTIV 2
    NRF_SDH_CLOCK_LF_ACCURACY 1

    Does it still happen? If so, it would suggest that there is something wrong with your LFXTAL setup.

    Best regards,

    Edvin

  • Hi Edvin, I use the LFXTAL but do you think the problem is with my clock set up if this issue only replicates on a samsung device? it works fine with IOS and other Android versions. 

    a suggestion i got on the samsung developer forumn is that i should stop my device from sending an MTU request to the smartphone at all. where do i make this change?  

Related