The issue is that at this time, a product firmware update occurs only on full cloud handshake. With Electron devices, this doesn’t happen that frequently, because doing so requires about 5K of data. Thus it can take around a week for all Electron/E-series devices to get a product firmware update at this time.
There are two workarounds that can be used now:
At some time, perhaps once a day, your device can end the session to force a new session handshake by running this code on the device.
Particle.publish("spark/device/session/end", "", PRIVATE);
This will cause a firmware update if there is one available after it reconnects.
Another option is to force the update from the cloud-side using lock and flash. This is usually only practical for devices that are always on. Since it’s possible to control lock and flash from the cloud API, you could also automate this process.
A more reasonable solution to this problem will be provided in the future, but I don’t have a schedule for when it will be available.