Setup:
periheral: RF52840, S140 softdevice (SDK 15.3)
central: for test/development: laptop with Linux and BLE adapter build in, and/or Raspberry Pi, using Python testing script, later phone and other nRF device
We are using the NUS peripheral example as a base for our project, and we change the MTU.
I can use my test to change the MTU (btmon also confirms change), and the firmware in the nRF confirms by debug log: MTU changed to 247.
But when I send a packet of 67 bytes from the peripheral, NUS commits 67 bytes into soft device (confirmed by debug logging), and it gets a SUCCESS response, only 20 Bytes get received by central (confirmed by btmon).
What I do see in btmon log: Directly after connecting, the peripheral tries to change the MTU, but gets central sends 'Request not supported'. Next command is the central sending a MTU change request. That succeeds.
- In what sequence should we try toi exchange MTU updates?
- Where does the first MTU update originate? It is send during connection setup, originating from peripheral.
We've done an MTU change with the Raspberry on an other project before (using Nordic chip, but with Laird smartbasic) so it should be possible.
Note:
Latpop: Python 3, BluePy BLE library (1.3.0), Bluez (5.50)
Raspberry: Python 3, BluePY (1.3.0), Bluez (5.43)