Keep loosing BLE connection from iPhone NANO 33 BLE

I'm working on a some what simple project, using a UBLOX ZED F9P GNSS breakout board, and the Arduino NANO 33 BLE, to create an external GPS. just to accommodate any questions of why, it's a prescission issue.

Currently I'm using the I2C connection, to receive the NMEA and to send some RTK data back to the GNSS chip, all is relayed via the BLE/ GATT with one service call gnss and two characteristic, called NMEA, that receives data and RTK that receives a small byte stream, and parses it on to the GNSS chip also on I2C.

My problem is! When connecting to the iPhone, the connection tends to drop after 2-3 minutes. all the test I doo while changing the sketch dose sometimes make it stabile, but then I try it our on a other bread board with other components (the same, with same wiring) thens it failed.

I have an idea, that the issue is the communication with the gnss, is blocking some BLE and then creates a timeout or something like that, but I can't get my head around fixing the issue.

Pleas if any one have som ideas, let me know

When set up right both Android and iOS support huge data exchange fine (as it’s more and more frequent to see device firmwares update through BLE) - so i would suspect something wrong in the way you set up the connection.

Most disconnect with BLE I have seen come from issues with the connection parameters

A common one is the connection interval being too fast on the peripheral. mobile OS versions have varying minimums and Android does not agree with iOS leading to different behaviors.

From the top of my head I think that recent Android devices can support a connection interval as low as 7.5 ms, whereas iOS devices will expect at least 15ms.

There is also variation on the ability to exchange multiple packets during one interval where iOS and Android have different ways to handle that, so actual throughput is not just based on this minimum interval. (Basically there is a protocol to tell the other party you have more data to send and can do so within the same connection interval).

Older OS versions or hardware may have different capabilities as well, leading to possibly 30ms or more.

➜ I would deep dive into those parameters and may be use some sort of sniffer to see which side is issuing the disconnect.

Thanks some good thoughts, that I will look in to, how ever the same code on iOS using another BLE breakout board and using the same GNSS breakout board, is working fine, I do believe that it is a issue with my sketch when reading the data I get from the phone and write it to the gnss chip

OK. I would "fake" the access that you suspect is creating issues to just playback some canned data and see if the connection is lost or not