Skip to main content

Upgrade Management Resources

Upgrade management resources are used to query firmware and upgrade tasks, upload local firmware, and perform firmware upgrades on the BMC or sub-boards.

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.

2 Upgrade Operations

2.1 Query the Upgrade Queue ActionInfo

ItemContent
MethodGET
Path/redfish/v1/UpdateFwService/Actions/UpdateFwServiceActionInfo
Success Status Code200 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'

Response Example

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
}
]
}

Response Fields

FieldTypeDescription
@odata.idstringActionInfo resource path.
@odata.typestringActionInfo resource type.
IdstringActionInfo resource identifier.
NamestringActionInfo resource name.
ParametersarrayList of parameters for the upgrade queue operation.
Parameters[].DisallowedInputbooleanWhether input for this parameter is disallowed.
Parameters[].AllowablePatternstringAllowed matching pattern for the parameter.
Parameters[].AllowableValuesarrayAllowed values for the parameter; returned only for some parameters.
Parameters[].DataTypestringParameter data type.
Parameters[].NamestringParameter name.
Parameters[].RequiredbooleanWhether the parameter is required.

2.2 Add an Upgrade Queue Task

ItemContent
MethodPOST
Path/redfish/v1/UpdateFwService/Actions/UpdateFwService.SimpleUpdate
Required PrivilegeOemUpgrade
Success Status Code200 OK
Local Firmware Network Firmware ```bash title="Add a local upgrade task using a token" curl --request POST \ --header 'X-Xsrf-Token: ' \ --header 'Content-Type: application/json' \ --data '{ "ImageURI": "", "Targets": [""], "TransferProtocol": "LOCAL", "Platform": "", "RewriteMac": false }' \ '://:/redfish/v1/UpdateFwService/Actions/UpdateFwService.SimpleUpdate' ``` ```bash title="Add an NFS upgrade task using a token" curl --request POST \ --header 'X-Xsrf-Token: ' \ --header 'Content-Type: application/json' \ --data '{ "ImageURI": "nfs:///", "Targets": [""], "TransferProtocol": "NFS", "Platform": "", "RewriteMac": false }' \ '://:/redfish/v1/UpdateFwService/Actions/UpdateFwService.SimpleUpdate' ```

Request Fields

FieldTypeRequiredDescription
ImageURIstringYesFirmware file name or network URI. The exact form is determined by TransferProtocol.
TargetsarrayYesList of upgrade target IDs, for example bmc or sub01.
TransferProtocolstringNoTransfer protocol: CIFS, FTP, SFTP, HTTP, HTTPS, SCP, TFTP, NFS, or LOCAL.
PlatformstringYesTarget platform. Must be selected from the AllowableValues currently returned by 2.1 on the actual device.
RewriteMacbooleanNoRequested 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.

Response Example

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"
}
}

Response Fields

FieldTypeDescription
errorobjectV1-compatible response container. Although the field is named error, the inner MessageId indicates success.
error.@Message.ExtendedInfoarrayRedfish Message details.
error.@Message.ExtendedInfo[].@odata.typestringRedfish Message type.
error.@Message.ExtendedInfo[].MessagestringUpgrade queue operation message.
error.@Message.ExtendedInfo[].MessageArgsarrayMessage arguments.
error.@Message.ExtendedInfo[].MessageIdstringMessage identifier; Base.1.11.0.Success on success.
error.@Message.ExtendedInfo[].MessageSeveritystringMessage severity.
error.@Message.ExtendedInfo[].ResolutionstringSuggested follow-up action.
error.codestringV1-compatible code; currently always code.
error.messagestringV1-compatible message type.
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.

2.3 Query the BMC Self-Upgrade ActionInfo

ItemContent
MethodGET
Path/redfish/v1/UpdateFwService/Actions/UpdateFwServiceSelfUpdateActionInfo
Success Status Code200 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'

Response Example

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
}
]
}

Response Fields

FieldTypeDescription
@odata.idstringActionInfo resource path.
@odata.typestringActionInfo resource type.
IdstringActionInfo resource identifier.
NamestringActionInfo resource name.
ParametersarrayList of BMC self-upgrade parameters.
Parameters[].DisallowedInputbooleanWhether input for this parameter is disallowed.
Parameters[].AllowablePatternstringAllowed matching pattern for the parameter.
Parameters[].DataTypestringParameter data type.
Parameters[].NamestringParameter name; currently ImageURI.
Parameters[].RequiredbooleanWhether the parameter is required.

2.4 Perform a BMC Self-Upgrade

ItemContent
MethodPOST
Path/redfish/v1/UpdateFwService/Actions/UpdateFwService.SelfUpdate
Required PrivilegeOemUpgrade
Success Status Code200 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'

Request Fields

FieldTypeRequiredDescription
ImageURIstringYesPath 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.

Success Response Structure

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"
}
}

Response Fields

