1

I'm developing an external device, this device has a large amount of data to be sent via Bluetooth to the iphone / ipad, but sends a very slow speed is only about 60kbps.

The device sends data to the PC speed is 256kbps, I think not because of device problems. Who knows the iOS Bluetooth maximum speed is?

Information: Use external accessory framework, Bluetooth 2.0 + EDR

Thanks,

Zhi Ma
  • 11
  • 2

1 Answers1

5

I know this is a bit late, but based on all the work I've been doing, the iDevice's are generally slower than PC/Android over Bluetooth. This is due to internal restrictions of the device, but also depending on how you're doing your data transfer (packet sizes, frequencies, latencies, packet overhead, buffer sizes, etc...), that could slow you down as well.

Another issue is that depending on the BT module you're using, I've seen HUGE variations (factor of 10) in how much data they can pass to iOS devices (even though they can all push to Androids at 300kbps).

When communicating with an iOS device, there is some additional overhead during packet handling and the protocols used, and if the BT firmware developer doesn't handle this correctly, you'll see performance implications. These numbers also change device to device and iOS version to iOS version.

To give you some concrete numbers, with one of my BT modules, here were my results (the highest I've seen so far):
iPad Mini running iOS 7.0.4 - 18,500-20,500 bytes/s
iPhone 5S running iOS 7.0.4 - 14,000-15,000 bytes/s
iPod Touch running iOS 7.0.4 - 16,000-17 000 bytes/s
iPod Touch running iOS 6.1.3 - 19,000-20,000 bytes/s

The last test there shows you that the iOS version itself can also have a large impact. Note, these were all done with the same BT module, 3-4 runs per test.

Edit: I added a bit more context here: http://www.sureshjoshi.com/embedded/bluetooth-classic-apple-french/

SJoshi
  • 1,866
  • 24
  • 47
  • How big were the data blocks you sent over? How much time between each cycle? Did you wait for ACK after every packet? Thanks. – Gal Jul 02 '14 at 15:00
  • 1
    @Gal Unfortunately, as this was a few months ago, I don't recall the specifics. Generally, my testing was done with 2 additional variables: Packet size and time between packets. For packet size, I found that packet size didn't make a huge difference, since I ended up hitting the iOS throughput limit anyways (the differences were within test variance in any case). The two sizes I ended up using were 50 byte packets and 500 byte packets. For time between packets, the BT module I use had some crash problems when I had duration between packets, but generally I either had it at 5ms or 0ms. – SJoshi Jul 04 '14 at 05:58
  • @Gal Also, regarding the ACK, are you referring to BT Classic communication? Or Bluetooth Low Energy? – SJoshi Jul 04 '14 at 06:03
  • The communication protocol under the hood was synchronous, I believe (bytes acknowledged on both sides). – SJoshi Jul 07 '14 at 14:39
  • What kind of device had you? I understand that connection was made with EAFramework (iAP over BT) – SiMet Jan 13 '15 at 17:14
  • For those using RN42, see the answer to this question: http://stackoverflow.com/a/20027422/4495850 In summary: "When the RN42 is used to communicate with an iOS device, it cannot communicate faster than 2.5-3kB/s... If it's used to communicate with an Android or computer or anything else, it can transfer at 35kB/s (over SPP)." – Richard Mar 13 '17 at 21:54