| #
0d1c20b0
|
| 21-Sep-2025 |
Kevin Tung <kevin.tung@quantatw.com> |
common: host power utility: add host-state-transition-timeout option
Introduce a configurable host-state-transition-timeout to control how long the utility waits for a host state change. The previou
common: host power utility: add host-state-transition-timeout option
Introduce a configurable host-state-transition-timeout to control how long the utility waits for a host state change. The previous 12s timeout was insufficient for a graceful power off, leading to false timeout errors.
This option is used by the bios-software-update service to control the host state transition timeout when turning the host off and on before and after a BIOS update.
Change-Id: I9209d8f06f55eaf181235198c20c32c93861f841 Signed-off-by: Kevin Tung <kevin.tung.openbmc@gmail.com>
show more ...
|
| #
c538727d
|
| 28-Jul-2025 |
Kevin Tung <kevin.tung@quantatw.com> |
TPM code updater
This commit introduces a TPM code updater that currently supports reading the firmware version for both Infineon and Nuvoton TPM 2.0. Support for firmware updates will be introduced
TPM code updater
This commit introduces a TPM code updater that currently supports reading the firmware version for both Infineon and Nuvoton TPM 2.0. Support for firmware updates will be introduced in a future patch.
The updater's configuration are managed by the EM [1]. [1] https://gerrit.openbmc.org/c/openbmc/entity-manager/+/82416
Tested on Yosemite5 with the following steps:
1. Display the fw inventory: ``` curl --silent $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory", "@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection", "Members": [ {...}, { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_TPM_4945" }, {...} ], "Members@odata.count": 4, "Name": "Software Inventory Collection" } ```
2. Query TPM version: ``` curl --silent $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_TPM_4945 { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_TPM_4945", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Unknown image", "Id": "Yosemite5_TPM_4945", "Name": "Software Inventory", "Status": { "Health": "Warning", "HealthRollup": "OK", "State": "Disabled" }, "Updateable": false, "Version": "15.23" } ```
Change-Id: I42568242356d55fe005ba1f41ddf8aaf9f682fc8 Signed-off-by: Kevin Tung <kevin.tung.openbmc@gmail.com>
show more ...
|
| #
f6470b5e
|
| 26-Feb-2025 |
Daniel Hsu <Daniel-Hsu@quantatw.com> |
fw-update: cpld code updater
This commit introduces a code updater for CPLD. The Key features of this updater include: - configuring chip vendor and name - update CPLD through I2C
1. Display the fw
fw-update: cpld code updater
This commit introduces a code updater for CPLD. The Key features of this updater include: - configuring chip vendor and name - update CPLD through I2C
1. Display the fw inventory curl ... -X GET https://localhost/redfish/v1/UpdateService/FirmwareInventory { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory", "@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection", "Members": [ ... { "@odata.id": ".../LCMXO3LF_4300C_6194" }, ... ], "Members@odata.count": 26, "Name": "Software Inventory Collection" }
2. Query CPLD version curl ... -X GET https://localhost/redfish/v1 /UpdateService/FirmwareInventory/LCMXO3LF_4300C_6194 { "@odata.id": "/.../LCMXO3LF_4300C_6194", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Unknown image", "Id": "LCMXO3LF_4300C_6194", "Name": "Software Inventory", "Status": { "Health": "Warning", "HealthRollup": "OK", "State": "Disabled" }, "Updateable": false, "Version": "00000220" }
3. Trigger the fw update via redfish curl -k -H "X-Auth-Token: $token" -H "Content-Type:multipart/form-data" -X POST -F UpdateParameters="{\"Targets\": [\"/redfish/v1/UpdateService/FirmwareInventory/LCMXO3LF_4300C_6194\"], \"@Redfish.OperationApplyTime\":\"Immediate\"};type=application/json" -F "UpdateFile=@testcpld.pldm;type=application/octet-stream" https://${bmc}/redfish/v1/UpdateService/update { "@odata.id": "/redfish/v1/TaskService/Tasks/0", "@odata.type": "#Task.v1_4_3.Task", "Id": "0", "TaskState": "Running", "TaskStatus": "OK" }
4. Query Task status curl ... -X GET https://localhost/redfish/v1/TaskService/Tasks/0 { "@odata.id": "/redfish/v1/TaskService/Tasks/0", "@odata.type": "#Task.v1_4_3.Task", "EndTime": "2025-05-28T08:10:22+00:00", "HidePayload": false, "Id": "0", "Messages": [ { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has started.", "MessageArgs": [ "0" ], "MessageId": "TaskEvent.1.0.TaskStarted", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 15 percent complete.", "MessageArgs": [ "0", "15" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 20 percent complete.", "MessageArgs": [ "0", "20" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 25 percent complete.", "MessageArgs": [ "0", "25" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 30 percent complete.", "MessageArgs": [ "0", "30" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 40 percent complete.", "MessageArgs": [ "0", "40" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 50 percent complete.", "MessageArgs": [ "0", "50" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 60 percent complete.", "MessageArgs": [ "0", "60" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 70 percent complete.", "MessageArgs": [ "0", "70" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 80 percent complete.", "MessageArgs": [ "0", "80" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 90 percent complete.", "MessageArgs": [ "0", "90" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 100 percent complete.", "MessageArgs": [ "0", "100" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has completed.", "MessageArgs": [ "0" ], "MessageId": "TaskEvent.1.0.TaskCompletedOK", "MessageSeverity": "OK", "Resolution": "None." } ], "Name": "Task 0", "Payload": { "HttpHeaders": [], "HttpOperation": "POST", "JsonBody": "null", "TargetUri": "/redfish/v1/UpdateService/update" }, "PercentComplete": 100, "StartTime": "2025-05-28T08:10:06+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0", "TaskState": "Completed", "TaskStatus": "OK" }
5. Display the fw inventory with newly updated fw. curl ... -X GET https://localhost/redfish/v1/UpdateService/FirmwareInventory { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory", "@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection", "Members": [ ... { "@odata.id": ".../LCMXO3LF_4300C_1571" }, ... ], "Members@odata.count": 26, "Name": "Software Inventory Collection" }
6. Query CPLD version again After AC cycle ..., so the number would be different. curl ... -X GET https://localhost/redfish/v1 /UpdateService/FirmwareInventory/LCMXO3LF_4300C_4643 { "@odata.id": "/.../LCMXO3LF_4300C_4643", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Unknown image", "Id": "LCMXO3LF_4300C_4643", "Name": "Software Inventory", "Status": { "Health": "Warning", "HealthRollup": "OK", "State": "Disabled" }, "Updateable": false, "Version": "00000224" }
Change-Id: Ife8e30a00bfbb307e6e4eb55838a397c8a8162bd Signed-off-by: Daniel Hsu <Daniel-Hsu@quantatw.com>
show more ...
|
| #
994a77ff
|
| 23-Dec-2024 |
Kevin Tung <Kevin.Tung@quantatw.com> |
eeprom device code updater
This commit introduces a code updater for EEPROM-based devices, such as Retimer connected to an EEPROM.
Key features include: - Configuring MUX GPIOs to switch EEPROM acc
eeprom device code updater
This commit introduces a code updater for EEPROM-based devices, such as Retimer connected to an EEPROM.
Key features include: - Configuring MUX GPIOs to switch EEPROM access to the BMC - Writing firmware directly to the EEPROM flash memory
The behavior and configuration of this updater are managed via EM, enabling flexibility and adaptability across different hardware setups. https://gerrit.openbmc.org/c/openbmc/entity-manager/+/77198
Tested on Harma:
1. Display the fw inventory ``` curl --silent $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory", "@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection", "Members": [ {...}, { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/MB_Retimer_9355" }, {...} ], "Members@odata.count": 26, "Name": "Software Inventory Collection" } ```
2. Query Retimer version. ``` curl $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory/MB_Retimer_9355 ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/MB_Retimer_9355", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Unknown image", "Id": "MB_Retimer_9355", "Name": "Software Inventory", "Status": { "Health": "Warning", "HealthRollup": "OK", "State": "Disabled" }, "Updateable": false, "Version": "1.31.23" } ```
3. Trigger the fw update via redfish. ``` curl -k ${creds} \ -H "Content-Type:multipart/form-data" \ -X POST \ -F UpdateParameters="{\"Targets\":[\"/redfish/v1/UpdateService/FirmwareInventory/MB_Retimer_9355\"],\"@Redfish.OperationApplyTime\":\"Immediate\"};type=application/json" \ -F "UpdateFile=@${fwpath};type=application/octet-stream" \ https://${bmc}/redfish/v1/UpdateService/update ```
4. Task is returned
``` { "@odata.id": "/redfish/v1/TaskService/Tasks/0", "@odata.type": "#Task.v1_4_3.Task", "Id": "0", "TaskState": "Running", "TaskStatus": "OK" } ```
5. Query Task status ``` curl --silent $creds https://$bmc/redfish/v1/TaskService/Tasks/0 ```
``` { "@odata.id": "/redfish/v1/TaskService/Tasks/0", "@odata.type": "#Task.v1_4_3.Task", "EndTime": "2025-04-17T08:35:58+00:00", "HidePayload": false, "Id": "0", "Messages": [ { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has started.", "MessageArgs": [ "0" ], "MessageId": "TaskEvent.1.0.TaskStarted", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has changed to progress 20 percent complete.", "MessageArgs": [ "0", "20" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has changed to progress 40 percent complete.", "MessageArgs": [ "0", "40" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has changed to progress 60 percent complete.", "MessageArgs": [ "0", "60" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has changed to progress 80 percent complete.", "MessageArgs": [ "0", "80" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has changed to progress 100 percent complete.", "MessageArgs": [ "0", "100" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has completed.", "MessageArgs": [ "0" ], "MessageId": "TaskEvent.1.0.TaskCompletedOK", "MessageSeverity": "OK", "Resolution": "None." } ], "Name": "Task 0", "Payload": { "HttpHeaders": [], "HttpOperation": "POST", "JsonBody": "null", "TargetUri": "/redfish/v1/UpdateService/update" }, "PercentComplete": 100, "StartTime": "2025-04-17T08:35:12+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0", "TaskState": "Completed", "TaskStatus": "OK" } ```
6. Display the fw inventory with newly updated fw. ``` curl --silent $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory", "@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection", "Members": [ {...}, { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/MB_Retimer_5686" }, {...} ], "Members@odata.count": 26, "Name": "Software Inventory Collection" } ```
7. Query the new fw version. ``` curl $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory/MB_Retimer_5686 ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/MB_Retimer_5686", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Unknown image", "Id": "MB_Retimer_5686", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": false, "Version": "2.8.19" } ```
Change-Id: Ic09f9289fa16d5df738e792348c0c817a15cb808 Signed-off-by: Kevin Tung <Kevin.Tung@quantatw.com>
show more ...
|
| #
7e446a40
|
| 22-Oct-2024 |
Christopher Meis <christopher.meis@9elements.com> |
Add i2c voltage regulator updater
- /i2c-vr: Classes following the design in [1] - /i2c-vr/vr.cpp, vr.hpp: General representation of a voltage regulators communication interface - /vr-i2c/xdpe1x2x
Add i2c voltage regulator updater
- /i2c-vr: Classes following the design in [1] - /i2c-vr/vr.cpp, vr.hpp: General representation of a voltage regulators communication interface - /vr-i2c/xdpe1x2xx: Support for Infineon XDPE1x2xx class of voltage regulators - /common/i2c/: Basic I2C communication interface
The configuration of a voltage regulator relies on the EM-Schema in [2]
1: https://github.com/openbmc/docs/blob/master/designs/code-update.md 2: https://gerrit.openbmc.org/c/openbmc/entity-manager/+/77463
Tested on QEMU/Yosemite4:
1. Display the firmware inventory ``` curl --insecure --user root:0penBmc \ https://127.0.0.1:2443/redfish/v1/UpdateService/FirmwareInventory ```
Output: ``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory", "@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection", "Members": [ { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/16bae6fd" }, { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/DummyDeviceFirmwareName_6637" }, { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Management_Board_cpld" }, {...} ```
2. Query voltage regulator version
The dummy device sets the default version to 0xBEEF (Decimal: 48879) ``` curl --insecure --user root:0penBmc \ https://127.0.0.1:2443/redfish/v1/UpdateService/FirmwareInventory/ DummyDeviceFirmwareName_4390 ```
Output: ``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/DummyDeviceFirmwareName_4390", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Other image", "Id": "DummyDeviceFirmwareName_4390", "Name": "Software Inventory", "Status": { "Health": "Warning", "HealthRollup": "OK", "State": "Disabled" }, "Updateable": false, "Version": "48879" } ```
3. Trigger the update ``` curl -k --insecure --user root:0penBmc \ -H "Content-Type:multipart/form-data" \ -X POST \ -F UpdateParameters="{\"Targets\":[\"/redfish/v1/UpdateService/FirmwareInventory/DummyDeviceFirmwareName_4390\"],\"@Redfish.OperationApplyTime\":\"Immediate\"};type=application/json" \ -F "UpdateFile=@fw_vr_update.bin;type=application/octet-stream" \ https://127.0.0.1:2443/redfish/v1/UpdateService/update ```
4. Task is returned ``` { "@odata.id": "/redfish/v1/TaskService/Tasks/0", "@odata.type": "#Task.v1_4_3.Task", "Id": "0", "TaskState": "Running", "TaskStatus": "OK" } ``` 5. Query the task ``` curl --insecure --user root:0penBmc \ https://127.0.0.1:2443/redfish/v1/TaskService/Tasks/0 ```
Output: ``` { "@odata.id": "/redfish/v1/TaskService/Tasks/0", "@odata.type": "#Task.v1_4_3.Task", "EndTime": "2025-03-10T13:47:34+00:00", "HidePayload": false, "Id": "0", "Messages": [ { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has started.", "MessageArgs": [ "0" ], "MessageId": "TaskEvent.1.0.TaskStarted", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has completed.", "MessageArgs": [ "0" ], "MessageId": "TaskEvent.1.0.TaskCompletedOK", "MessageSeverity": "OK", "Resolution": "None." } ], "Name": "Task 0", "Payload": { "HttpHeaders": [], "HttpOperation": "POST", "JsonBody": "null", "TargetUri": "/redfish/v1/UpdateService/update" }, "PercentComplete": 0, "StartTime": "2025-03-10T13:47:34+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0", "TaskState": "Completed", "TaskStatus": "OK" } ```
6. Display fw inventory after update ``` curl --insecure --user root:0penBmc \ https://127.0.0.1:2443/redfish/v1/UpdateService/FirmwareInventory ```
Output: ``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory", "@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection", "Members": [ { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/16bae6fd" }, { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/DummyDeviceFirmwareName_282" }, {...} } ```
7. Query the new fw version.
The version is 'mycompversion' since that's what has been set in the pldm fw update package for testing.
``` curl --insecure --user root:0penBmc \ https://127.0.0.1:2443/redfish/v1/UpdateService/FirmwareInventory/ DummyDeviceFirmwareName_282 ```
Output: ``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/DummyDeviceFirmwareName_282", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Other image", "Id": "DummyDeviceFirmwareName_282", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": false, "Version": "mycompversion" } ```
8. Update in progress error
``` curl -k --insecure --user root:0penBmc \ -H "Content-Type:multipart/form-data" \ -X POST \ -F UpdateParameters="{\"Targets\":[\"/redfish/v1/UpdateService/FirmwareInventory/${TARGET}\"],\"@Redfish.OperationApplyTime\":\"Immediate\"};type=application/json" \ -F "UpdateFile=@${FWPATH};type=application/octet-stream" \ https://127.0.0.1:2443/redfish/v1/UpdateService/update ```
Output: ``` { "error": { "@Message.ExtendedInfo": [ { "@odata.type": "#Message.v1_1_1.Message", "Message": "The request failed due to an internal service error. The service is still operational.", "MessageArgs": [], "MessageId": "Base.1.19.InternalError", "MessageSeverity": "Critical", "Resolution": "Resubmit the request. If the problem persists, consider resetting the service." } ], "code": "Base.1.19.InternalError", "message": "The request failed due to an internal service error. The service is still operational." } ```
Change-Id: I2e11a6c10ae40ed7719ceb86dfd6a38dd5b27017 Signed-off-by: Christopher Meis <christopher.meis@9elements.com>
show more ...
|
| #
f2c95a08
|
| 26-Nov-2024 |
Alexander Hansen <alexander.hansen@9elements.com> |
SPI device code updater
This code updater is for updating spi flash devices. It can for example update the host firmware on different server boards and has following features:
- power down the host
SPI device code updater
This code updater is for updating spi flash devices. It can for example update the host firmware on different server boards and has following features:
- power down the host before update - set mux gpios to access spi flash - (very limited) communication with ME (Management Engine) - use flashrom to utilize fw with IFD (Intel Flash Descriptor) - otherwise directly write to the flash chip.
The behavior of this code updater can be configured via EM.
Tested: on Tyan S8030 and Tyan S5549 Board. Steps below.
1. Display the fw inventory
``` curl --silent $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory", "@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection", "Members": [ { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/717f6f4d" }, { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/HostSPIFlash_4950" }, { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/bios_active" } ], "Members@odata.count": 3, "Name": "Software Inventory Collection" } ```
2. Query BIOS version. The version is "unknown" here since currently there is no interface enabled via which to query it.
``` curl $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory/HostSPIFlash_4950 ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/HostSPIFlash_4950", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Unknown image", "Id": "HostSPIFlash_4950", "Name": "Software Inventory", "Status": { "Health": "Warning", "HealthRollup": "OK", "State": "Disabled" }, "Updateable": true, "Version": "unknown" } ```
3. Trigger the fw update via redfish.
``` curl -k ${creds} \ -H "Content-Type:multipart/form-data" \ -X POST \ -F UpdateParameters="{\"Targets\":[\"/redfish/v1/UpdateService/FirmwareInventory/HostSPIFlash_6041\"],\"@Redfish.OperationApplyTime\":\"Immediate\"};type=application/json" \ -F "UpdateFile=@${fwpath};type=application/octet-stream" \ https://${bmc}/redfish/v1/UpdateService/update ```
4. Task is returned
``` { "@odata.id": "/redfish/v1/TaskService/Tasks/0", "@odata.type": "#Task.v1_4_3.Task", "Id": "0", "TaskState": "Running", "TaskStatus": "OK" } ```
5. Query Task status ``` curl --silent $creds https://$bmc/redfish/v1/TaskService/Tasks/0 ```
``` { "@odata.id": "/redfish/v1/TaskService/Tasks/0", "@odata.type": "#Task.v1_4_3.Task", "EndTime": "2025-02-18T14:05:46+00:00", "HidePayload": false, "Id": "0", "Messages": [ { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has started.", "MessageArgs": [ "0" ], "MessageId": "TaskEvent.1.0.TaskStarted", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has changed to progress 10 percent complete.", "MessageArgs": [ "0", "10" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has changed to progress 20 percent complete.", "MessageArgs": [ "0", "20" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has changed to progress 70 percent complete.", "MessageArgs": [ "0", "70" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has changed to progress 100 percent complete.", "MessageArgs": [ "0", "100" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has completed.", "MessageArgs": [ "0" ], "MessageId": "TaskEvent.1.0.TaskCompletedOK", "MessageSeverity": "OK", "Resolution": "None." } ], "Name": "Task 0", "Payload": { "HttpHeaders": [], "HttpOperation": "POST", "JsonBody": "null", "TargetUri": "/redfish/v1/UpdateService/update" }, "PercentComplete": 90, "StartTime": "2025-02-18T14:04:47+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0", "TaskState": "Completed", "TaskStatus": "OK" } ```
6. Display the fw inventory with newly updated fw. ``` curl --silent $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory", "@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection", "Members": [ { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/717f6f4d" }, { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/HostSPIFlash_8728" }, { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/bios_active" } ], "Members@odata.count": 3, "Name": "Software Inventory Collection" } ```
7. Query the new fw version.
The version is 'mycompversion' since that's what has been set in the pldm fw update package for testing.
``` curl $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory/HostSPIFlash_8728 ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/HostSPIFlash_8728", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Unknown image", "Id": "HostSPIFlash_8728", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": false, "Version": "mycompversion" } ```
Change-Id: I27803b7fded71af2364c2f55fad841a410603dec Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
show more ...
|
| #
ec807fcb
|
| 03-Feb-2025 |
Patrick Williams <patrick@stwcx.xyz> |
meson: reformat with meson formatter
Apply the `meson format` results.
Change-Id: Ifc60fd8e7091d83202753a57f215667613f1691c Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
|
| #
cc49878d
|
| 29-Feb-2024 |
Jagpal Singh Gill <paligill@gmail.com> |
start-update-interface: add the new app
Add the meson option for the start update D-Bus interface implementation. Add the SoftwareManager new daemon to run in parallel with existing code. The intent
start-update-interface: add the new app
Add the meson option for the start update D-Bus interface implementation. Add the SoftwareManager new daemon to run in parallel with existing code. The intention for new daemon is to combine ImageManager and ItemUpdater into one. After due testing and verifications ImageManager and ItemUpdater would be retired for SoftwareManager. For more more details on design refer to - https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/65738 https://gerrit.openbmc.org/c/openbmc/docs/+/65739
Change-Id: Id11823ca0ff62e76595aa4ad33212a2a2428c261 Signed-off-by: Jagpal Singh Gill <paligill@gmail.com>
show more ...
|
| #
294991a2
|
| 19-Apr-2023 |
Konstantin Aladyshev <aladyshev22@gmail.com> |
meson: Drop legacy 'verify-signature' option
Currently there are two options for the image signature verification: - 'verify-signature' (legacy), - 'verify-full-signature' (current).
Drop legacy op
meson: Drop legacy 'verify-signature' option
Currently there are two options for the image signature verification: - 'verify-signature' (legacy), - 'verify-full-signature' (current).
Drop legacy option and let the current one take its place.
Change-Id: Ia205424395179fd190e3d055159beca93cff0545 Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
show more ...
|
| #
123dde15
|
| 15-Aug-2023 |
George Liu <liuxiwei@inspur.com> |
meson_options.txt: Support for reading options from meson.options
Support has been added for reading options from meson.options instead of meson_options.txt[1]. These are equivalent, but not using t
meson_options.txt: Support for reading options from meson.options
Support has been added for reading options from meson.options instead of meson_options.txt[1]. These are equivalent, but not using the .txt extension for a build file has a few advantages, chief among them many tools and text editors expect a file with the .txt extension to be plain text files, not build scripts.
[1] https://mesonbuild.com/Release-notes-for-1-1-0.html#support-for-reading-options-from-mesonoptions
Signed-off-by: George Liu <liuxiwei@inspur.com> Change-Id: I2468f7c524e8e0596e3e1feef0c38c9f83b91313
show more ...
|