how to implement buttonless Dfu in App (Flutter Dart )without using any library

Issue

i want to use Buttonless Dfu in flutter without any library , there is already one for Android+ios , but i wanted to implement for all platforms , so expecting that i can connect/read/write and set notifications by using ble , is there any tutorial or something if i can implement dfu by using these ble read/write and notifications only

or if someone can list setps like
write command 0x0… to enter in Bootloader
then when device is in bootloader
set notification for 0x0…. characteristics
and and send zip file to …. this char.
something like this ,it would be really helpfull

Solution

Entering the bootloader

To enter the bootloader using the Nordic Buttonless DFU you need to write to a characteristic of the Buttonless Secure DFU Service which uses the 16-bit UUID 0xFE59. The actual characteristic depends on your settings. The Buttonless DFU can be used with or without bonds and would show a different characteristic for either one. Take a look at the documentation for more information about that.

The protocol to enter the bootloader is super simple:

enter image description here

To enter the bootloader, you need to send 0x01 to the characteristic. You will receive a response telling you the result of the operation. The message sequence diagram shows a successful response which is made of

0x20 -> defines this message as response
0x01 -> the command you requested (enter bootloader)
0x01 -> Success

Take a look the the documentation for more response codes.

Sending the firmware update

There is a very detailed page about the DFU protocol including a part especially about using BLE. It includes a message sequence chart describing the actual protocol where you can easily see in which order your messages need to be sent and to which characteristic.

Answered By – Michael Kotzjan

Answer Checked By – Marie Seifert (FlutterFixes Admin)

Leave a Reply

Your email address will not be published. Required fields are marked *