11. Firmware Inventory and Update Service
Redfish UpdateService provides a standard interface for managing firmware updates across the system. Our implementation supports uploading firmware images via the SimpleUpdate action but does not support using ImageURI to fetch images from remote sources.
Additionally, the platform exposes firmware components through the FirmwareInventory, which shows metadata (e.g., version) but does not support per-component update actions. All firmware updates must go through the system-level UpdateService interface.
11.1 API Endpoints
Get Update Service Information
Returns the status and capabilities of the UpdateService, including available actions and firmware inventory.
URI: /redfish/v1/UpdateService
Method: GET
Response Example:
{
"Id": "UpdateService",
"Name": "Update Service",
"FirmwareInventory": {
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory"
},
"ServiceEnabled":true,
"Actions": {
"#UpdateService.SimpleUpdate": {
"target": "/redfish/v1/UpdateService/upload"
},
"#UpdateService.StartUpdate": {
"target": "/redfish/v1/UpdateService/Actions/UpdateService.StartUpdate"
}
}
}
Difference Between UpdateService.SimpleUpdate and UpdateService.StartUpdate
The platform uses a two-stage firmware update process as defined by Redfish. Below is the difference between the two actions:
Action | Purpose | Required | Supported |
---|---|---|---|
SimpleUpdate | Uploads firmware to the staging area | ✅ Yes | ✅ Yes (multipart only) |
StartUpdate | Triggers actual update process | ✅ Yes | ✅ Yes |
Upload Firmware
This API uploads the firmware file to the device. The file is stored in a staging area and is not applied immediately.
URI: /redfish/v1/UpdateService/upload
Method: POST
Usage Example
curl –k -X POST -H 'X-Auth-Token: $SESSION' -F file=@$FILE https://$HOST/redfish/v1/UpdateService/upload
Start Update Firmware
This API initiates the actual firmware update process using the file uploaded via SimpleUpdate. After the update is completed, the system will reboot.
URI: /redfish/v1/UpdateService/Actions/UpdateService.StartUpdate
Method: POST
Usage Example
curl -k -X POST -H "X-Auth-Token: $SESSION" https://$HOST/redfish/v1/UpdateService/Actions/UpdateService.StartUpdate
Firmware Inventory
Returns a list of available firmware components on the system.
URI: /redfish/v1/UpdateService/FirmwareInventory
Method: GET
Response Example:
{
"@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection",
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory",
"Id": "UpdateService",
"Name": "Firmware Inventory Collection",
"Members@odata.count": 1,
"Members": [
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/BMC"
}
]
}
Get Firmware BMC Component Information
Returns detailed information about the BMC firmware, including version and board information.
URI: /redfish/v1/UpdateService/FirmwareInventory/BMC
Method: GET
Response Example:
{
"@odata.type": "#SoftwareInventory.v1_2_2.SoftwareInventory",
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/BMC",
"Id": "BMC",
"Name": "OOB Firmware",
"Version": "1.0.0.0",
"Manufacturer": "AVerMedia",
"Status": {
"State": "Enabled",
"Health": "OK"
},
"Updateable": false
}
11.2 Updating BMC Firmware Workflow
Step1: Check UpdateService Status
API Endpoint:
GET /redfish/v1/UpdateService
Purpose:
Verify that the UpdateService is available and get the supported actions.
Sample Response Snippet:
"Actions": {
"#UpdateService.SimpleUpdate": {
"target": "/redfish/v1/UpdateService/Actions/upload"
},
"#UpdateService.StartUpdate": {
"target": "/redfish/v1/UpdateService/Actions/UpdateService.StartUpdate"
}
}
Step 2. Upload the Firmware using SimpleUpdate
API Endpoint:
POST /redfish/v1/UpdateService/Actions/upload
This step stores the firmware in the device’s staging area but does not apply it yet.
Step 3. Start the Update Process using StartUpdate
API Endpoint:
POST /redfish/v1/UpdateService/Actions/UpdateService.StartUpdate
This triggers the actual update process.
Step 4. Wait for System Reboot
After the firmware is applied, the system will automatically reboot to complete the update process. The duration may vary depending on the firmware size and type.
Step 5. Verification (Optional)
After reboot, you can verify the update by checking the version using:
API Endpoint:
GET /redfish/v1/UpdateService/FirmwareInventory/BMC
Look for the Version fields: