Skip to content
Ralf Steinert edited this page Oct 29, 2026 · 2 revisions

boot-log-diff compares the serial boot log of an embedded board with the log of a known-good board — the golden log — and shows only what really differs. Timestamps, addresses, dates, transfer rates and other values that change on every boot are masked first. Known fault patterns, like a PHY that is not found or an eMMC timeout, come with a diagnosis: what usually causes the message and what to check on the board.

boot-log-diff in a terminal: two changed facts, two known faults with diagnosis, and the lines that differ

The two example logs in the repository are 67 lines each. A plain diff marks 60 of them; boot-log-diff finds the four places that matter — half the RAM, an Ethernet PHY that is not found, an SD card slot that times out — and says where to look for the last two.

What it is for

  • Board repair. Power up the faulty board, capture the console, compare with a good board. The deviations point to the subsystem; the diagnosis to the first parts to check.
  • Production test. A boot check at the end-of-line station: exit status for the test sequencer, JUnit XML for the test system, an HTML page for the test record or the repair ticket.
  • CI for embedded software. Boot a new image on a board farm and see whether a driver, a device or a value went missing.

Where to start

If you want to … read
install it and compare your first two logs Getting started
get a clean log from the serial console Capturing boot logs
make the comparison quiet on healthy boards Building a golden log
know what the fault diagnosis covers, add your own Known faults
use it in GitLab, Jenkins, GitHub Actions or pytest Reports and CI
find out why it reports too much or too little Troubleshooting

The README is the complete reference of all options. This wiki adds walkthroughs and background.

At a glance

Install pip install boot-log-diff (Python 3.10+, no dependencies on 3.11+)
Input any text capture of a serial console: minicom, picocom, PuTTY, grabserial, stdin
Masks kernel timestamps, dates, hex addresses, MAC/IP, UUIDs, durations, rates, temperatures, BogoMIPS — plus your own
Facts board model, U-Boot and kernel version, DRAM, kernel memory, CPU count — plus your own
Known faults 23 built-in patterns with diagnosis; your own in TOML
Output text, JSON, JUnit XML, HTML; exit status 0/1/2
Tested on Linux, Windows, macOS; Python 3.10 and 3.13
License MIT

Clone this wiki locally