Skip to main content

BMC Firmware update

Request

POST https://{{ip}}/redfish/v1/UpdateService/upload
Content-Type: application/json
Table 1. BMC update properties
NameTypeRead onlyDescription

FlashType

Strings

False

HPMFwUpdate. It means performing the HPMFwUpdate action.

UploadSelector

String

False

Default. It's a fixed value for this version.

Targets

String

False

An URI that indicates where to apply the update image.

Procedure

  1. Open postman, select the POST method, and type the URL below:

    https://{{ip}}/redfish/v1/UpdateService/upload

  2. On the Body tab for the POST action, select form-data, provide the key name as UpdateFile, and change the type to File.

  3. In the value section, select the firmware image that is available in the local machine.

  4. Create a JSON file parameters.json with the following content:

    {
    "Targets": [
    "/redfish/v1/Managers/Self"
    ]
    }
  5. Create a JSON file oem_parameters.json with the following content:

    {
    "FlashType":"HPMFwUpdate",
    "UploadSelector":"Default"
    }
  6. Provide key name UpdateParameters and select parameters.json created in step 4.

  7. Provide key name OemParameters and select oem_parameters.json created in step 5.

  8. Click Send.

Response

The response content is 202 Accepted.

If the update started before BMC booting finished, the response will be 400 error as below. Please wait a moment and try again.

{
"error": {
"@Message.ExtendedInfo": [
{
"@odata.type": "#Message.v1_0_7.Message",
"Message": "Action UpdateService.MultipartPush firmware update is failed.",
"MessageArgs": [
"UpdateService.MultipartPush"
],
"MessageId": "AmiOem.1.0.BMCNotReadyForFirmwareUpdate",
"Resolution": "Wait for BMC ready.",
"Severity": "Warning"
}
],
"code": "AmiOem.1.0.BMCNotReadyForFirmwareUpdate",
"message": "Action UpdateService.MultipartPush firmware update is failed."
}
}

If the BMC update started before other redfish upgrade action finished, the response will be 400 as below. Please wait it finished and try again.

{
"error": {
"@Message.ExtendedInfo": [
{
"@odata.type": "#Message.v1_0_7.Message",
"Message": "The action is terminated since /redfish/v1/TaskService/Tasks/5 is being upgraded
via UEFIFwupdate of UpdateService.MultipartPush at the same time.",
"MessageArgs": [
"/redfish/v1/TaskService/Tasks/5",
"UEFIFwupdate of UpdateService.MultipartPush"
],
"MessageId": "AmiOem.1.0.AlreadyInUpdateMode",
"Resolution": "Resubmit action after FwUpdate completed.",
"Severity": "Warning"
}
],
"code": "AmiOem.1.0.AlreadyInUpdateMode",
"message": "The action is terminated since /redfish/v1/TaskService/Tasks/5 is being upgraded
via UEFIFwupdate of UpdateService.MultipartPush at the same time."
}
}

If FW version is lower than 2.51 and there is no “FlashTarget”: “Force” in the file oem_parameters.json.

{
"error": {
"@Message.ExtendedInfo": [
{
"@odata.type": "#Message.v1_0_7.Message",
"Message": "The action UpdateService.MultipartPush was submitted but rejected
because the version will accept different target of FlashTarget.", "MessageArgs": [
"UpdateService.MultipartPush"
],
"MessageId": "AmiOem.1.0.InvalidFlashTarget",
"Resolution": "Resubmit the request with the valid FlashTarget",
"Severity": "Warning"
}
],
"code": "AmiOem.1.0.InvalidFlashTarget",
"message": "The action UpdateService.MultipartPush was submitted but rejected
because the version will accept different target of FlashTarget."
}
}

Request

Update Status Query

When the FW update request was sent successfully, there is a URL bonded to a task in response to query update status. And the “TaskState” and “TaskStatus” in the response of this query URL will display update status after BMC bootup.

GET https://{{ip}}/redfish/v1/TaskService/Tasks/{id}
Content-Type: application/json

Response example

{
"@odata.context": "/redfish/v1/$metadata#Task.Task",
"@odata.etag": "\"1585121674\"",
"@odata.id": "/redfish/v1/TaskService/Tasks/ID",
"@odata.type": "#Task.v1_4_1.Task",
"Description": "Task for Update Service Task",
"Id": "ID",
"Messages": [
{
"@odata.type": "#Message.v1_0_7.Message",
"Description": "The operation is complete and completed sucessfully or with warnings.",
"Message": "Task /redfish/v1/UpdateService/Upload has completed.",
"MessageArgs": [
"/redfish/v1/UpdateService/Upload"
],
"MessageId": "Task.1.0.Completed",
"Resolution": "None",
"Severity": "OK"
},
{
"@odata.type": "#Message.v1_0_7.Message",
"Description": "Indicates that device firmware update is completed.",
"Message": "Action /redfish/v1/UpdateService/Upload firmware update is completed.",
"MessageArgs": [
"/redfish/v1/UpdateService/Upload"
],
"MessageId": "UpdateService.1.0.FirmwareUpdateCompleted",
"Resolution": "None",
"Severity": "OK"
}
],
"Name": "Update Service Task",
"TaskState": "Completed",
"TaskStatus": "OK
"