MCUMGR SMP implementations


Rodrigo Peixoto
 

Hi all.

My company is developing two boards let's call them Board A and Board B for illustrating purpose. Board A is simple it has some sensors and it has a shell interface for communicating with the other one. Board B is the "gateway" and has Internet connectivity through the Cellular network. They had to be created separately.

We need to upgrade the firmware of both boards in the field. For now, Zephyr only supports FOTA over Bluetooth and Shell/UART, right? So I guess we'll need:
1 - to create a Shell SMP Client at Board B that will be able to upgrade the firmware of Board A using a version of the firmware received by the internet;
2 - to implement a different SMP Server at Board B to receive its own firmware by the Internet as well. 

Do you have any start point, tips, something that could help here? 

The future plan, after I made customs SMP Client and Server, is creating an SMP Server over Bluetooth Mesh. In another project, we will need that. Is anybody working with it already?  


Thank you.
Best regards,
Rodrigo Peixoto
Co-founder and Technical advisor

+55 (82) 98144-8585
http://ayna.tech | Skype: rodrigopex



Carles Cufi
 

Hi Rodrigo,

 

Assuming Board B is running Zephyr and not Linux, you can actually use LWM2M to update the firmware on Board B without having to write any additional code. The foundries.io folks use this model to update internet-connected boards.

When it comes to SMP over IP, AFAIR it is actually supported on the open source project (mcumgr) but not in Zephyr. That said LWM2M is probably a better fit, since SMP uses a “push” model and you probably want a “pull” one for Board B, which will typically periodically poll the server for a firmware update.

 

You are right that there is no client available for SMP today written in C (that I know of). There’s only a desktop one written in Go (mcumgr) and iOS/Android libraries.

 

Carles

 

From: devel@... <devel@...> On Behalf Of Rodrigo Peixoto via Lists.Zephyrproject.Org
Sent: 31 March 2019 00:02
To: devel@...
Cc: devel@...
Subject: [Zephyr-devel] MCUMGR SMP implementations

 

Hi all.

 

My company is developing two boards let's call them Board A and Board B for illustrating purpose. Board A is simple it has some sensors and it has a shell interface for communicating with the other one. Board B is the "gateway" and has Internet connectivity through the Cellular network. They had to be created separately.

 

We need to upgrade the firmware of both boards in the field. For now, Zephyr only supports FOTA over Bluetooth and Shell/UART, right? So I guess we'll need:

1 - to create a Shell SMP Client at Board B that will be able to upgrade the firmware of Board A using a version of the firmware received by the internet;

2 - to implement a different SMP Server at Board B to receive its own firmware by the Internet as well. 

 

Do you have any start point, tips, something that could help here? 

 

The future plan, after I made customs SMP Client and Server, is creating an SMP Server over Bluetooth Mesh. In another project, we will need that. Is anybody working with it already?  

 

 

Thank you.

Best regards,

Rodrigo Peixoto

Co-founder and Technical advisor

 

+55 (82) 98144-8585

http://ayna.tech | Skype: rodrigopex