CrOS Board Info CBI is used to store static board information, such as BOARD_VERSION, SKU_ID and configuration information. This information allows a single firmware image to support multiple hardware variants.
CBI data can be stored in several ways:
CBI In Flash documentation.EEPROM documentation for details.The CBI contains information that the firmware uses at runtime to adapt its behavior to the specific hardware present on a device. Different mechanisms exist depending on the age of the device platform.
Legacy devices utilize two distinct mechanisms for firmware configuration:
FW_CONFIG): A 32-bit field that stores non-probeable characteristics tied to a specific SKU, such as the presence of a backlit keyboard.SSFC): A 32-bit field used to handle probeable, second-source components (e.g., different codecs, sensors) that do not affect the device's SKU.Newer devices use a new unified system called Unified Firmware and Second-source Configuration (UFSC). This system replaces the separate FW_CONFIG and SSFC fields with a single, schema-driven 128-bit (4-DWORD) value.
Refer to Kconfig.cbi for all the Kconfig options that control CBI behavior. The appropriate configuration system (UFSC, FW_CONFIG, or SSFC) is typically enabled automatically based on the devicetree configuration.
The ectool cbi command can be run from the kernel to get/set FW_CONFIG and SSFC values. The console has a “cbi” command that can be used to do the same thing from the EC console.