Characteristic values swapped on iOS

Hi,

I very much doubt this is a SoftDevice issue but sticking it out there as an Apple dev asked me.

Short story is I have users in production using an App connecting to NRF52810 and occasionally but not often iOS returns the value for a different characteristic. For this to happen at SoftDevice level it would have to be rewriting or iterating the Gatt table incorrectly I think (I don't rewrite it, it's configured at boot and that's it) with some sort of race condition. As far as I know it's never happened on Android.

Still worth a check if any similar behaviour has been seen before. SoftDevice is v6.1.0. I would use a later SoftDevice but Nordic refuses to make a minimal SoftDevice for DFU update or to opensource the softdevice so I can make one, so the version is stuck (rant rant).

https://developer.apple.com/forums/thread/817515

https://github.com/dotintent/react-native-ble-plx/issues/1316


  • Hi Andrew

    With the SoftDevice v6.1.0 being very mature at this point (released 7 years ago), I doubt an issue like this would go under the radar for that long, and I can't find or recall any reports like this in the past. 

    I was going to recommend using the Service Changed indications, but since you are working on the nRF52810 I assume you're not using the S132 or S140 SoftDevices. I'm not sure, but does iOS maybe have something equivalent? 

    If you have an nRF52 DK/Dongle available, you can use the nRF Sniffer with Wireshark to get information on what's going on over-the-air that might point you in the right direction.

    Best regards,

    Simon

  • Hi Simon,

    I can't replicate it unfortunately, it's not occurring often and the users in production aren't tech savvy.

    I'm aware of the service change indications but I'm not changing the services they're configured before softdevice is enabled. Even if iOS was using a previous cache (not sure why it would) the cache would match that after the peripheral had reset and reconnected.

    Anyhow just a quick check I'm mostly confident the issue isn't on peripheral side.

Related