Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

BLE OTS object transfer service throughput

hello

I'm currently developing a system that requires a nrf5280 to transfer data to an android phone through ble.

I've based my application on the Object transfer service example in NRF5 sdk ,which is working well when transfering 912 bytes every 500ms.

I now need to double this data rate somehow

Ive attempted increasing the SDU size to 1824 in order to send data in bigger chunks but this caused the nrf52840 to crash.

Ive also attempted to send 912 bytes every 250ms instead, which kinda worked however in about 20% of the transfers the data was not ready to be read from the l2cap channel after the read OP code was sent. This lead to data being skipped.

is it possible to icrease the SDU size beyond the standard 1024 bytes?

does anyone have much experiece getting high throughput using an nrf52840? Am I missing a trick here?

Thanks

Parents
  • Did you manage to find an OTS example on android? I would love to quickly experiment with this before delving into writing code.

    , it would be great if there was an OTS application in NRF toolbox. Do you know if there are any plans for one?

  • hello, 

    no I sadly couldn't find one so I had to make an andoid application in andoid studio.

    To read from a perpheral nrf device running OTS you need to connect to GATT then setup an l2cap channel using

    BluetoothSocket.createL2capChannel (int psm) with a psm of 25

    then send an OP code to the devices OACP characteristic using indication to request data to be sent over l2cap.
    finally read from the l2cap channel and repeat.

    one issue with this is that BluetoothSocket.createL2capChannel (int psm) is only available in android 10 or newer.

    that's why ive switched to something based on nordic uart service instead.



Reply
  • hello, 

    no I sadly couldn't find one so I had to make an andoid application in andoid studio.

    To read from a perpheral nrf device running OTS you need to connect to GATT then setup an l2cap channel using

    BluetoothSocket.createL2capChannel (int psm) with a psm of 25

    then send an OP code to the devices OACP characteristic using indication to request data to be sent over l2cap.
    finally read from the l2cap channel and repeat.

    one issue with this is that BluetoothSocket.createL2capChannel (int psm) is only available in android 10 or newer.

    that's why ive switched to something based on nordic uart service instead.



Children
No Data
Related