Connection Loss / Max range on swift

Hardware revision [0.2]
Firmware revision [1.5.0]
Model number [6]

Device model [iPad Pro (11 inches)]
OS version [13.4.1]


We developed a python base solution for gesture recognition on accelerometer data, thanks to a Metawear C device. We recently bought some others devices to adapt the solution on iOS, thanks to the Swift API. Unfortunately, we observed many connection losses between the iPad and the accelerometers.

We then wrote a small python code to analyze data sent by the accelerometer. This code corresponds to the python.txt file. Basically it consists of different records of the accelerometer in different situations: We start at rest on the same table than the receiver, we then move the accelerometer on the table, under the table, we bring it to an other room 5 meters far from the receiver, move in that room and come back. As a result, we saw some packages lost at long distance but the signal was mainly transmitted.

We then performed the same experiment with the Swift API. We modified the DeviceControllerView of the Template App in the iOS SDK, to include a Start and a Stop button. Please find the corresponding file, swift_test.txt, included. Please also note that the aggregated data are not written on disk, as for the python version, but printed on the terminal when the stop button is pressed.

We performed the experiment several times and observed the same pattern:
On press of the Start button, the experiment starts. Everything works well until we move more than 2 meters far from the receiver. Then the streaming stops and nothing is printed anymore in the terminal, nor new data aggregated.
Press on the stop button will eventually work, but the stream has already been broken.

Since our target users could move from their iPad a bit, we would like to know how to solve these stream losses.

Bests regards,


  • If you lose the signal while you stream, why not use logging instead?

  • Hello,

    We aim to provide an on-the-fly motion control service on a iPad application. So the use of streamed data is crucial for us.

  • I am not sure you have a choice if the sensor gets too far from the iPad, the connection drops.
    Bluetooth has about 30 meters in range (100 feet max).
    You can try to augment the antenna strength using our APIs to see if that helps but at the end of the day, Bluetooth just doesn't have very long range like Wifi or 3G/4G/5G does.

  • Hi Laura,

    First thanks for your answer, however I'd like to clarify the problem.
    Currently we are experiencing two major issues, first of them is the range of the sensor.
    When using the Python API everything runs smoothly with a range of around 10m (coherent with the BLE specs) however with the Swift API the range drops below 1m !
    Hence it appears that the problem is indeed coming from the software part and not the hardware, can you provide any insight on this matter ?


  • Hi Thomas,
    We don't have this issue on our side, nor have any other folks reported similar issues. In fact usually the Swift API is better than Python.
    I strongly suggest you check your devices. It's likely a hardware issue on your side.

  • edited August 2020

    Hi Laura,
    Well i don't really know how to say that, but we already have bought 3 accelerometers from you, and we have the same problem with each of them, as I said it before, we have no issue with the Python API (it's nt clear to me what do you mean by "better than Python") so it appears that it is very unlikely to be a hardware issue isn't it ?

  • You would need to quantify this issue and send us replicable steps to look into it. Currently all users are reporting Swift > Python. That being said, maybe your Linux based dongle is simply better than the default Bluetooth antenna on your iOS device. Again, this would be a hardware related issue.

  • @Laura
    I am also having same problem in iOS.

  • edited December 2020

    Have any of you tried to change the BLE connection settings between the devices? This might solve your issue.
    Also, when iOS updated to BLE5, the default conn settings changed.

Sign In or Register to comment.