sermonizer 0.2.0

A simple, clean serial monitor with a clean terminal UI for embedded development
sermonizer-0.2.0 is not a library.

🔌 Sermonizer

CI License: MIT Rust

A simple, clean serial monitor with a clean terminal UI for embedded development.

Most terminal-based serial monitors are annoying to use - they have clunky interfaces and no sane defaults. We wanted something that could be quickly spun up to interact with embedded devices during firmware development without any hassle.

Screenshot

Features

  • Smart auto-scroll: Follows new data, easy to switch to manual scrolling
  • Auto-reconnect: Keeps watching the port and resumes when the device comes back
  • Clean TUI: Split view with input at bottom, output on top, status bar with connection state
  • Auto-detect ports: Just run sermonizer and it finds your device
  • Sane defaults: 115200 baud, 8 data bits, no parity, 1 stop bit
  • Hex mode: View binary data as hex bytes
  • Logging: Save RX/TX data with timestamps
  • Fast: Built in Rust, handles high baud rates smoothly

Quick Start

# Install from crates.io
cargo install sermonizer

# Install from source
git clone https://github.com/systemscape/sermonizer.git
cd sermonizer
cargo install --path .

# Or run locally
cargo run --release

# Connect to first available port
sermonizer

# Or specify port and baud
sermonizer --port /dev/ttyUSB0 --baud 115200
# Or with cargo run
cargo run --release -- --port /dev/ttyUSB0 --baud 115200

# List available ports
sermonizer --list
# Or with cargo run
cargo run --release -- --list

Usage

sermonizer [OPTIONS]

Options:
  -p, --port <PORT>        Serial port path
  -b, --baud <BAUD>        Baud rate (default: 115200)
      --line-ending <E>    Line ending: none|nl|cr|crlf (default: nl)
      --data-bits <N>      Data bits: 5|6|7|8 (default: 8)
      --parity <P>         Parity: none|odd|even (default: none)
      --stop-bits <N>      Stop bits: 1|2 (default: 1)
      --flow-control <F>   Flow control: none|software|hardware (default: none)
      --dtr <on|off>       Set the DTR line after opening
      --rts <on|off>       Set the RTS line after opening
      --hex                Display data as hex
      --log <FILE>         Log received data
      --tx-log <FILE>      Log transmitted data
      --log-ts             Add timestamps to logs and display
      --list               List available ports

Controls

  • Type and press Enter: Send data to device
  • ↑↓: Browse send history
  • Shift+↑↓ / Page Up/Down: Scroll through output
  • Home / End: Jump to top / bottom (End resumes auto-scroll)
  • Ctrl+L: Clear output
  • Ctrl+V, then a key: Send that key as a raw control byte (e.g. Ctrl+V Ctrl+C sends 0x03)
  • Esc: Clear input line
  • Ctrl+C / Ctrl+D: Exit

Why?

Perfect for:

  • Arduino/ESP32 debugging
  • Firmware development workflows
  • Quick embedded device interaction
  • Protocol testing and development

License

MIT - see LICENSE file.