UEFI HII Database Role in Setup Menus

The Unified Extensible Firmware Interface (UEFI) Human Interface Infrastructure (HII) database acts as the central repository for all user interface data within modern firmware environments. This article explains the architectural function of the HII database, detailing how it collects configuration forms, localized strings, and visual assets from independent hardware drivers, and how the setup browser processes this data to generate dynamic, interactive BIOS/UEFI setup menus.

Centralized Repository for UI Packages

The UEFI HII database operates as a shared, system-wide clearinghouse for configuration data. During the Driver Execution Environment (DXE) phase of the boot process, individual UEFI drivers, silicon initialization modules, and platform management code publish their configuration interfaces directly to the HII database.

Instead of embedding UI rendering logic within individual drivers, developers package user interface definitions into standardized HII package lists. These packages include:

  • Forms (IFR - Internal Form Representation): Bytecode that defines the layout of setup pages, including menus, submenus, checkboxes, numeric inputs, and dropdown lists.
  • Strings: Multi-language text strings assigned unique numeric tokens (String IDs) to support localization.
  • Fonts: Glyph definitions required to render characters across different display formats and character sets.
  • Images and Animations: Visual assets used in graphical UEFI interfaces.

Decoupling Interface Logic from Display Rendering

A primary function of the HII database in setup menus is the separation of presentation from business logic. Drivers do not draw pixels or print text directly to the screen. Instead, a dedicated UEFI component called the Setup Browser (or Form Browser) queries the HII database, parses the registered form packages, and renders the user interface.

This abstraction allows firmware vendors to change the entire look and feel of the setup utility—switching between a legacy text-based interface and a high-resolution graphical interface with mouse support—without altering the underlying driver code that published the forms.

Dynamic Menu Generation

The setup menu seen by the end user is not a monolithic application; it is dynamically compiled at runtime using the contents of the HII database. When the setup utility launches, the browser enumerates all registered form sets.

Features such as CPU configuration, storage settings, boot order, and vendor-specific device options are loaded from separate drivers into unified setup pages. Drivers can also use HII callback mechanisms to dynamically alter forms based on user interaction—such as graying out unavailable settings or revealing advanced sub-menus when an option is enabled.

Multi-Language Localization

The HII database is responsible for seamless real-time language switching in firmware setup menus. Form definitions do not contain hardcoded display text; they reference String IDs. When a user changes the language setting in the BIOS menu, the setup browser queries the HII database for string packages corresponding to the newly selected RFC 4646 language tag (e.g., en-US, zh-Hans, fr-FR). The database swaps the display strings instantly without requiring a platform reboot or structural changes to the menu layout.

Configuration Routing and State Persistence

Beyond visual display, the HII database links UI elements to actual system state. The HII configuration routing protocols map form elements to underlying platform storage, typically non-volatile NVRAM variables. When a user modifies an option in the setup menu, the browser communicates through the HII infrastructure to extract, validate, and write the updated configurations back to the hardware or non-volatile storage, ensuring changes persist across system restarts.