Firmware Inventory and Update Service

Firmware Inventory

FirmwareInventory represents firmware version information for each component on the server.

GET FirmwareInventory Collection

URI: /redfish/v1/UpdateService/FirmwareInventory

Method: GET

Response: 200

{

"@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection",

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory",

"Name": "Firmware Inventory Collection",

"Members@odata.count": 15,

"Members": [

{

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/BMC"

},

{

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/BIOS"

},

{

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Backup_BMC"

},

{

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Golden_BMC"

},

{

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Staging_BMC"

},

{

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Backup_BIOS"

},

{

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Golden_BIOS"

},

{

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Staging_BIOS"

},

{

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Motherboard_CPLD_[num]"

},

{

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Golden_Motherboard_CPLD_[num]"

},

{

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/PowerSupply1"

},

{

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Capsule_MCU"

},

{

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Capsule_BIOS"

},

{

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Capsule_ME"

},

{

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/BIOS_ME"

}

],

"Oem": {},

"@odata.etag": "\"5c52f4d48b358c4e7f40f29e9d8cc34d\""

}

GET Broadcom Unit Information

In RelatedItem, added the following as of Redfish v1.21.1:

  • /redfish/v1/Systems/1/Storage/HA-RAID/Controllers/num

  • /redfish/v1/Systems/1/Storage/HBA/Controllers/num

URI: /redfish/v1/UpdateService/FirmwareInventory/Broadcom[broadcom_num]

Method: GET

{

"@odata.type": "#SoftwareInventory.v1_3_0.SoftwareInventory",

"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Broadcom1",

"Id": "1",

"Name": "SAS3108 Device 0",

"Updateable": true,

"Version": "4.680.00-8519",

"Status": {

"State": "Enabled",

"Health": "OK"

},

"RelatedItem": [

{

"@odata.id": "/redfish/v1/Systems/1/Storage/HA-RAID#/StorageControllers/0"

},

{

"@odata.id": "/redfish/v1/Systems/1/Storage/HA-RAID/Controllers/num"

//It may be /redfish/v1/Systems/1/Storage/HBA/Controllers/num

},

],

"Actions": {

"Oem": {}

},

"Oem": {},

"Manufacturer": "Supermicro",

"WriteProtected": false

}

Response: 200

Update Service

Firmware Resiliency Actions

Set the current active image as the golden template. If the current image is used as the golden image by the golden template under Supermicro’s recommendation or the administrator’s preference, then use this option to update the golden firmware image with the active firmware image.

Allowable values for Targets:

BMC: Use "/redfish/v1/Managers/1" or "/redfish/v1/UpdateService/FirmwareInventory/BMC" to update golden firmware image for BMC.

BIOS: Use "/redfish/v1/Systems/1" or "/redfish/v1/UpdateService/FirmwareInventory/BIOS" to update golden firmware image for BIOS.

URI: /redfish/v1/UpdateService/Actions/Oem/SmcUpdateService.Install

Method: POST

Payload:

{

"Targets":[ "/redfish/v1/Managers/1"],

"InstallOptions":["UpdateGolden"]

}

Response: 200

Modify Preserve SMBIOS Setting with BIOS Recovery

Notes: 
  • This feature is supported since BMC firmware versions Gen 13 1.12 and Gen 14 1.10.

  • This command requires an SFT-DCMS-Single license.

URI: /redfish/v1/UpdateService/Actions/Oem/SmcUpdateService.Install

Method: POST

Targets:

"/redfish/v1/Systems/1"

"/redfish/v1/Systems/1/Bios"

"/redfish/v1/UpdateService/FirmwareInventory/BIOS"

"/redfish/v1/UpdateService/FirmwareInventory/BMC"

Value: false, true

Payload:

{

"Targets": ["/redfish/v1/Systems/1"],

"InstallOptions": ["Recover"],

"PreserveSMBIOS": (Value)

}

Response: 200

Notes: 
  • The default value is false.

  • The backup image is always used for recovery when it exists; otherwise, the golden image is used.

  • If the user POSTs with PreserveSMBIOS equaling true or false, and InstallOptions equaling UpdateGolden, the response code should be 400 (Bad Request).

Staged Firmware Update

Note: This feature is supported only for Gen 13 and Gen 14.

Upload New Firmware Image (Restored in Staging Area)

Note: This command requires an SFT-DCMS-Single license.

Use this command to store an image in the Staging Region (non-volatile). The image will still be staged after resets. The default for this property is false.

URI: /redfish/v1/UpdateService/upload

Method: POST

Response: 202

Payload:

{

...

"Stage": true,

...

}

Activate Staged Firmware (Single Staged Firmware Update)

Note: This command requires an SFT-DCMS-Single license.

{Base URI of target resource} will disappear once overwriting is complete.

{Base URI of target resource} may be one of the following:

  • /redfish/v1/UpdateService/FirmwareInventory/Staging_BIOS

  • /redfish/v1/UpdateService/FirmwareInventory/Staging_BMC

  • /redfish/v1/UpdateService/FirmwareInventory/Staging_Motherboard_CPLD_num

