Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Galaxy S5 can't scan Bluetooth devices

Hi,

    SDK15.2

    Softdevice: S132 6.1.0
    Device: NRF52832

    Mobile phone:Galaxy S5  (Android 6.0.1)

   I have a problem with the Galaxy S5 can't scan Bluetooth devices.
   During the test, I found that when the device name is 3 or 4 characters, S5 cannot scan the Bluetooth device. The other device names can be scanned by S5.

   I modified the example ble_app_uart, changed the device name to "1234", and S5 could not scan the Bluetooth device broadcast.

   Scanning a Bluetooth device with the nrf connect app is very strange, please check the attached video. I am sure the Bluetooth device address around me is different.

Parents
  •  Modify the example ble_app_uart (SDK12.3) device name is "1234", S5 can scan to the device normally.
    SDK14.2 and SDK15.2 are not normal

  • Hi,

    The only thing that is different, is that we starting from SDK 14 are using channel select algorithm(CSA #2). This is a mandatory feature in Bluetooth version 5, and can not be disabled. In the Advertising channel PDU Header, shown in the picture below, this is one bit that is changed from 0 to 1. This was added starting from S132 v.5(SDK14). It seems that the phone does not handle this small change, and is therefore not able to parse the data correctly. This is then be a bug with phone, and unfortunately nothing we at Nordic can do anything about.

    Advertising channel PDU Header in Bluetooth 5.0:

  • I will update the firmware of my mobile device before I try.

    thank you for your reply

  • Sigurd,

        Modify the code of the initialization part of the Advertising data, the problem is solved.
    What is the risk of doing this?

       I only know some basic Bluetooth specifications, not very clear about the specific details.

    //    init.advdata.name_type          = BLE_ADVDATA_FULL_NAME;
    //    init.advdata.include_appearance = false;
    //    init.advdata.flags              = BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE;
    
    //    init.srdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
    //    init.srdata.uuids_complete.p_uuids  = m_adv_uuids;
    
        init.srdata.name_type          = BLE_ADVDATA_FULL_NAME;
        init.advdata.include_appearance = false;
        init.advdata.flags              = BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE;
    
        init.advdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
        init.advdata.uuids_complete.p_uuids  = m_adv_uuids;

  • Interesting to see that putting the name into the scan response packet fixed the issue. It should not be any risk to do this, but it depends on what criteria the central connects on, since you now moved the UUID to the normal advertising packet. Is the UUID in the advertising packet parsed correctly by the S5 phone?

Reply Children
Related