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 have the same issue re refusal of the Android phone to connect to the directed advertisement (though it does work when the directed advertisement times out and switches to fast advertising). Wireshark shows that the central's public MAC is correct in the packet (matches that reported by phone), but central just wont connect via the directed advertising packet. Thankfully, after directed advertising times out (1 minute in my case), fast advertising starts and the central then immediately reconnects to the peripheral. I am using SDKV6.0 soft device 132. 

    I had hoped to use directed advertising as a kind of single MAC whitelist, only allowing the previous central the chance to reconnect per power-cycle of my peripheral. Turns out that directed advertising simply is not reliable/predictable enough across a range of devices and thus should not be used. My test device's: Galaxy S7 (android 7.1), Google Nexus 5 (Android 6.0.1) and Samsung Note 8 (Android 8.0)  -->None of these can reconnect to the peripheral using the directed advertising packets. Tested using nRFConnect and also my own App, my App makes a connection direct to the peripheral MAC - no filter is used (I am aware that directed advertising includes only the peripheral and central MAC's and no name, UUID etc).

    Link to my original thread: https://devzone.nordicsemi.com/f/nordic-q-a/39950/directed-advertising---how-to-make-it-work

    'Kenneth' on thread above responded re how to detect from the peripheral whether the central supports directed advertising, which could then be used to choose what to do - but this does not work in my case (single MAC whitelist).

    Basically, don't waste your time (I have spent 2 days on this) - directed advertising does not work correctly across all devices. Use fast advertising and the whitelist module instead. <Sigh>.

    Nigel

Related