As stated in standard the maximum data rate is 0.27Mbps. So is that is true for nRF8001 ??
As stated in standard the maximum data rate is 0.27Mbps. So is that is true for nRF8001 ??
Around 20ms, what Apple supports (from another post):
If you're working with Apple devices, it's useful to be aware of the fact that they have their own document detailing their recommendations for connection parameters. This document can be found here: https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf
The reason I asked about the connection interval was that I couldn’t get your numbers to add up; at 20 ms you should be able to get a data throughput of about 8*20 bits * (1000 ms / 20 ms) = 8kbit/s Notifying, and 3 – 4 times that when receiving writes from the peer.
I paste a new reply from the Nordic employee who just corrected his reply:
Ole Morten44 minutes ago I just realized my calculations were wrong by a factor 8... If you read the above as kilobytes per second, not kilobits, they are correct. The throughput of nRF8001 is hence 0.67 kBps or 1-2 kBps (or 5-6 kbps and 10-16 kbps), given a 30 ms connection interval. Sorry for the confusion!
Now that we understand the theory behind the communications using BLE and the nRF8001 stack, I would like to state clear the theoretical and experimental numbers. I think it is a really valuable information for the community of developers:
nRF8001 Max Throughput: It can send only one packet and receive two-three packets for each connection event. Each packet contains 20 bytes.
With iOS, this becomes 0.67 kBps or 1-2 kBps (or 5-6 kbps and 10-16 kbps), given a 30 ms connection interval.
Receive packets in the iPhone every 32ms. 1 packet each 32ms -> 31 packets/sec -> 620Bps -> 4960bps
Please, if anyone has a counter example, feel free to add it to these numbers. Figures for Android devices are also welcome.
I'm trying to use this as a solution for transmitting SteamVR positional information to a mobile device. In my 20 byte packet im packing the following:
For a total of 13bytes out of the 20bytes allotted. My data is being fed from Serial USB and I'm transmitting this information to my mobile device as fast as I can. I've tried the follow:
All of which yielded roughly around 30fps of data received at the mobile device although my experience was running at 60+fps on my zenfone AR in a fairly empty VR scene.
I'm going to try to use wifi now. But it seems pretty consistent with the data provided above.