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

Throughput (Speed) Test

Hello Sirs,

We implemented a joint bandwidth test (or speed test) for a radio channel by transmitting notifications.

Parameters set in SDK config:

  • #define NRF_SDH_BLE_GATT_MAX_MTU_SIZE  247;
  • #define NRF_SDH_BLE_GAP_DATA_LENGTH      251;
  • #define NRF_SDH_BLE_GAP_EVENT_LENGTH   320;

Parameters of the radio channel:

  • PHY 1M;
  • Connection interval 50 ms (40 units);
  • Transmiter power 0 dbm;

After the connection is established and the exchange of parameters, the host allows the transfer of notification characteristics of the test characteristic(size 244 bytes). Next, the device in the loop begins to send data.

According to the data plotted. I attach his part below.

The average speed was 73 kB / s. But the range is from 35 kB / s to 80 kB / s.

If I understand correctly, this is due to the peculiarity of the protocol. namely, transmission within the connection interval to the first error. As a result, during one connection interval, data can be transmitted, for example, 50 ms, and in the next only 10.

The question is: is it possible to somehow stabilize the data flow?

Thanks, 

Max

Parents
  • s a result, during one connection interval, data can be transmitted, for example, 50 ms, and in the next only 10.

    That is in essence the reason yes, and also why I recommend to always use the shortest possible connection interval.

  • Hi,

    I suspect the max speed may drop yes with shorter interval, but you will get more consistent results, and I expect even better results in environment with interference. I don't think there is any specific "rule" here, but I would consider longer packets is always preferred if possible (less time on-air, less risk of collision, more time to transmit packets).

    CheMax said:
    "expand the connection interval event"

    That is a nordic implementation/feature that allow the BLE event to extend beyond the default configured BLE event length.

    Best regards,
    Kenneth 

  • Thanks, about the intervals and the length of the packets, I understood.

    What about other influencing factors:
    Power level set upon connection

    case BLE_GAP_EVT_CONNECTED:
        NRF_LOG_INFO("Connected");
        m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
        err_code = nrf_ble_qwr_conn_handle_assign(&m_qwr, m_conn_handle);
        APP_ERROR_CHECK(err_code);
    
        /*-40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, +2dBm, +3dBm, +4dBm, +5dBm, +6dBm, +7dBm and +8dBm.*/
        uint32_t err_code = sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_CONN, p_ble_evt->evt.common_evt.conn_handle, 4); 
    	APP_ERROR_CHECK(err_code); 
    
    	NotifyEvent.flags.fConnect = true;
        xTaskNotify(hDevCtrl, NotifyEvent.Value, eSetValueWithOverwrite);
    break;

    Will it be fixed (both for a distance of 0.1m and 10m) or will the chip reduce the signal power at a short range?

  • It's fixed yes, as configured by sd_ble_gap_tx_power_set().

Reply Children
Related