Star on GitHubStar1.1k stars

Tool

Pawn

Linux command-line tool from Google that reads the BIOS/UEFI firmware image out of the SPI flash of Intel-based workstations and laptops. Running as root, it identifies the chipset's LPC bridge over PCI, maps the chipset's root-complex registers through /dev/mem, and reports the flash descriptor regions and the BIOS write- and read-protection settings it finds. It then reads the flash through the SPI controller's hardware sequencing into a single image file, which the README suggests processing further with tools such as UEFITool.

Targets
Firmware
Category
Firmware tools
Relationship
Foundation tool
Sources reviewed

Requirements & limits

  • Releases v0.1 and v0.2, published 2017-08-30 and 2017-09-09, each ship a Debian amd64 package with its source; the reviewed main commit, from 2026-02-17, updates dependencies and GitHub Actions and still declares version 0.2. The README states that Pawn is not an official Google product. Builds need Linux on x86_64 (FreeBSD might also work, per the README), CMake 3.31+, GCC or Clang 7+ and Ninja or Make; CMake fetches Abseil, and GoogleTest for tests, at pinned commits. CI builds and runs the unit test on Ubuntu 24.04 and keeps the binary only as a workflow artifact.
  • Runs as root on the machine whose firmware is read, using I/O-port access to PCI configuration space and /dev/mem. On Linux kernels newer than 4.8.4 the README requires CONFIG_IO_DEVMEM=n or booting with iomem=relaxed; the program's own error message names IO_STRICT_DEVMEM. Only Intel ICH8, ICH9 and ICH10 and 6 to 9 Series chipsets are recognized, the newest being the 9 Series whose datasheet the source cites from May 2014; the BIOS must boot from SPI flash in descriptor mode.
  • It always reads 16 MiB from flash address 0, so flash beyond that size is not dumped, and failed block reads are ignored; the default output name is bios_via_spi_hs.bin. The repository contains only source, build and Debian packaging files, with no firmware images; a dump is the machine vendor's firmware and keeps the vendor's rights.
  • Apache-2.0.

About this entry

The description was reviewed against primary sources.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.md GitHub · google/pawn · Revision 45b7b38
  2. pawn/pawn.cc GitHub · google/pawn · Revision 45b7b38
  3. pawn/chipset.cc GitHub · google/pawn · Revision 45b7b38
  4. pawn/chipset_intel_9_series.h GitHub · google/pawn · Revision 45b7b38
  5. CMakeLists.txt GitHub · google/pawn · Revision 45b7b38
  6. cmake/PawnDeps.cmake GitHub · google/pawn · Revision 45b7b38
  7. .github/workflows/ubuntu-cmake.yml GitHub · google/pawn · Revision 45b7b38
  8. debian/changelog GitHub · google/pawn · Revision 45b7b38
  9. LICENSE GitHub · google/pawn · Revision 45b7b38
  10. https://github.com/google/pawn/releases/tag/v0.2

More in Firmware and hardware

All 89 entries in Firmware and hardware

↑↓ move↵ open⌘↵ new tab