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

Samsung Galaxy S8 cannot find nRF52 after Directed Advertisement

We have a discovery issue that seemingly only happens with the Samsung Galaxy S8.

We are using the nRF52832 with SoftDevice S132 v2.0.1, and do directed advertisements to the last connected peer when disconnecting. We do not use pairing or bonding. If we connect to a second device, such as an iPhone, and disconnect from the iPhone, the radio goes into fast directed advertising, and if it doesn't find the last connected peer, it goes to fast undirected advertising.

Our problem is that the Samsung Galaxy S8 does not discover the nRF52 after the fast directed advertising mode is over and undirected advertisements starts. We have tried having 4 different brand phones running in parallel with the nRF Go scanner app open, and only on the Galaxy S8 it cannot discover the nRF. If we restart the nRF and start immediately in fast undirected advertisement, the S8 finds the nRF instantly. Also disabling directed advertisements altogether seem to resolve the connectivity issues with the S8, but this seems like a non-solution to me as we are giving up the fast reconnect feature of having directed advertisements.

The problem appears not only with the scanner app, but also when using our own BLE Android application.

Below is the config we are currently passing to the advertising module (SDK 12.3)

#define APP_ADV_INTERVAL_FAST            20 // ms
#define APP_ADV_TIMEOUT_FAST_IN_SECONDS  30 // s

#define APP_ADV_INTERVAL_SLOW            1285 // ms
#define APP_ADV_TIMEOUT_SLOW_IN_SECONDS  BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED

static const ble_adv_modes_config_t options = {
    .ble_adv_whitelist_enabled = false,
    .ble_adv_directed_enabled  = true, // Disable this due to Samsung S8
    .ble_adv_directed_slow_enabled = false,
    .ble_adv_fast_enabled = true,
    .ble_adv_slow_enabled = true,
    .ble_adv_directed_slow_interval = 0,
    .ble_adv_directed_slow_timeout = 0,
    .ble_adv_fast_interval = (uint32_t) MSEC_TO_UNITS(APP_ADV_INTERVAL_FAST, UNIT_0_625_MS),
    .ble_adv_fast_timeout = APP_ADV_TIMEOUT_FAST_IN_SECONDS,
    .ble_adv_slow_interval = (uint32_t) MSEC_TO_UNITS(APP_ADV_INTERVAL_SLOW, UNIT_0_625_MS),
    .ble_adv_slow_timeout = APP_ADV_TIMEOUT_SLOW_IN_SECONDS
};

Are we doing anything wrong from our side, or is this most likely an issue with the BLE stack on the Samsung S8? Regardless, any ideas for fixes or workarounds would be appreciated

  • I wasn't able to reproduce this.

    1. Do you know if the S8 is attempting to connect? Or does it ignore the the directed advertising entirely.
    2. Do you really use S132 v2.0.1 with SDK 12.3.0? S132 v3.0.0 should be the one compatible with SDK 12.3.
    3. Are you able to provide some sniffer traces?
    4. Do you mind uploading a .hex file or preferably some project files I can use to reproduce it?
  • Hi Martin,

    1. The S8 is not attempting to connect, it ignores the directed advertisement entirely (we are using scanner app and our own app to verify this). We don't have the issue with other Android phones or iPhones.

    2. Yes, we are really using SD 2.0.1 with SDK 12.3, after I patched some softdevice headers to make it work. We don't have a way of updating the SoftDevice due to a bug in the bootloader from Rigado, but we still want to use the "latest" SDK. We also tried this with the nRF51 (also SD 2.0.1) , and the issue was the same there.

    3. Unfortunately the nRF sniffer tool does not work on macOS (and I don't have Windows)

    4. I can't give you our hex file, as it contains sensitive company IP (nor does it work on a nRF development board, just on our own PCB) . If I had time, I could try to make a minimal example that reproduces the bug, if I had time :)

  • Correction on 1), I always mix up the terms...

    The S8 ignores the indirected advertisements from the nRF after having seen the nRF perform a directed advertisement to a different device. If we do a directed advertisement to the S8, that works just fine.

    So steps to reproduce, with A) iPhone and B) Samsung S8:

    1. device A connects to nRF performing indirect advertisement
    2. scan for nRF on device B
    3. disconnect from device A (turn off bluetooth on device A)
    4. start directed advertisement to device A in attempt to reconnect
    5. directed advertisement timeout (BT is off on device A, so cannot connect)
    6. start indirect advertisement on nRF
    7. attempt to connect to nRF from device B, but fails

    At step 6, device B should be able to find the nRF, but it doesn't

  • So the S8 only connects on directed advertising (after going through steps 1 to 6)?

    What scanner app are you talking about? Are you able to see what kind of packets the S8 does or does not send? Just like a sniffer trace?

  • Hi guys,

    We have similar issue as Torfinn, but we are using nrf51822 and s130 with v12.3.0

    It seems that direct advertising somehow confuses Samsung S7, S7 edge and S8. Other Android phones (HTC, CAT, Galaxy S4) and iPhones are working properly.

    Our main issue is that we usually don’t see any of direct advertise message (on S7, S7 edge and S8). We didn’t noticed any problem with undirect advertising.

    We tested with custom app and with nRF Connect.

    Any idea?

    BR, Matej

Related