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

BLE device discovered as "accessory" on iOS devices

Hi,

We've been developing an peripheral HID over BLE using Nordic's SDK, connecting with iOS, Android, and Windows devices. (Board: nRF52832, SDK 14)

We've noticed an issue only with iOS devices in the discovery stage. On the first discovery, the device appears as "Accessory" on the Bluetooth menu.

After refreshing the menu, the device appears with its intended name, and then cached on the iOS device with the correct name. Subsequent discoveries show the correct name.

We can reproduce the issue by setting a new MAC address on the peripheral, so it is rediscovered as "Accessory" again on first discovery (bypasses the cache).

Right now we're sending the device name only using the srdata field (BLE_ADVDATA_FULL_NAME) since we've used all the 31 bytes in the advdata (using it mostly for UUID info). All the data is passed to the ble_advertising_init() function.

As a test we removed the include_appearance field and used it to send a short name. This seems to work and the iOS device displays the short name immediately on first discovery.

It seems then that iOS devices latch on to the name in the advertising data, and don't refresh it automatically in the Bluetooth menu to include the name sent in the scan response.

Is there a way around this? could we be doing something wrong?

Thanks

  • Hello,

    I have not noticed that it will show up default as "Accessory" before, but I see that on the computer, if I set BLE_ADVDATA_NO_NAME in advertising_init, it will show up as "Keyboard" on my computer's bluetooth settings, and first when I connect to it, it will display the name eventually.

    I assume this is the same that is happening on the iOS device. If the iOS device later gets the name of the device, it will store this for the next time it advertises. You will see this if you connect to it, change the name of the device in the source code, it will still show up as the old name until you connect to it once more.

    As far as I know, there is no way around this, but maybe someone else on this forum knows something about iOS that I don't know?

    Best regards,

    Edvin

Related