Firmware Debug Toolbox Overview

A practical knowledge map for UEFI Shell, ACPI, PCI, image analysis, security validation, and OS-side firmware debugging tools.

4 min read
Shell & Firmware Tools cover

A board fails before the OS can give you a nice error message.

There is no source code on the desk. The customer only sends a BIOS binary, a screenshot from Device Manager, and one line: “after update, boot option disappeared”.

This is where firmware work becomes less about one magic command and more about choosing the right tool for the right layer.

01 Image

BIOS binary analysis

Use UEFITool and IFR extraction to inspect firmware volumes, setup forms, PEI/DXE modules, and hidden setup logic.

02 Pre-boot

UEFI Shell

Use map, fs0:, dmpstore, bcfg, drivers, dh, devtree, memmap, mem, and mm before the OS takes control.

03 ACPI

Table and AML analysis

Use acpidump, iasl, and acpiexec to inspect DSDT, SSDT, namespace methods, resources, EC, GPIO, and power methods.

04 PCI

Enumeration and config space

Use lspci and setpci to validate BDF, Vendor ID, Device ID, BARs, Command Register, and capabilities.

05 OS

Driver binding view

Use Device Manager, Event Viewer, journalctl, dmesg, and sysfs to check what the OS actually consumed.

06 Security

Firmware validation

Use CHIPSEC and platform utilities to check BIOS write protection, SMM lock, Secure Boot state, and SPI configuration.

Firmware debugging tool map

The wrong way to learn tools

Many engineers memorize commands like this:

map -r
dmpstore
bcfg boot dump
lspci -vv
iasl -d dsdt.dat

That is useful, but not enough.

A better habit is to ask:

What layer am I trying to observe?
What state should exist at this layer?
Which tool can prove or disprove that state?

Tool layers

Item Value Note
UEFI Shell Pre-OS runtime Best for boot options, device handles, drivers, filesystems, memory map, and raw register checks.
UEFITool Firmware image Best for firmware volume, FFS, PE32, GUID, setup module, and binary structure inspection.
IFR Extractor HII setup logic Best for hidden setup options, SuppressIf, GrayOutIf, VarStore, QuestionId, and defaults.
acpidump / iasl ACPI handoff Best for DSDT, SSDT, AML, resources, operation regions, and OS-visible device description.
lspci / setpci PCI config space Best for enumeration, BARs, command register, bridges, and capabilities.
Device Manager / dmesg OS driver view Best for driver binding, unknown device, resource conflict, and power management symptoms.
CHIPSEC Security posture Best for BIOS write protection, SMM protections, Secure Boot state, and SPI flash validation.

Real world example: boot option disappeared after BIOS update

Do not start by blaming the OS.

A more useful path is:

dmpstore BootOrder

dmpstore Boot0001

bcfg boot dump

Device Path check

BDS behavior

OS boot manager

If BootOrder is missing in Shell, Windows never had a chance to boot from it. If BootOrder exists but the device path points to a disk that no longer maps correctly, the problem moves toward BDS, storage enumeration, or device path generation.

Real world example: device missing in OS

lspci

ACPI _STA

ACPI _HID / _CID

_CRS resources

Driver binding

A PCI device missing from lspci is different from an ACPI platform device missing from Device Manager. One points toward enumeration, reset, clock, or link training. The other often points toward _STA, _HID, _CRS, or _DSM.

Debug checklist

Before choosing a tool

A small checklist that prevents random command hunting.

Future Blog Ideas

  • 10 UEFI Shell Commands Every BIOS Engineer Uses
  • How I Debugged a Missing Boot Option with dmpstore and bcfg
  • Reading a BIOS Image with UEFITool from Zero
  • Firmware Debug Toolbox for New BIOS Engineers

Found this useful?

Save it or share it with someone learning firmware, BIOS/UEFI, and embedded systems.

Nội dung liên quan

Một số bài viết, ghi chú hoặc project có liên quan đến nội dung bạn vừa đọc.

Biến note thành bài viết hoàn chỉnh

Notes là nơi ghi nhanh khái niệm.