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

S113 softdevice doesn't connect to iOS while S112 nicely does and both S113 and S112 connect properly with an android phone. Why?

I've built a custom board using nRF52832 which uses SDK 16.0.0 and softdevice version s113. A part of application is audio streaming/ decibel calculation and transmission. So I migrated from s112 to s113 for DLE feature. Other than enabling DLE, is there any difference between s113 and s112 ?

Now I tried connecting my device to an iPhone using the nRF Connect app. When I scan the device on nRF Connect and send a connection request, it get's stuck on 'connecting' and doesn't ultimately connect to the device. However, interestingly, this issue was observed on iPhone SE (2020) iOS 14.5.1, iOS 14.6 , iPhone XR iOS 14.4.2 whereas on iPhone 6S iOS 14.4.2 the device connects properly to the nRF connect app, upon testing. With s112 all the phones mentioned above have no issue in connecting to the nRF Connect app , it's only with s113.

This issue is NOT seen on an Android phone (tested on Android 11 on my oxygen OS 11.1.1 on One Plus Nord).

Where is the root of the issue ? Is it an IOS issue ?  Or a newer model of iPhone issue ? If yes, then what exactly is casuing the issue and how can we mitigate this without changing the Softdevice ? If no, then what exactly is the issue and how can we go about it?

  • So I migrated from s112 to s113 for DLE feature. Other than enabling DLE, is there any difference between s113 and s112 ?

     From the release notes of S113

    Page 14
    
    The s113_nrf52_7.0.0 is the first production release of this SoftDevice variant. The S113 contains all the
    features present in the s112_nrf52_7.0.0 SoftDevice. In addition, it includes the LE Data Packet Length
    Extensions, Connection-Oriented Channels in LE Credit Based Flow Control Mode, and the ability to
    trigger a task, for example a GPIOTE task, at the start of a connection event. The S113 API is a
    compatible superset of the S112 SoftDevice API and a compatible subset of the S132 and S140
    SoftDevice APIs. For features that are common to S112, S113, S132, and S140, the Application
    Programming Interface (API) is the same. To show the API compatibility, the S113 follows the same
    version numbering as S112, s132, and s140. For features that are available in the S113 compared to the
    S112 v 6.1.1, see section "New functionality" below.

    It looks to me that the the IOS sees new features in your S113 compared to S112 and might be trying to initiate some newer procedures for which you application needs to respond. Normally these are communicated to your application using softdevice events. If your application has not implemented or responded to this softdevice event, then most likely IOS waits for supervision timeouts and disconnects. 

    I would recommend you to get a details air traffic sniffer to see if there is any event that the IOS is expecting your application to respond.

Related