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

Max. throughput on BLE UART using coded phy

Hi!

I am evaluating BLE UART Demo with longe range (BLE_GAP_PHY_CODED). 

Max. data throughput (using different parameters for ATT_MTU size and connection inverval) seems to be aroung 3 KB/s. 

Can anyone confirm this? Shouldn't there be a higher throughput possible under good conditions?

Thanks!

Andreas

  • Hi!

    I have two PCA10056 and two PCA10059. As far as I see it, I would need a third PCA10056 to run the sniffer on?

    Did you or someone else have some real results with this setup (example and PCA10056)? I think your mentioned 80-90 kbps is just an estimation, right? I read another post and tried connection intervall 400 and data length 247. I can get 57 kbps. Is this the practical limit?

  • You can use a PCA10040 or a PCA10056 as the sniffer, and two PCA10059 as the BLE peers. Do note that the sniffer does not support Coded PHY yet, but we're interrested in finding the true Connection interval so it does not really matter in this case.

    I just estimated 80-90kbps as being 1/8th of a decent 1mbps link. There is one factor that might reduce the throughput and that is packet loss. Coded PHY is more susceptible to interference because of its packets being 8 times as long, this in turn means that you will have to re-transmit packets that are themselves more susceptible to noise. 
    I suggest lowering the MTU and DLE to 1/8 of maximum as well as decreasing the Connection Interval to 400/8 = 50ms, and event length of 50ms. This way you'll reduce both the chance of packet loss and the time it takes to re-transmit a lost packet. 

    I can get 57 kbps. Is this the practical limit?
    It might be, I've not checked myself, I'll do that tomorrow. 

    What's your Supervisor Timeout and Slave Latency settings?

  • Supervisor timeout is 4 seconds an slave latency is 0.

    I really would appreciate if you could try this tommorow. Thanks.

  • You really should increase the slave latency to at least 5. If you miss a connection event with a slave latency of zero then your link is dead and you'll spend time re-initiating the link. This is true for all BLE links.

  • If I set the slave latency to 2 (if higher app crashes?) than throughput decreases from about 57 kbps to 17 kbps?

    another question: What is the difference between the ATT MTU Throughput Example and UART Example? I can't get the same througput from the UART as from the ATT MTU?

    Sorry for all that questions, but I am fairly new to BLE...

Related