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

Extended advertising (nRF52833 + S140) - Samsung S20+ can't connect, Huawei P30 can

So, we have a problem that the new Samsung S20+ phone is not able to connect to the nRF52833 if extended advertising is enabled (using nRF Connect for Mobile app).

The phone can see the device, but fails to establish the connection with the device in either PHY_1M or PHY_CODED modes. There is no event generated in the firmware when connection is being established. The phone shows 'Connecting' and then times out. If extended advertising is disabled, the phone can connect to the device with PHY_1M.

On the other 'hand', we have a Huawei P30, which has no issue connecting to the same device in either mode.

I would contact the Samsung support directly, but I guess Nordic has better 'ties' with appropriate engineers at Samsung...

  • Okay, the GATT ERROR (0x85) is unfortunately very general and can be a bunch of things. Do you see this error on both devices or just one end? In that case, where do you see it? I also recommend making a support ticket with Samsung's support channels as well, as you're only seeing this on a Samsung device. You can also test on more mobile devices to see if the error propagates elsewhere if you have the opportunity.

    Can you upload a snippet of your code (advertising init) where you include extended advertising, etc., so I can have a look to see that everything seems correct?

    Best regards,

    Simon

  • We see the error only on the Samsung device after 'Connecting' status. The other phone connects immediately.

    The ble_evt handler (nrf_sdh_soc_evt_observer_t) is not called during the unsuccessful connection establishment.

    void advertising_init(void)
    {
    	ret_code_t             err_code;
    	ble_advertising_init_t init;
    
    	memset(&init, 0, sizeof(init));
    
    	init.advdata.name_type               = BLE_ADVDATA_FULL_NAME;
    	init.advdata.include_appearance      = true;
    	init.advdata.flags                   = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;
    	init.advdata.uuids_complete.uuid_cnt = 0;	
    	init.advdata.p_manuf_specific_data   = &manufData;	
    	
    	init.config.ble_adv_fast_enabled  = false;
    	init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;
    	init.config.ble_adv_fast_timeout  = APP_ADV_DURATION;
    	
    	init.config.ble_adv_slow_enabled = true;
    	init.config.ble_adv_slow_interval = APP_ADV_INTERVAL;
    	init.config.ble_adv_slow_timeout = 0; // Never timeout
    
    	init.evt_handler = on_adv_evt;
    	
    	init.config.ble_adv_extended_enabled = true;
    	init.config.ble_adv_secondary_phy = BLE_GAP_PHY_1MBPS;
    	//init.config.ble_adv_primary_phy = BLE_GAP_PHY_1MBPS;
    	init.config.ble_adv_primary_phy = BLE_GAP_PHY_CODED;
    
    	err_code = ble_advertising_init(&m_advertising, &init);
    	APP_ERROR_CHECK(err_code);
    
    	ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG);
    }
    
    void advertising_start()
    {
    	ret_code_t err_code;
    		
    	err_code = ble_advertising_start(&m_advertising, BLE_ADV_MODE_FAST);
    	APP_ERROR_CHECK(err_code);
    }

    Anyway, we have now found an alternative way in order to avoid the use of extended advertisements.

  • Simonr said:
    Do you see this error on both devices or just one end?

    By both devices, I meant both the Samsung as well as the debugging on the nRF side. Do you see this error when logging on the nRF device as well? 

    Please try adding adv_params.properties.scannable = 1; and adv_coded = false; when advertising with the 1MBPS PHY. Take a look at this case where a customer has implemented switching between 1MBPS and CODED PHY advertising.

    Best regards,

    Simon

Related