Bluetooth Transmission Rate Setting

How can I increase the bluetooth data transmission rate on an RSL10 project?
My custom board is based on the RSL10-Sense-GEVK. My RSL10 app is based on the ics_example project.
I need to transmit large amounts of data, and I send it as 128 byte chunks. My app is working perfectly except for the bluetooth data transmission speed.
Currently, the effective baud rate seems to be about 9600. I need at least 115200 baud (like we get with our bluetooth 3 products), or ideally, we’d like to achieve the 2M baud that the RSL10 claims to be able to do.
Is there a simple setting that I am somehow overlooking?

Thanks

@ken1

Please refer to our RSL10 peripheral_server_UART and central_client_UART projects.

The UART interface has baud rate of 115200.

image

Thank you for using our community forum!

Thanks, Martin, but your answer deals with a wired USART connection and its baud rate. I do not use the USART nor do I use its pins. I need the data transmission over the bluetooth 5 radio link to be much faster than it is in my application. The effective bit rate that I get is about 9600. This is very slow. I need to send data over bluetooth much faster. How can I increase the data transmission speed? I can’t find information that tells me how to increase the speed in the ics_example project.
To send and receive data I’m using the TX_VALUE characteristic and the RX_VALUE characteristic from the ics_example project.

Hi @ken1,
The data transmission over BLE 5 radio link is 2Mbps (Max). This is Bluetooth spec.
What is your mean “I get is about 9600”? is it baud rate?

I guess your code might not enable 2Mbps for RSL10.
Based on peripheral_server_uart project, you might use this in your code to increase MTU size and set PHY to 2Mbps. You need reference our peripheral_server_UART.

I’m starting to suspect that the reason for the slowness of my RSL10 bluetooth data rate is the slowness of the computer’s bluetooth interface. Even if the RSL10 bluetooth is working at 2Mbs, the effective data rate is very slow. I tried repeating a small transaction where I send the letter “L” and receive back a “1” or a “0”, and this can only run about 9 or 10 times per second. I would expect it to run thousands of times per second. I tried something similar on your BLE Explorer Software and Dongle and found the same thing: the effective data rate is less than 0.030720 Mbps, which falls quite short of the hoped-for 2Mbps.

Here’s the procedure I used for checking how fast data can move in the BLE Explorer software and dongle:

First, I copy ics_example into my workspace. Then I change ICS_CHARACTERISTIC_VALUE_LENGTH from 20 to 128 in BLE_ICS.h. In the RSL10 BLE Explorer, I write a 128-byte value to the RX characteristic. I click on ‘Read’ in the TX characteristic, and then hold down the enter key to read continually. The Bluetooth connection cannot keep up with the number of reads requested.

If a keyboard repeats 30 times a second, the number of bits received per second should be at least 128 * 30 * 8 = 0.030720 Mbps. It can’t even do that.

How can I improve the very slow software overhead for each BLE transaction? What is taking all the time (in your software and mine)?

Hi @ken1 ,

  1. How you verify 2Mbps work? you used the Bluetooth sniffer? Do you have sniffer data to share?
  2. I don’t know how you calculate the speed. I suggestion using two RSL10 EVBs.
    One is for TX and one is for RX. TX side keeps sending notification data and RX side uses a kernel timer to calculate the total received data per 10s (for example) and print out.
  3. Then you can know the real data speed.
1 Like