// This is included in the following assemblies:
//
// * installing/installing_bare_metal/bare-metal-postinstallation-configuration.adoc

:_mod-docs-content-type: REFERENCE
[id="bmo-about-the-hostfirmwarecomponents-resource_{context}"]
= About the `HostFirmwareComponents` resource

[role="_abstract"]
You can use the `HostFirmwareComponents` resource to view and update Basic Input/Output System (BIOS), baseboard management controller (BMC), and network interface controller (NIC) firmware versions for bare-metal hosts.

To update NIC host firmware components, the server must support Redfish and must permit you to use Redfish to update NIC firmware. You can use Metal^3^ to update NIC host firmware components for the Intel Ethernet 800 Series (`ice` driver) and the NVIDIA Mellanox ConnectX-6 (CX6) and ConnectX-7 (CX7) (`mlx_5` driver). The updates are validated on Dell hardware. The following list outlines important considerations before you update the NICs:

* If you have more than one network adapter with the same type of NIC, for example, Intel Ethernet 800 Series, when you update one NIC the update might be applied to multiple NICs. Redfish identifies all components that can benefit from the update and then applies the image to all these components.
* You cannot necessarily update a listed network adapter. A machine might use Redfish to display their NIC and firmware information, but prevent you from updating the adapter through Redfish. For more information about checking if you can update a network adapter, see "Identifying the NICs `HostFirmwareComponents` resources you can update".

The `HostFirmwareComponents` resource contains two sections:

. The `HostFirmwareComponents` spec
. The `HostFirmwareComponents` status

== `HostFirmwareComponents` spec

The `spec` section of the `HostFirmwareComponents` resource defines the desired state of the BIOS and BMC versions of the host, and the NIC firmware components of the host if the information is available by using Redfish.

.HostFirmwareComponents spec
[options="header"]
|====
|Parameters |Description

a|
----
updates:
  component:
  url:
----
a| The `updates` configuration setting contains the components to update. The fields are:

* `component`: The name of the component. The valid settings are `bios`, `bmc`, or `nic:<ID>`.

* `url`: The URL to the component's firmware specification and version.
|====


== `HostFirmwareComponents` status

The `status` section of the `HostFirmwareComponents` resource returns the current status of the BIOS and BMC versions of the host, and the NIC firmware components of the host if the information is available by using Redfish.

.HostFirmwareComponents status
[options="header"]
|====
|Parameters |Description

a|
----
components:
  component:
  initialVersion:
  currentVersion:
  lastVersionFlashed:
  updatedAt:
----
a| The `components` section contains the status of the components. The fields are:

* `component`: The name of the firmware component. It returns `bios`, `bmc`, `nic:<ID1>`, or `nic:<ID2>`.

* `initialVersion`: The initial firmware version of the component. Ironic retrieves this information when creating the `BareMetalHost` resource. You cannot change it.

* `currentVersion`: The current firmware version of the component. Initially, the value matches the `initialVersion` value until Ironic updates the firmware on the bare-metal host.

* `lastVersionFlashed`: The last firmware version of the component flashed on the bare-metal host. This field returns `null` until Ironic updates the firmware.

* `updatedAt`: The timestamp when Ironic updated the bare-metal host's firmware.

a|
----
updates:
  component:
  url:
----
a| The `updates` configuration setting contains the updated components. The fields are:

* `component`: The name of the component.

* `url`: The URL to the component's firmware specification and version.
|====
