Differnce between System.updatesPending() and firmware_update_pending

Hi,

I have documentation clarification question. In the System.updatePending() documentation, it says that System.updatesPending() is an Enterprise Feature, Since 1.2.0.

Does this include receiving the System event firmware_update_pending? The updatesPending() function uses this System event trigger, but can I still listen for the event without an Enterprise account?

Using a Photon v 1.4.x

@rickkas7 Would be the best person to ask, but what is the purpose of listening for pending updates?
A product would deploy new firmware as the device comes online.

If you are not an enterprise customer with intelligent OTA enabled:

Your device will never receive an firmware_update_pending event and System.updatePending() will never return true.

That’s because non-IOTA (intelligent OTA) devices only get updates when they handshake or resume session. For a Photon/P1, this will be whenever the device wakes from sleep or reconnects to the cloud. This could take up to 4 days.

If you have a non-IOTA product and want to get updates more rapidly, you could have the device manually disconnect from the cloud using Particle.disconnect() periodically, say once a day, if desired.

If you manually lock-and-flash a product device or flash a development device, the update will happen immediately, but the device still won’t get an updates pending.

@no1089, thanks foe your response! As far as I know and have experienced, non-enterprise accounts no longer deploy new firmware as a device comes online.

So this would be a flag to trigger a manual firmware update. Does that make sense?

@rickkas7 Gave the correct response above :slight_smile:

1 Like

That’s because non-IOTA (intelligent OTA) devices only get updates when they handshake or resume session. For a Photon/P1, this will be whenever the device wakes from sleep or reconnects to the cloud. This could take up to 4 days.

We no longer experience this. We only seem to be able update when we manually trigger an update. This holds true even if we EnableUpdates() and then trigger a disconnect() to force a handshake.

What do you think would cause this? What am I overlooking?