Skip to content
Firmlog

Find what broke, and the lines that prove it.

Paste a UART capture, an RTOS crash dump, or dmesg. Firmlog names the failure, quotes the evidence, and tells you what to check next.

1[00:00:00.050] BOOT: STM32F407 telemetry node
2[00:00:00.500] I2C1: xfer addr=0x68 reg=0x3B len=14 OK dur=0.4ms retry=0
3[00:00:02.000] SENSOR: MPU6050 sample task running
4[00:00:03.140] I2C1: xfer addr=0x68 reg=0x3B len=14 ERR=TIMEOUT(clock_stretch) retry=1
[00:00:03.200] <err> os: ***** HARD FAULT *****
[00:00:03.200] <err> os: Forced HardFault
[00:00:03.200] <err> os: HFSR=0x40000000
[00:00:03.200] <err> os: CFSR=0x00008200
9[00:00:03.200] <err> os: BFAR=0xA0000004
[00:00:03.200] <err> os: stacked PC=0x08001234 LR=0x0800ABCD
Open this log in the analyzer

What it finds

CPU faults and panics
HardFault, BusFault, UsageFault, Guru Meditation, RISC-V exceptions, kernel Oops. Decodes CFSR, HFSR and BFAR bits and names the panic cause.
Guru Meditation Error: Core 1 panic'ed (LoadProhibited)
Assertions and aborts
assert(), abort(), ESP_ERROR_CHECK, Zephyr and NuttX asserts, Rust panics.
assert failed: xQueueGenericSend queue.c:936 (pxQueue)
Watchdogs
Task, interrupt and hardware watchdogs. Names the task that starved and what each CPU was running.
E (11034) task_wdt: Task watchdog got triggered
Resets and boot loops
Brownout, reset reasons, and boot banners that keep repeating.
rst:0xf (BROWNOUT_RST),boot:0x13 (SPI_FAST_FLASH_BOOT)
Stack and heap
Stack overflow hooks and canaries, failed allocations, heap corruption.
CORRUPT HEAP: Bad tail at 0x3ffde6fd. Expected 0xbaad5678
I2C, SPI, UART, DMA
NACKs, stuck buses, framing and overrun errors. Compares devices on the same bus to tell one bad part from a bad bus.
I2C1: xfer addr=0x68 reg=0x3B len=14 ERR=NACK(addr)
Storage
SD and eMMC timeouts, filesystem errors, journal aborts, read-only remounts.
mmc0: Timeout waiting for hardware interrupt - cmd25
Early warnings
Limits crossed, late watchdog kicks, dropped messages, clock fallbacks, corrected ECC errors — problems that have not crashed anything yet.
WDT: kick interval 1200ms (nominal 500ms), margin low
Everything else logged as an error
Error-level lines that match no rule are still listed, so nothing is silently dropped.
<err> display_st7735r: Could not exit sleep

Why you can trust a result

Quoted

Every finding lists its line numbers and highlights the exact text that matched. If it is not in your log, it is not in the result.

Decoded

Fault registers, panic causes and reset reasons are decoded from the values in the dump. They are read, not guessed.

Guesses are labelled

Likely causes sit in their own list, marked as unproven. Two events close together are reported as timing, never as cause and effect.

The rules are regression-tested on log excerpts from more than 50 public bug reports, each with a healthy look-alike that must stay silent.

Reads logs from

  • ESP-IDF
  • Arduino-ESP32
  • ESP8266
  • Zephyr
  • FreeRTOS
  • STM32 HAL
  • NuttX
  • Mbed OS
  • RIOT
  • Embedded Rust
  • Linux dmesg
  • Klipper
  • Marlin

What happens to your log

Nothing is stored

Your log is parsed in memory for one request and discarded. There is no account and no database.

No AI model

Detection is a fixed set of rules. The same log gives the same result every time.

Secrets are stripped from reports

Tokens, keys and passwords are redacted before a report is copied or downloaded.

Logs up to 2 MB. Plain text, .log or .txt.

Got a log open right now? Paste it in.

Analyze a log