Back to browse
GitHub Repository
11 starsPython

ESP32-S3 probe – a UART "flight recorder" with auto frame decoder

by octablock·Feb 20, 2026·2 points·0 comments

AI Analysis

●●●BangerWizardrySolve My ProblemDark Horse

DIY logic analyzer: COBS framing + auto-CRC brute-force replaces $500 tools on a $20 chip.

Strengths
  • Solves real friction: detects packet drops, jitter, and frame corruption that terminal UARTs hide
  • Clever framing and replay: COBS encoding + offline .anlog files enable robust recovery and reproducible debugging
  • Smart auto-decoder: magic-byte scanning + CRC brute-force learns unknown frame formats without code changes
Weaknesses
  • Windows-only standalone EXE limits adoption; Linux/Mac users must run from Python source
  • Only 921600 baud max; some modern MCUs (STM32H7) go 3+ Mbps, so limited ceiling
Target Audience

Embedded firmware engineers, hardware debuggers, makers using microcontrollers

Similar To

Saleae Logic Analyzer (hardware) · Sigrok (open-source logic software) · JTAGulator

Post Description

Hi HN,

I built a small UART analyzer using an ESP32-S3 as a cheap probe. It taps the target’s TX at 921600 baud and streams raw bytes to the PC over USB CDC.

To make it robust and easy to resync, the S3 wraps data into a tiny binary frame: 'A''N' | type | seq16 | timestamp32 | len16 | payload, then COBS-encodes it with 0x00 delimiters.

On the PC side (Python/Tkinter), the UI shows: - RAW hexdump + throughput graph + health stats (seq gap / overflow) - LOG/TEXT views (extract printable ASCII runs) - Record/Replay (.anlog) for offline reproduction - AUTO parser: scans magic bytes and brute-forces CRC variants for unknown inner frames

This started as a personal debugging bridge between firmware and host, and helped me catch dropped chunks, burst patterns, and protocol mistakes without a logic analyzer.

Repo: https://github.com/choihimchan/linkscope-bpu-uart-analyzer

I’d love feedback on framing, replay formats, or parsing heuristics. Thanks!

Similar Projects