Excuse me:
I want to achieve the maximum transfer speed between ble_app_uart and IOS NRF connect app,How to modify the example to achieve the maximum transfer speed with the app,Can we achieve a speed of more than 50kb / s?
Excuse me:
I want to achieve the maximum transfer speed between ble_app_uart and IOS NRF connect app,How to modify the example to achieve the maximum transfer speed with the app,Can we achieve a speed of more than 50kb / s?
I set the core BLE settings in sdk_config.
// <i> Requested BLE GAP data length to be negotiated. #ifndef NRF_SDH_BLE_GAP_DATA_LENGTH #define NRF_SDH_BLE_GAP_DATA_LENGTH 251 #endif // <o> NRF_SDH_BLE_PERIPHERAL_LINK_COUNT - Maximum number of peripheral links. #ifndef NRF_SDH_BLE_PERIPHERAL_LINK_COUNT #define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 1 #endif // <o> NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links. #ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT #define NRF_SDH_BLE_CENTRAL_LINK_COUNT 0 #endif // <o> NRF_SDH_BLE_TOTAL_LINK_COUNT - Total link count. // <i> Maximum number of total concurrent connections using the default configuration. #ifndef NRF_SDH_BLE_TOTAL_LINK_COUNT #define NRF_SDH_BLE_TOTAL_LINK_COUNT 1 #endif // <o> NRF_SDH_BLE_GAP_EVENT_LENGTH - GAP event length. // <i> The time set aside for this connection on every connection interval in 1.25 ms units. #ifndef NRF_SDH_BLE_GAP_EVENT_LENGTH #define NRF_SDH_BLE_GAP_EVENT_LENGTH 24 #endif // <o> NRF_SDH_BLE_GATT_MAX_MTU_SIZE - Static maximum MTU size. #ifndef NRF_SDH_BLE_GATT_MAX_MTU_SIZE #define NRF_SDH_BLE_GATT_MAX_MTU_SIZE 247 #endif
After the peripheral is connected to the IOS nrfconnect app, the MTU is only updated to 182 bytes Automatically,However, Android NRF connect app can update MTU to 244 bytes.Does the IOS NRF connect app need to set the size of the MTU? How to set it?
Hi Helen
Most likely 182 is the maximum that the phone allows. Remember that not all BLE devices support MTU up to 244, this is different from device to device.
Can you let me know which model of iPhone you are testing on, and which iOS version it is running?
Best regards
Torbjørn
Excuse me:
The model of iPhone is iphone12,iOS version is IOS14.5.thanks!
Hi Helen
Apparently this is a limitation from Apple:
https://developer.apple.com/forums/thread/93007
The reason they mention 185 in the thread and not 182 is that you lose three bytes in the packet to the attribute header, so only 182 bytes is free for user data.
Best regards
Torbjørn
Ok,Besides MTU, are there any other ways to increase the rate?The device has requested to update the PHY to 2M. How can I confirm that the PHY has been successfully updated on IOS NRF connect APP?

Hi Helen
Whenever the PHY is changed you should get the BLE_GAP_EVT_PHY_UPDATE event from the SoftDevice.
Along with this event you get the following struct, which includes information about which TX and RX PHY you are currently using, and the status of the last PHY update procedure:
/**@brief Event Structure for @ref BLE_GAP_EVT_PHY_UPDATE. */
typedef struct
{
uint8_t status; /**< Status of the procedure, see @ref BLE_HCI_STATUS_CODES.*/
uint8_t tx_phy; /**< TX PHY for this connection, see @ref BLE_GAP_PHYS. */
uint8_t rx_phy; /**< RX PHY for this connection, see @ref BLE_GAP_PHYS. */
} ble_gap_evt_phy_update_t;
Can you confirm what kind of throughput you are currently seeing, after taking advantage of the 182 byte packet length, 2M phy and 15ms connection interval?
Best regards
Torbjørn
Hi
I found a problem that used the smartphone of android 11 communicate with NUS of nRF52833,the rate is 60kbyte/s in BLE_GAP_PHY_1MBPS mode,but the rate is 30kbyte/s in BLE_GAP_PHY_2MBPS mode.
Hi
I found a problem that used the smartphone of android 11 communicate with NUS of nRF52833,the rate is 60kbyte/s in BLE_GAP_PHY_1MBPS mode,but the rate is 30kbyte/s in BLE_GAP_PHY_2MBPS mode.
Hi Helen
In general I would recommend opening a new ticket rather than replying in a very old one, since the devzone is not really optimized for handling multiple questions in the same ticket.
Which phone are you using for the test?
Could you try to capture a sniffer trace of the two cases, so that you can see why the data rate gets limited when 2M phy is used?
Best regards
Torbjørn