I’ve built a custom Angular application in Cumulocity 1020.x that includes a firmware update widget for our industrial gateway devices. After registering a new device type, the firmware update widget shows no available firmware versions even though I’ve uploaded three versions to the firmware repository.
The widget code retrieves firmware using:
this.inventoryService.list({
fragmentType: 'c8y_Firmware',
type: 'c8y_Firmware'
});
I’ve verified the firmware objects exist in the inventory, but the mapping between device types and firmware repository seems broken. The widget REST API calls return empty arrays. Users cannot trigger firmware updates from the custom UI, forcing manual operations through the default Device Management app. Has anyone encountered issues with firmware repository-device type mapping in custom applications?
Thanks both. I checked the firmware objects and they’re missing the c8y_Filter fragment entirely. When I uploaded them via REST API, I only set the name, version, and binary reference. How do I properly structure the firmware object to include device type mapping? Should this be done during upload or as a separate update?
Also verify your custom widget has the correct inventory permissions. The Inventory API requires READ permission on the c8y_Firmware fragment. If your app microservice or user role lacks this permission, the REST API will return empty results. Check Application Management → Your App → Required Roles and ensure ROLE_INVENTORY_READ is included.
You need to include c8y_Filter during firmware creation. The fragment should specify which device types can use this firmware. For example, if you have a device type ‘c8y_IndustrialGateway’, add that to the filter. Without this mapping, Cumulocity doesn’t know which devices are compatible with which firmware versions. The Device Management UI does this automatically, but custom uploads require explicit configuration.