Software Install "pending"

I’m using Cumulocity to send instructions and a URL for my device to upgrade. This is working fine. However the portal reports that the upgrade is pending permanently. What are the conditions for Cumulocity to recognise the completion of the upgrade?
Is it the filename that is sent to the unit being returned in the 115 registration message?
Is the the software version number that is sent being returned?

Any help or where to look appreciated.

OK, I think I’ve found it. I’m using MQTT:
The relevent commands are:
Operation templates (5xx)
Pending operations have to be requested, then the relevent ones replied to with Executing or SUCCESS etc.

The process is described more clearly in the SmartREST docs as a clue to what’s going on.

Will try it out now.

OK, I’m testing with c8y_Restart. if I issue the
“501,c8y_Restart” it’s marked as Executing in Cumulocity - OK
“503,c8y_Restart” it’s marked as Successful in Cumulocity- OK

but sending “500” does not produce any response, so I can’t see what the Fragment is for Upgrade (is it c8y_SoftwareList ?). And I can’t see what’s pending to decide what to respond to.

Any hints on sending or receiving responses to “500” - Get PENDING operations (500)

Bit quiet in here …

I’ve now tried to implement it for c8y_SoftwareList to do an upgrade. I’m am selecting 2 different versions of firmware to move between. However the 516 message contains details for both of the software versions, so the Upgrade fails as I doesn’t know which to use. I’ve tried deleting one of them in the GUI but it just sends the same 516 message with both versions in.

OK. I only ever have one software “application” loaded on the device.
To install software in the GUI you apparently have to “remove” the application from the GUI software list (even though I can’t remove it from my device). This sends a 516, c8y_SoftwareList message with no software listed in it. So I guess I have to respond Success to this or the GUI seems to think it’s still present - which it is.
If you don’t delete it first, and click on a upgrade, you then get a 516, c8y_SoftwareList with your current app in it PLUS the desired app. So you can parse what’s currently installed, reject it, then accept the new software item.

Is this the correct interpretation of the Cumulocity implementation? Not entirely obvious from the documentation.

And what does c8y_Software do, when do you use it? Is it just in the REST implementation? I’m using MQTT.

Anybody out there? …

OK, my 500 is now getting some responses. However, how is this supposed to work?
When the device receives and understands the request it should respond with Executing ? If so, this stops the Pending responses.
So when you have rebooted and are running new firmware you check to see if you have just been asked to do an upgrade, and there is now nothing Pending? How do you know to send the SUCCESS message?
You could not send Executing until you have rebooted, but your not executing then, you might as well just send SUCCESS. How is this supposed to work?

Hi John,

a lot of information here. Can you summarize what your status is at the moment to have a clear view on your issue?

best regards

Hi Michael,
Do you have a reference document for how Software Upgrade is supposed to work in Cumulocity? What are the expected signalling steps in the process?

My software upgrades OK, I’m just trying to get the messaging to Cumulocity to work OK.



Hi John,

if I get you right, you mean a firmware update of a device, right?

best regards

That’s right