Firmware transfer over BLE for another MCU

Hi,

For our application, we need to transfer binary (.bin) file from Phone and nRF5340 over BLE and store it into the SD card. Later, another MCU will read the file and update its firmware.

I went through two other queries query_1 and query_2, but those are for transferring data over UART. However, I want to store the file first on an external SD card connected to the SoC, rather than directly transmitting over UART.

I cannot find any example for the same in nRF Connect SDK V2.0.0. Please let me know if I can use any example or a can follow a procedure.

Thanks

Parents Reply Children
  • Hi Simon,

    Some of the used configurations are as below:

    On nrf5340 peripheral side I have the configurations that I shared in above response and

    I will first give a brief of what I am doing using  a part of code below to explain the code flow and how I am updating the configurations from peripheral side.

    The initial setup as mentioned in above response.

    With this, observed around 1.3 Mbps speed between nrf5340dk to nrf5340 on custom board. However, while testing with mobile app, the speed is very low around 100-150 kbps. 

    Please tell me what can be the issue here?

    Thanks 

  • Hi

    It's been a few days, this mobile app was a custom app made on your end, correctly? Is this speed seen when communicating with an iOS device or Android device, or both? And do you have the same throughput issues with I.E. the nRF Connect app for mobile as well?

    Here on DevZone we aren't really mobile app developers, and it seems obvious the issue is in the mobile app here, and not on the nRF side of the connection since you're able to achieve the expected throughput on the nRF5340 communicating with another nRF.

    Best regards,

    Simon

  • Which phone you use makes a big impact on achievable throughput. Testing with one Android phone want tell you what you can get with another Android phone.

    iPhones are easier that way, they are more predictable but will never give you more than about 50% of the max throughput. That is if you are not running other Bluetooth connections requiring a lot of bandwidth.

    Samsung Galaxy S phones at least from the S10 will support the maximum theoretical speed of 1.3Mbps, I'm sure there are a lot of other phones that do this as well but I have only tested the S series.

    Note: to get the maximum speed you should also look at the Connection Length Extension (or something like this, the time the peripheral is allowed to send per CI) as well, filling up this completely will ensure maximum throughput. This is part of where some phones are more restrictive, they limit amount of packets in each timeslot

Related