When triggering a bulk OTA firmware update via the Firmware Management API for 150 devices, only about 40% actually receive the update command. The API returns 200 OK for the bulk request, but when checking per-device status codes, many show as ‘pending’ indefinitely while others complete successfully.
We’re using the bulk update endpoint with device connectivity checks enabled. The devices that fail seem random - not correlated with location, firmware version, or device type. How should I handle bulk OTA update failures? Is there a way to get more detailed per-device status information to understand why some devices aren’t receiving the update trigger?
I’ve dealt with this before. The bulk OTA API has some limitations around device connectivity checks. Even though you enable connectivity checks, the API doesn’t wait for all devices to be online before responding. Devices that are offline or have poor connectivity will stay in ‘pending’ state. You should implement a polling mechanism to check device-level status and retry failed devices. Also, consider breaking your 150-device batch into smaller groups of 25-30 devices to improve success rates and make troubleshooting easier.
Another thing to check - are you hitting rate limits on the firmware download server? If 150 devices all try to download the firmware simultaneously, you might be overwhelming the CDN or storage backend. SAP IoT has configurable throttling on firmware distribution. Check your tenant settings for concurrent download limits and stagger your bulk updates accordingly.
The 200 OK response from the bulk API just means the request was accepted, not that all devices received the update. You need to poll the individual device status endpoints to see what’s actually happening with each device.