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

Error 8 (0x8) GATT CONN TIMEOUT On Android

NRF51422 Custom board

SD310 v3.0

Phone: LG K8 4G

Android 6.0

SDK 9.0.0 Boot-loader example

I am testing over the air DFU with our custom device.

a.) DFU using NRF Toolbox on IPhone works fine.

b.) DFU using MCP\NRF51 dongle works fine.

c.) DFU using NRF Toolbox on Android fails with "upload failed GATT error"

nRFConnect on Android can connect with our device but loses the connection after about 6 seconds and the logger captures the following error:

Error 8 (0x8) GATT CONN TIMEOUT

  • Hi,

    Could you clarify this: nRFConnect on Android can connect with our device but loses the connection after about 6 seconds

    Was your device running bootloader firmware or your application ? Did you start doing DFU before you get the GATT CONN TIMEOUT ? Or simply connecting and let it be for 6 seconds and the timeout happened ?

    Have you tried to test with other Android phone ?

    I would suggest to test changing the connection parameters setting in the bootloader to increase the connection interval, I would suggest min to 30ms and max to 60ms just to check.

  • Could you clarify this: nRFConnect on Android can connect with our device but loses the connection after about 6 seconds

    We are testing our bootloader with Android.

    When I got the Android error message I thought if I used nRFConnect/nRFLogger I could collect detailed logs to help you diagnose the problem. The failed DFU is the problem we wish to resolve.

    Was your device running bootloader firmware or your application ? Our device is running the dual bank bootloader example (with tiny modifications)

    Did you start doing DFU before you get the GATT CONN TIMEOUT ? Yes, we select our device, start the UPLOAD, the upload begins then we get GATT CONN TIMEOUT

    Have you tried to test with other Android phone ? Our customers have had success with other Android phones. I do not have access to other phone models at the moment.

    I will make the changes to the bootloader that you have suggested and report back.

  • I changed the bootloader from

    #define MIN_CONN_INTERVAL (uint16_t)(MSEC_TO_UNITS(15, UNIT_1_25_MS)) #define MAX_CONN_INTERVAL (uint16_t)(MSEC_TO_UNITS(30, UNIT_1_25_MS))

    to

    #define MIN_CONN_INTERVAL (uint16_t)(MSEC_TO_UNITS(30, UNIT_1_25_MS)) #define MAX_CONN_INTERVAL (uint16_t)(MSEC_TO_UNITS(60, UNIT_1_25_MS))

    at your suggestion.

    The DFU was then a success but very slow, compared to IPhone, at over 5 minutes.

  • Do you suggest we keep the new settings?

    Could the new settings adversely effect Android phones that currently work ok with this bootloader?

  • It's normal that increasing the preferred connection parameter will make DFU process slower and this will affect all other master devices.

    I would need to have a sniffer trace recording (with the original connection parameter) to see what exactly caused the problem.

    I was suspecting that there is a buffer overflow here because the connection was too short, but normally it should be OK with 15ms interval.

    I assume you have the same problem when testing with the original bootloader.

Related