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.
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. Nothing was built or run, and the reviewed sources establish no REA connection.
About this entry
- Type
- Tool
- Category
- Firmware tools
- Relationship
- Foundation tool
- Targets
- Firmware
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · google/pawn · Revision 45b7b38
- pawn/pawn.cc GitHub · google/pawn · Revision 45b7b38
- pawn/chipset.cc GitHub · google/pawn · Revision 45b7b38
- pawn/chipset_intel_9_series.h GitHub · google/pawn · Revision 45b7b38
- CMakeLists.txt GitHub · google/pawn · Revision 45b7b38
- cmake/PawnDeps.cmake GitHub · google/pawn · Revision 45b7b38
- .github/workflows/ubuntu-cmake.yml GitHub · google/pawn · Revision 45b7b38
- debian/changelog GitHub · google/pawn · Revision 45b7b38
- LICENSE GitHub · google/pawn · Revision 45b7b38
- https://github.com/google/pawn/releases/tag/v0.2
More in Firmware and hardware
- EMBArk · Tool
- IDAPython Embedded Toolkit · Tool
- fiano · Tool
- Pyrrha · Tool
- ThinkPad IMX471: recovering camera tuning for Linux · Case study
- MXQ PRO RK3229: an Android firmware investigation and Linux repurposing · Case study