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

Large data transfers on nRF52 - new possibilities with BT 4.2? IoT SoftDevice? Timeslot API?

Hi,

I have already read several posts and articles about how to maximize data throughput on Bluetooth Smart (like sending multiple Notify packets with 20 bytes of data). This will not be sufficient for our next project.

We want to use the nRF52 platform to extend an existing microcontroller based device with Bluetooth Smart connecticity. The problem is that in some rare cases, we want to transfer a large amount of data over Bluetooth to this device (up to 500 MB!). I know that Bluetooth Smart is the totally wrong way to go here, but we want to keep using a homogeneous platform in all our products. Also, the device shall offer normal Bluetooth Smart based features under normal operating conditions.

This is why I am looking for a way to transfer data at a rate of approximately 100 KB/s or faster. After some research, I have some questions to the Nordic people who are familiar with the nRF52 hardware and protocol stacks (SoftDevices):

  • Here, Nordic Semiconductor mentioned a 100% increased throughput for the nRF52 platform. How is this done? Can throughput be further improved?

  • I understand the the current nRF5x SoftDevices do not support BR/EDR connections. But can the nRF52 hardware be used to implement a BR/EDR device? Can a "Bluetooth Smart Ready" device be implemented on the nRF52 hardware by using the timeslot API, for example?

  • Would it help to use the IoT SDK? What is the maximum throughput that can be accomplished with the IoT SoftDevice? Will there be a IoT SDK that offers Bluetooth Smart functionality (like S132) at the same time?

  • According to Bluetooth 4.2 Specifification, Vol3, Part A, Chapter 3, the L2CAP payload can be up to 65535 bytes (64KB - 1B). Also, the SoftDevice (S132) provides access to the L2CAP layer. Is it possible to use this interface to send special data packets within an existing Bluetooth Smart connection? Or is it necessary to establish a separate connection for transmitting user specific L2CAP packets?

  • Can the timeslot API be used to transfer large data blocks in a faster way? What is the maximum throughput that could be accomplished this way (power consumption does not matter, radio may be active all the time)? Also, is there a sample code available that shows how to implement a user specific radio protocol?

  • Can the L2CAP interface provided by the SoftDevice be used in combination with the timeslot API to implement a user specific protocol? Or is it necessary to program the radio hardware directly?

I hope you can give me some hints that will help me to decide which way to go :)

  • If you have done some reading, I guess you have found out that the maximum throughput is 128 kbps. This is not true for the S132 v1.0.0, but it will be for S132 v.2.0.0 (and it is for v2.0.0-8.alpha)

    There are two features that I know of that can increase the throughput; LE data packet length extension (supported by spec 4.2), and using the 2 mbps on air data rate, instead of 1 mbps on air data rate (not supported by spec 4.2).

    I would also like to mention that the 2 mbps will decrease the maximum range. And that with larger packets doesn't always mean that the actual throughput will be increased, it depends on the number of bit errors. Large packet->large retransmit.

    We do not discuss future plans here, so if you want more information about these features you should contact the Regional Sales Manager for your area, if you don't know who it is send me a PM with your location and I will let you know.

    Here, Nordic Semiconductor mentioned a 100% increased throughput for the nRF52 platform. How is this done? Can throughput be further improved?

    This information is taken from the press release from the Bluetooth SIG, they decide how this will be implemented. We cannot increase throughput more than the Bluetooth spec allows.

    I understand the the current nRF5x SoftDevices do not support BR/EDR connections. But can the nRF52 hardware be used to implement a BR/EDR device? Can a "Bluetooth Smart Ready" device be implemented on the nRF52 hardware by using the timeslot API, for example?

    It is not possible. If you want more detailed information about this, I suggest you add a separate question.

    Would it help to use the IoT SDK? What is the maximum throughput that can be accomplished with the IoT SoftDevice? Will there be a IoT SDK that offers Bluetooth Smart functionality (like S132) at the same time?

    The maximum throughput of the IoT SoftDevice is similar to the S132 v1.0.0, but this will be increased to 128 kbps. Normal Bluetooth Smart functionality is currently supported by the IoT SoftDevice.

    According to Bluetooth 4.2 Specifification, Vol3, Part A, Chapter 3, the L2CAP payload can be up to 65535 bytes (64KB - 1B). Also, the SoftDevice (S132) provides access to the L2CAP layer. Is it possible to use this interface to send special data packets within an existing Bluetooth Smart connection? Or is it necessary to establish a separate connection for transmitting user specific L2CAP packets?

    This is what the IoT SDK is doing, it sends large IPv6 packets to L2CAP, L2CAP fragments it into smaller packets and gives these to the link layer. So the packets that are sent on air are not bigger. So the throughput is similar.

    Can the timeslot API be used to transfer large data blocks in a faster way? What is the maximum throughput that could be accomplished this way (power consumption does not matter, radio may be active all the time)? Also, is there a sample code available that shows how to implement a user specific radio protocol?

    Yes, it can, but of course you need to support the protocol on both sides of the link. I think the best option is too look into micro-ESB. There are some blog posts about it, see this, this and this. I haven't testet it myself, but it is said that a maximum throughput of 1.28mbps can be achieved.

    Can the L2CAP interface provided by the SoftDevice be used in combination with the timeslot API to implement a user specific protocol? Or is it necessary to program the radio hardware directly?

    I don't quite understand what you mean here, but as I mention further up, L2CAP will not increase throughput.

  • Hi Petter,

    thank you very much for this detailed feedback.

    When you write "LE data packet length extension (supported by spec 4.2)", do you refer to the ACL layer (radio packet length)?

    It looks like ESB is the thing we're looking for and it's great that there is already code and samples available! Does ESB already use the 2 MBit on air data rate?

    One more question about ESB: Is it possible to send ESB data with a smartphone (Android, iOS)? I suppose the answer will be no (as it would require modifications deep on the driver level), but I want to make sure I don't miss anything important.

  • LE Data Packet Length Extension is a feature in the link layer.

    ESB supports 2 mbit.

    The answer is no.

Related