The firmware update sequence may implement system shutdown/reboot based on hardware dependencies or different RoT designs.

After finishing the operation, the system should return the previous power state.

URI: {Base URI of target resource}/Actions/SoftwareInventory.Activate

Method: POST

Response: 202

Payload:

{

}

Activate Staged Firmware (Multiple Staged Firmware Update)

Note: This command requires an SFT-DCMS-Single license.

The firmware update sequence is in the order of BIOS > CPLD > BMC when multiple staged firmware updates are activated.

The firmware update sequence may implement system shutdown/reboot based on hardware dependencies or different RoT designs.

After finishing the operation, the system should return the previous power state.

URI: /redfish/v1/UpdateService/Actions/UpdateService.Activate

Method: POST

Response: 202

Payload: This example shows how to select multiple components.

{

"Targets": [

{ @odata.id: /redfish/v1/UpdateService/FirmwareInventory/Staging_BIOS},

{ @odata.id: /redfish/v1/UpdateService/FirmwareInventory/Staging_BMC},

{ @odata.id: /redfish/v1/UpdateService/FirmwareInventory/Staging_Motherboard_CPLD_num}

]

}s

Check UpdateServiceCapabilities

URI: /redfish/v1/UpdateService/UpdateServiceCapabilities

Method: GET

Response: 200

This example shows how to select multiple components.

{

"@odata.type": "#UpdateServiceCapabilities.v1_0_0.UpdateServiceCapabilities",

"Id": "UpdateServiceCapabilities",

"Name": "Update Service Capabilities",

"AllowableTargets": [

"/redfish/v1/UpdateService/FirmwareInventory/Motherboard_CPLD_[num]"

]

"@odata.id": "/redfish/v1/UpdateService/UpdateServiceCapabilities"

"AllowableStaging":[

"/redfish/v1/UpdateService/FirmwareInventory/BIOS",

"/redfish/v1/UpdateService/FirmwareInventory/BMC",

"/redfish/v1/UpdateService/FirmwareInventory/Motherboard_CPLD_[num]"

]

}

SoftwareInventory

URI: /redfish/v1/UpdateService/FirmwareInventory/{SoftwareInventoryId}

Method: GET

Response: 200

This example shows the activation status of the firmware.

{

...

"Active": XXX,

"Staged": XXX

...

}

Updating BIOS Firmware

To perform BIOS firmware update, use the image file available on the local system:

Allowable values for @Redfish.OperationApplyTime:

  • Immediate: Start BIOS firmware update immediately after POST action to /redfish/v1/UpdateService/upload.

  • OnStartUpdateRequest: upload firmware with POST action upload API and then BIOS firmware update will only start after POST action to /redfish/v1/UpdateService/Actions/UpdateService.StartUpdate.

StartUpdate API doesn’t require any parameter in the payload.

URI: /redfish/v1/UpdateService/upload

Method: POST

Response: 202

UpdateParameters:

{"Targets": ["/redfish/v1/Systems/1/Bios"],

"@Redfish.OperationApplyTime": "Immediate",

"Oem": {"Supermicro": { "BIOS": { "PreserveME": true, "PreserveNVRAM": true, "PreserveSMBIOS": true, "BackupBIOS": false }}}}

UpdateFile: <File>

Notes: 
  • Initiating a BIOS upgrade will first perform a system power off.

  • On Gen 12 (Whitley and Tatlow series), Gen 13, and later platforms, only these commands are available for use when using this method: PreserveOA, PreserveSETUPCONF, PreserveSETUPPWD, PreserveSECBOOTKEY, PreserveBOOTCONF, and UpdateRollbackID (note that this only works for RoT).

  • ith RoT, only these commands are available for use when using this method: PreserveME, PreserveNVRAM, PreserveSMBIOS, and BackupBIOS.

Check BIOS update status in TaskService API.

URI: /redfish/v1/TaskService

Method: GET

Response: 200

When the update completes, check the BIOS version in UpdateService/FirmwareInventory.

Updating BMC Firmware

Use the image file available on the local system to update BMC firmware:

Allowable values for @Redfish.OperationApplyTime:

  • Immediate: Start BMC firmware update immediately after POST action to /redfish/v1/UpdateService/upload.

  • OnStartUpdateRequest: upload firmware with POST action upload API and then BMC firmware update will only start after POST action to /redfish/v1/UpdateService/Actions/UpdateService.StartUpdate.

StartUpdate API doesn’t require any parameter in the URI: /redfish/v1/UpdateService/upload

Method: POST

Response: 202

UpdateParameters:

{"Targets": ["/redfish/v1/Managers/1"],

"@Redfish.OperationApplyTime": "Immediate",

"Oem": {"Supermicro": { "BMC": {"PreserveCfg":true, "PreserveSdr":true, "PreserveSsl":true, "BackupBMC": true}}}

}

UpdateFile: <File>

Check BMC update status in TaskService API

URI: /redfish/v1/TaskService

Method: GET

