Firmware Debug Toolbox Overview
A practical knowledge map for UEFI Shell, ACPI, PCI, image analysis, security validation, and OS-side firmware debugging tools.
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.
BIOS binary analysis
Use UEFITool and IFR extraction to inspect firmware volumes, setup forms, PEI/DXE modules, and hidden setup logic.
UEFI Shell
Use map, fs0:, dmpstore, bcfg, drivers, dh, devtree, memmap, mem, and mm before the OS takes control.
Table and AML analysis
Use acpidump, iasl, and acpiexec to inspect DSDT, SSDT, namespace methods, resources, EC, GPIO, and power methods.
Enumeration and config space
Use lspci and setpci to validate BDF, Vendor ID, Device ID, BARs, Command Register, and capabilities.
Driver binding view
Use Device Manager, Event Viewer, journalctl, dmesg, and sysfs to check what the OS actually consumed.
Firmware validation
Use CHIPSEC and platform utilities to check BIOS write protection, SMM lock, Secure Boot state, and SPI configuration.
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.
Related notes
- UEFI Shell for Firmware Engineers
- dmpstore Deep Dive
- bcfg Deep Dive
- UEFITool for BIOS Image Analysis
- IFR Extractor for Hidden Setup Options
- ACPI Debug Toolbox
- PCI Enumeration Troubleshooting
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.
Boot Failure Playbook
A firmware engineer playbook for debugging missing boot options, invalid BootOrder, broken Device Paths, and BDS boot failures.
UEFI Shell Filesystem Mapping
A practical guide to map, fs0, removable media, ESP visibility, and why Shell filesystem aliases can change.
UEFI Shell for Firmware Engineers
How to use UEFI Shell as a pre-OS debug environment instead of treating it as a simple command prompt.
Biến note thành bài viết hoàn chỉnh
Notes là nơi ghi nhanh khái niệm.