We are presently using Raspberry Pi 3 Model B to observe BLE packets coming from sensors that have NRF52.
We are also able to do DFU OTA using the Nordic NRF52840 USB dongle working in conjunction with the NRF Connect app in a Mac OSX environment.
We are very interested in being able to do DFU OTA from the Raspberry Pi to the NRF52 sensors.
In this direction, we came across this python codebase, found in Github: https://github.com/chiararuggeri/nrf52-OTA-BLE-Linux.
I'm also using the Android NRF Connect app to sniff the packets from the sensor and in this case I have the following capture:
So, now I have assigned "FE59" to CCCD in this code (gui.py in particular line# 86),
as well as assigning the above shown Buttonless DFU UUID 128-bit value to the DFU_Control_Point (gui.py in particular line# 87).
I also assigned to DFU_Packet the value "8ec90002-f315-4f60-9fb8-838830daea50" (per Infocenter docs) and DFU_Version = "" (as this is empty and not mentioned in Infocenter docs).
So, upon launching and clinking "Scan" the sensor is found as shown below:
But the next one, when I click on the sensor MAC address, the DFU Service is found after connecting but there's an error, shown by the console printouts below:
Could you please point where in the Infocenter specifically are the expected responses for the DFU Init and the proceeding sequences?
Has anyone tried to port the above python Github codebase to target the newer NRF52840 and or newer NRF52 chips?
Thanks in advance for your help.
The link yhat you provided:
Is an external link, so I don't know how it works/is supposed to work. For questions regarding that, I would suggest that you contact the author of this repo.
I guess you need to figure out where this error message was printed, and why it was printed.
As for the DFU protocol, this is described briefly on infocenter:
From there there are a few useful links in the menu to the left. Click the + button next to "Bootloader and Dfu modules" -> "DFU protocol" and "DFU protocol" -> "BLE" should be relevant.
For further "documentation", you need to check the implementation on nrfutil on Github. It is not very well documented, but all the source code is available.