Upgrade management resources are used to query firmware and upgrade tasks, upload local firmware, and perform firmware upgrades on the BMC or sub-boards.
Authentication and Privileges
The APIs on this page support HTTP Basic Auth and session tokens. The token is carried in the X-Xsrf-Token request header. Operations such as upgrade tasks, BMC self-upgrade, and chunked upload require the OemUpgrade privilege.
Item Content Method GETPath /redfish/v1/UpdateFwService/Actions/UpdateFwServiceActionInfoSuccess Status Code 200 OK
Query upgrade queue parameters using a token curl --header 'X-Xsrf-Token: <token>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/UpdateFwService/Actions/UpdateFwServiceActionInfo'
200 OK·Actual Device Response {
"@odata.id" : "/redfish/v1/UpdateFwService/Actions/UpdateFwServiceActionInfo" ,
"@odata.type" : "#ActionInfo.v1_1_2.ActionInfo" ,
"Id" : "UpdateFwServiceActionInfo" ,
"Name" : "UpdateFwService Action Info" ,
"Parameters" : [
{
"DisallowedInput" : false ,
"AllowablePattern" : "" ,
"DataType" : "String" ,
"Name" : "ImageURI" ,
"Required" : true
},
{
"DisallowedInput" : false ,
"AllowablePattern" : "" ,
"DataType" : "StringArray" ,
"Name" : "Targets" ,
"Required" : true
},
{
"DisallowedInput" : false ,
"AllowablePattern" : "" ,
"AllowableValues" : [
"CIFS" ,
"FTP" ,
"SFTP" ,
"HTTP" ,
"HTTPS" ,
"SCP" ,
"TFTP" ,
"NFS" ,
"LOCAL"
],
"DataType" : "String" ,
"Name" : "TransferProtocol" ,
"Required" : false
},
{
"DisallowedInput" : false ,
"AllowablePattern" : "" ,
"AllowableValues" : [
"Rockchip" ,
"Novauto" ,
"Qualcomm" ,
"M_Nvidia" ,
"Spacemit"
],
"DataType" : "String" ,
"Name" : "Platform" ,
"Required" : true
},
{
"DisallowedInput" : false ,
"AllowablePattern" : "" ,
"DataType" : "Boolean" ,
"Name" : "RewriteMac" ,
"Required" : false
}
]
}
Field Type Description @odata.idstring ActionInfo resource path. @odata.typestring ActionInfo resource type. Idstring ActionInfo resource identifier. Namestring ActionInfo resource name. Parametersarray List of parameters for the upgrade queue operation. Parameters[].DisallowedInputboolean Whether input for this parameter is disallowed. Parameters[].AllowablePatternstring Allowed matching pattern for the parameter. Parameters[].AllowableValuesarray Allowed values for the parameter; returned only for some parameters. Parameters[].DataTypestring Parameter data type. Parameters[].Namestring Parameter name. Parameters[].Requiredboolean Whether the parameter is required.
Item Content Method POSTPath /redfish/v1/UpdateFwService/Actions/UpdateFwService.SimpleUpdateRequired Privilege OemUpgradeSuccess Status Code 200 OK
Local Firmware
Network FirmwareAdd a local upgrade task using a token curl --request POST \
--header 'X-Xsrf-Token: <token>' \
--header 'Content-Type: application/json' \
--data '{
"ImageURI": "<firmware-file-name>",
"Targets": ["<target-id>"],
"TransferProtocol": "LOCAL",
"Platform": "<platform>",
"RewriteMac": false
}' \
'<protocol>://<device-ip>:<port>/redfish/v1/UpdateFwService/Actions/UpdateFwService.SimpleUpdate'
Field Type Required Description ImageURIstring Yes Firmware file name or network URI. The exact form is determined by TransferProtocol. Targetsarray Yes List of upgrade target IDs, for example bmc or sub01. TransferProtocolstring No Transfer protocol: CIFS, FTP, SFTP, HTTP, HTTPS, SCP, TFTP, NFS, or LOCAL. Platformstring Yes Target platform. Must be selected from the AllowableValues currently returned by 2.1 on the actual device. RewriteMacboolean No Requested value for whether to rewrite the MAC address. The backend also decides the actual behavior based on whether the target device has an assigned MAC address.
The following is a V1 success response returned by an actual device. An empty Targets array was used here to verify the response format; no actual upgrade task was created.
200 OK·Actual Device Response {
"error" : {
"@Message.ExtendedInfo" : [
{
"@odata.type" : "#Message.v1_1_1.Message" ,
"Message" : "UpdateFwService Interface Collection" ,
"MessageArgs" : [],
"MessageId" : "Base.1.11.0.Success" ,
"MessageSeverity" : "OK" ,
"Resolution" : "None"
}
],
"code" : "code" ,
"message" : "#Message.v1_1_1.Message"
}
}
Field Type Description errorobject V1-compatible response container. Although the field is named error, the inner MessageId indicates success. error.@Message.ExtendedInfoarray Redfish Message details. error.@Message.ExtendedInfo[].@odata.typestring Redfish Message type. error.@Message.ExtendedInfo[].Messagestring Upgrade queue operation message. error.@Message.ExtendedInfo[].MessageArgsarray Message arguments. error.@Message.ExtendedInfo[].MessageIdstring Message identifier; Base.1.11.0.Success on success. error.@Message.ExtendedInfo[].MessageSeveritystring Message severity. error.@Message.ExtendedInfo[].Resolutionstring Suggested follow-up action. error.codestring V1-compatible code; currently always code. error.messagestring V1-compatible message type.
Targets Must Not Be Empty
The current backend only checks whether the Targets field is present. An empty array also returns success, but no upgrade task is added for any target. Clients must validate that the array is non-empty before sending the request.
Item Content Method GETPath /redfish/v1/UpdateFwService/Actions/UpdateFwServiceSelfUpdateActionInfoSuccess Status Code 200 OK
Query BMC self-upgrade parameters using a token curl --header 'X-Xsrf-Token: <token>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/UpdateFwService/Actions/UpdateFwServiceSelfUpdateActionInfo'
200 OK·Actual Device Response {
"@odata.id" : "/redfish/v1/UpdateFwService/Actions/UpdateFwServiceSelfUpdateActionInfo" ,
"@odata.type" : "#ActionInfo.v1_1_2.ActionInfo" ,
"Id" : "UpdateFwServiceActionInfo" ,
"Name" : "UpdateFwService Action Info" ,
"Parameters" : [
{
"DisallowedInput" : false ,
"AllowablePattern" : "" ,
"DataType" : "String" ,
"Name" : "ImageURI" ,
"Required" : true
}
]
}
Field Type Description @odata.idstring ActionInfo resource path. @odata.typestring ActionInfo resource type. Idstring ActionInfo resource identifier. Namestring ActionInfo resource name. Parametersarray List of BMC self-upgrade parameters. Parameters[].DisallowedInputboolean Whether input for this parameter is disallowed. Parameters[].AllowablePatternstring Allowed matching pattern for the parameter. Parameters[].DataTypestring Parameter data type. Parameters[].Namestring Parameter name; currently ImageURI. Parameters[].Requiredboolean Whether the parameter is required.
Item Content Method POSTPath /redfish/v1/UpdateFwService/Actions/UpdateFwService.SelfUpdateRequired Privilege OemUpgradeSuccess Status Code 200 OK
Perform a BMC self-upgrade using a token curl --request POST \
--header 'X-Xsrf-Token: <token>' \
--header 'Content-Type: application/json' \
--data '{
"ImageURI": "<locally-visible-firmware-path>"
}' \
'<protocol>://<device-ip>:<port>/redfish/v1/UpdateFwService/Actions/UpdateFwService.SelfUpdate'
Field Type Required Description ImageURIstring Yes Path to the firmware file directly accessible on the BMC itself. The backend will look up the block device, UUID, and mount point of the file.
On success, the same V1 nested Message structure as in 2.2 is returned. Because this operation writes the boot configuration and triggers a BMC upgrade, the success path was not exercised this time.
200 OK·Backend Success Response Structure {
"error" : {
"@Message.ExtendedInfo" : [
{
"@odata.type" : "#Message.v1_1_1.Message" ,
"Message" : "UpdateFwService Interface Collection" ,
"MessageArgs" : [],
"MessageId" : "Base.1.11.0.Success" ,
"MessageSeverity" : "OK" ,
"Resolution" : "None"
}
],
"code" : "code" ,
"message" : "#Message.v1_1_1.Message"
}
}
The response fields are identical to the "Response Fields" in 2.2.
Failure Path Verified on Actual Device
When a non-existent ImageURI is passed, the actual device returns 400 Bad Request, with error.@Message.ExtendedInfo set to the file path is not natively visible.
High-Risk Operation
Performing an upgrade may reboot the target device or interrupt the current service. Before submitting, always query the ActionInfo first and confirm that the image, platform, transfer protocol, and target device match.
Query the current upgrade task status and overall progress of the BMC and each sub-board.
Item Content Method GETPath /redfish/v1/UpdateFwService/UpdateFwServiceTasksListsAuthentication HTTP Basic Auth or X-Xsrf-Token Required Privilege OemUpgradeSuccess Status Code 200 OK
Query the upgrade task list curl --user '<username>:<password>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/UpdateFwService/UpdateFwServiceTasksLists'
The following is an excerpt of the core fields returned by an actual device. The device also contains sub02 through sub10, whose structure is identical to sub01.
200 OK·Excerpt of Actual Response {
"TasksLists" : {
"bmc" : {
"Target" : "" ,
"TaskUID" : 0 ,
"TaskState" : {
"En" : "" ,
"Zh_CN" : ""
},
"StartTime" : "" ,
"TaskPercentage" : 0 ,
"Message" : null
},
"sub01" : {
"Target" : "" ,
"TaskUID" : 0 ,
"TaskState" : {
"En" : "" ,
"Zh_CN" : ""
},
"StartTime" : "" ,
"TaskPercentage" : 0 ,
"Message" : null
}
},
"TaskPercentage" : 0
}
Field Type Description TasksListsobject Upgrade task map keyed by target ID. TasksLists.{target}object Upgrade task information for the specified target, for example bmc or sub01. TasksLists.{target}.Targetstring Task target ID; an empty string when there is no task. TasksLists.{target}.TaskUIDinteger Unique identifier of the upgrade task; 0 when there is no task. TasksLists.{target}.TaskStateobject Multilingual task state. TasksLists.{target}.TaskState.Enstring Task state in English. TasksLists.{target}.TaskState.Zh_CNstring Task state in Chinese. TasksLists.{target}.StartTimestring Task start time. TasksLists.{target}.TaskPercentageinteger Task progress for the specified target, ranging from 0 to 100. TasksLists.{target}.Messagearray | null List of upgrade log messages; may be null when there is no task. TaskPercentageinteger Average progress of all currently computable tasks.
Item Content Method GETPath /redfish/v1/UpdateFwService/{target-id}/Actions/Oem/Firefly/UpdateFwService.ServiceInfoPath Parameter target-id, for example bmc or sub01Required Privilege OemUpgradeSuccess Status Code 200 OK
Query BMC upgrade status using a token curl --header 'X-Xsrf-Token: <token>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/UpdateFwService/bmc/Actions/Oem/Firefly/UpdateFwService.ServiceInfo'
200 OK·Actual Device Response {
"Target" : "" ,
"TaskUID" : 0 ,
"TaskState" : {
"En" : "" ,
"Zh_CN" : ""
},
"StartTime" : "" ,
"TaskPercentage" : 0 ,
"Message" : null
}
Field Type Description Targetstring Upgrade target ID. TaskUIDinteger Upgrade task identifier. TaskStateobject Multilingual task state. TaskState.Enstring Task state in English. TaskState.Zh_CNstring Task state in Chinese. StartTimestring Task start time. TaskPercentageinteger Task progress, ranging from 0 to 100. Messagearray | null List of upgrade log messages.
Item Content Method GETPath /redfish/v1/UpdateFwService/LocalFirmwareListsSuccess Status Code 200 OK
Query the local firmware list using a token curl --header 'X-Xsrf-Token: <token>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/UpdateFwService/LocalFirmwareLists'
200 OK·Actual Device Response {
"FirmwareLists" : [
{
"name" : "CS-B1-3576-JD4-SUB-MINIMAL_Rk3576_debug_260602.img"
},
{
"name" : "CS-B1-rk3576-jd4-sub_Android14_HDMI_260605.img"
}
],
"Types" : null
}
Field Type Description FirmwareListsarray List of files in the BMC local firmware directory. FirmwareLists[].namestring Firmware file name; can be used for local upgrade or deletion operations. Typesarray | null Firmware type list; the current implementation returns null.
Query .img files in the upgrade upload directory. This API reads a different firmware directory from 1.3, and the two responses are not necessarily identical.
Item Content Method GETPath /redfish/v1/UpdateFwService/Actions/UpdateFwService.FirmwarePathRequired Privilege OemUpgradeSuccess Status Code 200 OK
Query available upgrade firmware paths using a token curl --header 'X-Xsrf-Token: <token>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/UpdateFwService/Actions/UpdateFwService.FirmwarePath'
200 OK·Actual Device Response {
"Id" : "UpdateFwServiceActionInfo" ,
"Name" : "UpdateFwService Action Info" ,
"Parameters" : []
}
Field Type Description Idstring Resource identifier. Namestring Resource name. Parametersarray Available firmware list. Each element contains Path and Name; the directory on the current device is empty. Parameters[].Pathstring Absolute path of the firmware file. Parameters[].Namestring Firmware file name.
Item Content Method DELETEPath /redfish/v1/UpdateFwService/LocalFirmwareLists/{firmware-id}Path Parameter firmware-id, obtained from FirmwareLists[].name returned by 1.3Request Body None Success Status Code 200 OK
Delete local firmware using a token curl --request DELETE \
--header 'X-Xsrf-Token: <token>' \
'<protocol>://<device-ip>:<port>/redfish/v1/UpdateFwService/LocalFirmwareLists/<firmware-id>'
{
"@odata.type" : "#Message.v1_1_1.Message" ,
"Timestamp" : "1785836138" ,
"MessageId" : "Base.1.11.0.Success" ,
"Message" : "The request completed successfully." ,
"MessageArgs" : [],
"MessageSeverity" : "OK" ,
"Severity" : "" ,
"Oem" : null ,
"RelatedProperties" : null ,
"Resolution" : "None"
}
Field Type Description @odata.typestring Redfish Message type. Timestampstring Timestamp when the server generated the message. MessageIdstring Success message identifier. Messagestring Description of the operation result. MessageArgsarray Message arguments. MessageSeveritystring Message severity. Severitystring Compatibility severity field. Oemobject | null OEM extension information. RelatedPropertiesarray | null Related resource properties. Resolutionstring Suggested follow-up action.
Deletion Is Irreversible
This API directly deletes the firmware file on the BMC and attempts to clean up the associated unpack cache. In this session, only a non-existent file name was used to verify the route and error response; no existing firmware was deleted.