The response fields are identical to the "Response Fields" in 2.2.

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`. 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.

1 Upgrade Status and Firmware

1.1 Query the Upgrade Task List

Query the current upgrade task status and overall progress of the BMC and each sub-board.

ItemContent
MethodGET
Path/redfish/v1/UpdateFwService/UpdateFwServiceTasksLists
AuthenticationHTTP Basic Auth or X-Xsrf-Token
Required PrivilegeOemUpgrade
Success Status Code200 OK
Basic Auth Token ```bash title="Query the upgrade task list" curl --user ':' \ --header 'Accept: application/json' \ '://:/redfish/v1/UpdateFwService/UpdateFwServiceTasksLists' ``` ```bash title="Query the upgrade task list using a token" curl --header 'X-Xsrf-Token: ' \ --header 'Accept: application/json' \ '://:/redfish/v1/UpdateFwService/UpdateFwServiceTasksLists' ```

Response Example

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
}

Response Fields

FieldTypeDescription
TasksListsobjectUpgrade task map keyed by target ID.
TasksLists.{target}objectUpgrade task information for the specified target, for example bmc or sub01.
TasksLists.{target}.TargetstringTask target ID; an empty string when there is no task.
TasksLists.{target}.TaskUIDintegerUnique identifier of the upgrade task; 0 when there is no task.
TasksLists.{target}.TaskStateobjectMultilingual task state.
TasksLists.{target}.TaskState.EnstringTask state in English.
TasksLists.{target}.TaskState.Zh_CNstringTask state in Chinese.
TasksLists.{target}.StartTimestringTask start time.
TasksLists.{target}.TaskPercentageintegerTask progress for the specified target, ranging from 0 to 100.
TasksLists.{target}.Messagearray | nullList of upgrade log messages; may be null when there is no task.
TaskPercentageintegerAverage progress of all currently computable tasks.

1.2 Query the Upgrade Status of a Specified Target

ItemContent
MethodGET
Path/redfish/v1/UpdateFwService/{target-id}/Actions/Oem/Firefly/UpdateFwService.ServiceInfo
Path Parametertarget-id, for example bmc or sub01
Required PrivilegeOemUpgrade
Success Status Code200 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'

Response Example

200 OK·Actual Device Response
{
"Target": "",
"TaskUID": 0,
"TaskState": {
"En": "",
"Zh_CN": ""
},
"StartTime": "",
"TaskPercentage": 0,
"Message": null
}

Response Fields

FieldTypeDescription
TargetstringUpgrade target ID.
TaskUIDintegerUpgrade task identifier.
TaskStateobjectMultilingual task state.
TaskState.EnstringTask state in English.
TaskState.Zh_CNstringTask state in Chinese.
StartTimestringTask start time.
TaskPercentageintegerTask progress, ranging from 0 to 100.
Messagearray | nullList of upgrade log messages.

1.3 Query the Local Firmware List

ItemContent
MethodGET
Path/redfish/v1/UpdateFwService/LocalFirmwareLists
Success Status Code200 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'

Response Example

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
}

Response Fields

FieldTypeDescription
FirmwareListsarrayList of files in the BMC local firmware directory.
FirmwareLists[].namestringFirmware file name; can be used for local upgrade or deletion operations.
Typesarray | nullFirmware type list; the current implementation returns null.

1.4 Query Available Upgrade Firmware Paths

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.

ItemContent
MethodGET
Path/redfish/v1/UpdateFwService/Actions/UpdateFwService.FirmwarePath
Required PrivilegeOemUpgrade
Success Status Code200 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'

Response Example

200 OK·Actual Device Response
{
"Id": "UpdateFwServiceActionInfo",
"Name": "UpdateFwService Action Info",
"Parameters": []
}

Response Fields

FieldTypeDescription
IdstringResource identifier.
NamestringResource name.
ParametersarrayAvailable firmware list. Each element contains Path and Name; the directory on the current device is empty.
Parameters[].PathstringAbsolute path of the firmware file.
Parameters[].NamestringFirmware file name.

1.5 Delete Local Firmware

ItemContent
MethodDELETE
Path/redfish/v1/UpdateFwService/LocalFirmwareLists/{firmware-id}
Path Parameterfirmware-id, obtained from FirmwareLists[].name returned by 1.3
Request BodyNone
Success Status Code200 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>'

Response Example

200 OK
{
"@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"
}

Response Fields

FieldTypeDescription
@odata.typestringRedfish Message type.
TimestampstringTimestamp when the server generated the message.
MessageIdstringSuccess message identifier.
MessagestringDescription of the operation result.
MessageArgsarrayMessage arguments.
MessageSeveritystringMessage severity.
SeveritystringCompatibility severity field.
Oemobject | nullOEM extension information.
RelatedPropertiesarray | nullRelated resource properties.
ResolutionstringSuggested follow-up action.
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.