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

Parents
  • You should try the Experimental: ATT_MTU Throughput Example.

    You should be able to get almost 1/8th the throughput of 1mbps who's about 700kbps practical limit. I'm guessing that you should be able to get 80-90kbps with Coded PHY on a decent link. 

  • Thank you for your reply.

    I am already playing around with this example but I cannot get more than 32 kbps even if the boards are close together. I am using coded phy, connection interval 7.5 ms, GAP event length 400, data length 244, ATT MTU size 247.

    Changing connection interval or other parameters does not increase throughput...

  • Can you share the UART log, I'd like to see if the negotiated parameters are what you think they are. A sniffer trace would also be very helpful. 

  • Well, UART log is simple, but how to make a sniffer trace?

    throughput example:~$ config print
    ==== Current test configuration ====
    Board role: tester
    ATT MTU size: 247
    Data length: 27
    Connection interval: 6 units
    Connection length ext: on
    Preferred PHY: Coded
    GAP event length: 400
    throughput example:~$ config data_length 244
    Data length set to 244.
    throughput example:~$ run
    [00:00:00.083,435] <info> app: Preparing the test.
    [00:00:00.083,465] <info> app: Starting advertising.
    [00:00:00.083,587] <info> app: Starting scanning.
    [00:00:00.087,707] <info> app: Connected as a peripheral.
    [00:00:00.087,738] <info> app: Discovering GATT database...
    [00:00:00.087,768] <info> app: Sending PHY Update, Coded.
    [00:00:00.003,692] <info> app: Data length updated to 244 bytes.
    [00:00:00.010,894] <info> app: ATT MTU exchange completed. MTU set to 247 bytes.
    [00:00:00.084,075] <info> app: PHY update accepted. PHY set to Coded.
    [00:00:00.009,002] <info> app: AMT service discovered at peer.
    [00:00:00.016,540] <info> app: Notifications enabled.
    [00:00:00.022,216] <info> app: Test started
    [00:00:00.005,401] <info> app: Sent 1 KBytes
    [00:00:00.018,737] <info> app: Sent 2 KBytes
    [00:00:00.031,951] <info> app: Sent 3 KBytes
    [00:00:00.060,302] <info> app: Sent 4 KBytes
    [00:00:00.018,066] <info> app: Sent 5 KBytes
    [00:00:00.005,706] <info> app: Sent 6 KBytes
    [00:00:00.034,027] <info> app: Sent 7 KBytes
    [00:00:00.006,774] <info> app: Sent 8 KBytes
    [00:00:00.027,526] <info> app: Sent 9 KBytes
    [00:00:00.048,339] <info> app: Sent 10 KBytes
    [00:00:00.028,564] <info> app: Sent 11 KBytes
    ...
    [00:00:00.030,822] <info> app: Sent 1020 KBytes
    [00:00:00.074,157] <info> app: Sent 1021 KBytes
    [00:00:00.091,918] <info> app: Sent 1022 KBytes
    [00:00:00.041,992] <info> app: Sent 1023 KBytes
    [00:00:00.029,724] <info> app: Sent 1024 KBytes
    [00:00:00.004,119] <info> app: Done.
    [00:00:00.004,119] <info> app: =============================
    [00:00:00.004,119] <info> app: Time: 378.844 seconds elapsed.
    [00:00:00.004,150] <info> app: Throughput: 22.14 Kbps.
    [00:00:00.004,150] <info> app: =============================
    [00:00:00.004,150] <info> app: Sent 1048712 bytes of ATT payload.
    [00:00:00.004,150] <info> app: Retrieving amount of bytes received from peer...
    [00:00:00.010,498] <info> app: Peer received 1048712 bytes of ATT payload.
    [00:00:00.010,498] <info> app: Disconnecting...

    I did a test with 1M. There i get Throughput of around 260 kbps. So 1/8 would be around 32.5 kbps on coded PHY which I can see under good conditions. It seems that regardless of actual PHY my set-up is to "slow"...

Reply
  • Well, UART log is simple, but how to make a sniffer trace?

    throughput example:~$ config print
    ==== Current test configuration ====
    Board role: tester
    ATT MTU size: 247
    Data length: 27
    Connection interval: 6 units
    Connection length ext: on
    Preferred PHY: Coded
    GAP event length: 400
    throughput example:~$ config data_length 244
    Data length set to 244.
    throughput example:~$ run
    [00:00:00.083,435] <info> app: Preparing the test.
    [00:00:00.083,465] <info> app: Starting advertising.
    [00:00:00.083,587] <info> app: Starting scanning.
    [00:00:00.087,707] <info> app: Connected as a peripheral.
    [00:00:00.087,738] <info> app: Discovering GATT database...
    [00:00:00.087,768] <info> app: Sending PHY Update, Coded.
    [00:00:00.003,692] <info> app: Data length updated to 244 bytes.
    [00:00:00.010,894] <info> app: ATT MTU exchange completed. MTU set to 247 bytes.
    [00:00:00.084,075] <info> app: PHY update accepted. PHY set to Coded.
    [00:00:00.009,002] <info> app: AMT service discovered at peer.
    [00:00:00.016,540] <info> app: Notifications enabled.
    [00:00:00.022,216] <info> app: Test started
    [00:00:00.005,401] <info> app: Sent 1 KBytes
    [00:00:00.018,737] <info> app: Sent 2 KBytes
    [00:00:00.031,951] <info> app: Sent 3 KBytes
    [00:00:00.060,302] <info> app: Sent 4 KBytes
    [00:00:00.018,066] <info> app: Sent 5 KBytes
    [00:00:00.005,706] <info> app: Sent 6 KBytes
    [00:00:00.034,027] <info> app: Sent 7 KBytes
    [00:00:00.006,774] <info> app: Sent 8 KBytes
    [00:00:00.027,526] <info> app: Sent 9 KBytes
    [00:00:00.048,339] <info> app: Sent 10 KBytes
    [00:00:00.028,564] <info> app: Sent 11 KBytes
    ...
    [00:00:00.030,822] <info> app: Sent 1020 KBytes
    [00:00:00.074,157] <info> app: Sent 1021 KBytes
    [00:00:00.091,918] <info> app: Sent 1022 KBytes
    [00:00:00.041,992] <info> app: Sent 1023 KBytes
    [00:00:00.029,724] <info> app: Sent 1024 KBytes
    [00:00:00.004,119] <info> app: Done.
    [00:00:00.004,119] <info> app: =============================
    [00:00:00.004,119] <info> app: Time: 378.844 seconds elapsed.
    [00:00:00.004,150] <info> app: Throughput: 22.14 Kbps.
    [00:00:00.004,150] <info> app: =============================
    [00:00:00.004,150] <info> app: Sent 1048712 bytes of ATT payload.
    [00:00:00.004,150] <info> app: Retrieving amount of bytes received from peer...
    [00:00:00.010,498] <info> app: Peer received 1048712 bytes of ATT payload.
    [00:00:00.010,498] <info> app: Disconnecting...

    I did a test with 1M. There i get Throughput of around 260 kbps. So 1/8 would be around 32.5 kbps on coded PHY which I can see under good conditions. It seems that regardless of actual PHY my set-up is to "slow"...

Children
Related