OMA firmware update using Leshan server: Where to save the files?

904 views Asked by At

I'm quite new to the world of the IOT (protocols). I want to update some devices remotely (they will be installed about 8000km away from my working place). I have found out that LWM2M would fit to my scope.

Because the internet connection there is not stable and the bandwidth is low, I have decided to also install a Raspberry Pi to collect the data of the sensors and to install a Leshan server to trigger the updates.

I have tested the devices and I can register them to the Leshan server on the Pi, read some data, and reboot the devices. The problem is, I don't know where to save my binary file for the update, so that the device can download them.

I tried following steps:

  1. Save the file on [leshan-dir]/update.bin.
  2. Write the "Package URI": coap://[raspi-IP]:5683/update.bin
    After that, the backgroud color of the button "Write" changes to green.
  3. Execute the update

The response of the server is 404 [Not Found].

I have looked for any API to find out where I can save the .bin file, but without success. And because nobody seems to have had a similar error, I start thinking I have missed some points.

Where do I have to save the files on the Raspbery Pi, so that I can perform an update?

1

There are 1 answers

0
Mr Pink On BEST ANSWER

I found a solution for the problem I exposed above.

I use from the californium-project the demo-app cf-simplefile-server (Ref. https://github.com/eclipse/californium/tree/2.0.x/demo-apps/cf-simplefile-server)

Note: You have to checkout to the git-branch 2.0.x to use it.

To run the leshan server and the file-server on the same machine I had to change the port of one of the server using the file Californium.properties. I decide to change the ones of the file-server to 5685 and 5686

When both server runs I can insert in Package URI something like:

coap://[[ip_of_the_pi]]:5685/data/[[name_of_the_firmware_file]]

Probably there are better solution for it, but for a coap/lwm2m beginner like it works very well.

Note: If you have bigger file to transfer you can also change the property MAX_RESOURCE_BODY_SIZE

I hope this may help somebody.

Regards,

Elvys