Response: 200

When the update completes, check the BMC version in UpdateService/FirmwareInventory

Updating CPLD Firmware

There are two types of CPLD firmware to be updated:

Use the image file available on the local system to update CPLD motherboard firmware:

URI: /redfish/v1/UpdateService/upload

Method: POST

Response: 202

UpdateParameters:

{

"Targets":[ "/redfish/v1/UpdateService/FirmwareInventory/Motherboard_CPLD_[num]"]

, "@Redfish.OperationApplyTime":"Immediate"

}

UpdateFile: <File>

Note: After Motherboard CPLD update, it will trigger a BMC reset.

Use the image file available on the local system to update CPLD backplane firmware:

URI: /redfish/v1/UpdateService/FirmwareInventory

Method: POST

Response: 202

UpdateParameters:

{

"Targets":[ "/redfish/v1/UpdateService/FirmwareInventory/Backplane_[num]_CPLD_[num]"]

,"@Redfish.OperationApplyTime":"Immediate"

}

UpdateFile: <File>

Simple Update

Simple Update only supports BMC and BIOS. You can update the installed software component(s) as contained within a software image file located at a URI referenced by the ImageURI parameter, and preserve BMC config, SSL, SDR, and SMBIOS, BIOS BootConfg by default.

You are required to prepare the FTP, HTTP, or HTTPS file server to put BMC or BIOS firmware image file.

It is advised to power off on the host side before conducting a BIOS FW update.

URI: /redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate

Method: POST

Response: 202

Payload:

{

"ImageURI": "<file ip>/<path and image file name>",

"TransferProtocol": "FTP",

"Targets": ["/redfish/v1/Managers/1"]

}

Target value:

For BIOS Update, use "/redfish/v1/Systems/1" or "/redfish/v1/UpdateService/FirmwareInventory/BIOS".

For BMC Update, use "/redfish/v1/Managers/1" or "/redfish/v1/UpdateService/FirmwareInventory/BMC".

Updating Broadcom Storage Controller Firmware

You can check if the controller firmware update is supported or not under the location /redfish/v1/UpdateService/FirmwareInventory/Broadcom[num].

To update Broadcom firmware using the image file available on the local system:

URI: /redfish/v1/UpdateService/upload

Method: POST

Response: 202

UpdateParameters:

{"Targets":[ "/redfish/v1/Systems/1/Storage/HARAID#/StorageControllers/[num]"],"

@Redfish.OperationApplyTime":"OnStartUpdateRequest"}

UpdateFile: <File>

Note: Currently, this is supported to update HA-RAID 3108, 38xxIR, 39xx ,and BCOM 3916. After the update, it needs a system reboot for the new firmware to take effect.

Updating Marvell Storage Controller Firmware

You can check if the controller firmware update is supported or not under the location /redfish/v1/UpdateService/FirmwareInventory/Marvell[num].

To update Marvell firmware using the image file on the local system:

URI: /redfish/v1/UpdateService/upload

Method: POST

Response: 202

UpdateParameters:

{"Targets":[ "/redfish/v1/Systems/1/Storage/MRVL.HARAID#/StorageControllers/[num]"],

"@Redfish.OperationApplyTime":"OnStartUpdateRequest"}

UpdateFile: <File>

Updating AOC NIC Firmware

“NIC [num]” exists under the Redfish/v1 directory when your AOC NIC controller is supported. To ensure that you can update the AOC NIC controller firmware, check if “NIC [num]” exists in the URI /redfish/v1/UpdateService/FirmwareInventory/NIC[num].

To update AOC NIC firmware, use the image file on the local system:

URI: /redfish/v1/UpdateService/upload

Method: POST

Response: 202

UpdateParameters:

{"Targets":[ "//redfish/v1/UpdateService/FirmwareInventory/NIC[num]"],

"@Redfish.OperationApplyTime":"OnStartUpdateRequest"}

UpdateFile: <File>

Updating UBB CPLD Firmware

URI: /redfish/v1/UpdateService/upload

Method: POST

Response: 202

UpdateParameters:

{"Targets":[ “/redfish/v1/UpdateService/FirmwareInventory/UBB_1_CPLD_1"], "@Redfish.OperationApplyTime":"Immediate"}

UpdateFile: <File>

Updating UBB Retimer Firmware

URI: /redfish/v1/UpdateService/upload

Method: POST

Response: 202

UpdateParameters:

{"Targets":[ "/redfish/v1/UpdateService/FirmwareInventory/UBB_1_Retimer_1"],"@Redfish.OperationApplyTime":"Immediate""}

UpdateFile: <File>

Updating SSL Certificate and Key

Update the SSL certificate and key for a secure web server connection.

URI: /redfish/v1/UpdateService/Oem/Supermicro/SSLCert/Actions/SmcSSLCert.Upload

Payload:

  1. Change the type to “form-data”.

  2. Select cert_file and key_file as keys, browse and select the respective files to upload.

{

"cert_file": "server_certificate_4096.pem", "key_file": "server_private_4096.pem"

}