Skip to main content

obd-tui

CI Codecov PyPI License: MIT Python uv

obd-tui turns any ELM327-compatible OBD-II adapter into a live terminal dashboard. It auto-detects the adapter on the serial bus, asks the vehicle which commands it actually supports, and streams the readings into a tabbed Textual UI — engine, turbo/air, EGR, diagnostics, fault codes, and the full PID catalogue.

The engine panel of obd-tui

No adapter at hand? obd-tui --demo runs the whole dashboard against a simulated vehicle.

Documentation

The project site is published from main to GitHub Pages: https://goabonga.github.io/obd-tui/.

Requirements

  • Python 3.11+
  • An ELM327-compatible OBD-II adapter on a serial port (USB or Bluetooth RFCOMM)
  • uv for development

Install

pip install obd-tui      # or: uvx obd-tui

On Ubuntu 24.04 LTS and 26.04 LTS, from the PPA:

sudo add-apt-repository ppa:goabonga/obd-tui
sudo apt install obd-tui

Usage

obd-tui                       # launch the dashboard
obd-tui --port /dev/ttyUSB0   # skip auto-detection
obd-tui --demo                # simulated vehicle, no hardware needed
obd-tui --record drive.jsonl  # log every sweep as JSON Lines
obd-tui --units imperial      # °F, mph, psi
obd-tui --version

Keys: c connect · d disconnect · 15 panels · p PID catalogue · x clear DTCs · q quit. Panels taller than the window scroll with the wheel, the arrows or PgUp/PgDn.

Features

  • Demo mode--demo drives the dashboard from a simulated vehicle, so the UI can be tried, screenshotted and tested with nothing plugged in.
  • Trends — RPM, coolant and MAF are charted above the engine readings from a five-minute rolling history.
  • Recording--record FILE appends every sweep to a JSON Lines file, flushed as it goes, ready for jq or pandas.
  • Adapter auto-detection — scans serial ports for known OBD-II adapters (vLinker / FTDI 0403:6015, and any port whose product or manufacturer string looks like an OBD adapter), falls back to bound Bluetooth RFCOMM nodes, and takes --port to override.
  • Metric or imperial--units imperial for °F, mph and psi; only the display changes, recordings stay in the units the vehicle reports.
  • Configuration file — port, units and sweep period in ~/.config/obd-tui/config.toml, overridden by the command line.
  • Clear DTCsx sends mode 04 after a confirmation dialog spelling out what it resets, then reads the codes back.
  • Adaptive polling — readings are swept at three cadences, and whatever the open panel shows is read every sweep. A vehicle that stops answering is detected and the session drops to LINK LOST instead of hanging.
  • Capability discovery — queries the vehicle for its supported commands across modes 01–09 plus the ELM adapter commands, so panels only show data the ECU can actually produce.
  • Tabbed dashboard — Engine, Turbo/Air, EGR, Diagnostics, Faults and the PID catalogue, refreshed once per second while connected.
  • Live connection status in the footer: state, port, and adapter VID:PID.
  • Tabs stay disabled until a device is connected, and disable again on disconnect.

Getting started (development)

git clone https://github.com/goabonga/obd-tui.git
cd obd-tui
uv sync
uv run pre-commit install
uv run ruff check src tests
uv run mypy src
uv run pytest

Versioning and release

Versions are bumped from Conventional Commits by multicz. On every push to main, CI computes the bump, writes the changelog, tags, and publishes the wheel to PyPI through Trusted Publishing. Maintainers do not bump versions or edit the changelog by hand.

Stability and deprecation policy

obd-tui follows Semantic Versioning and the standard Python n + 2 deprecation cadence (announce + warn in one release, remove in the release after the next). Full policy: docs/stability.md.

Contributing

See CONTRIBUTING.md for the workflow, the commit-message convention, and the test/lint expectations. By participating you agree to the Code of Conduct.

Security issues: please follow the disclosure process in SECURITY.md.

License

Distributed under the MIT License.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

obd_tui-0.3.5.tar.gz (163.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

obd_tui-0.3.5-py3-none-any.whl (46.8 kB view details)

Uploaded Python 3

File details

Details for the file obd_tui-0.3.5.tar.gz.

File metadata

  • Download URL: obd_tui-0.3.5.tar.gz
  • Upload date:
  • Size: 163.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for obd_tui-0.3.5.tar.gz
Algorithm Hash digest
SHA256 1ed81fcbada9a0b983f1717c68216fd088c4c26d4886c38de8e3713d1aa30f5b
MD5 50abfa9a33c8304a2379e1dd37d8e116
BLAKE2b-256 adea2a3d2941d1d0efcb4b4444d64937876a6d7f0e010da5ff5ce5bf9a76e26a

See more details on using hashes here.

Provenance

The following attestation bundles were made for obd_tui-0.3.5.tar.gz:

Publisher: ci.yml on goabonga/obd-tui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file obd_tui-0.3.5-py3-none-any.whl.

File metadata

  • Download URL: obd_tui-0.3.5-py3-none-any.whl
  • Upload date:
  • Size: 46.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for obd_tui-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 da72ffb39de2bbdbb8e31cf9e6a24df039ddd2a7ac486930a84a1605997e76f4
MD5 87c4ad0b1abb951308b5cddeff36e8be
BLAKE2b-256 d2496f5a2b8e438dbd07234583a9fa2c22f311c9cda7a4e980455b52407a57d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for obd_tui-0.3.5-py3-none-any.whl:

Publisher: ci.yml on goabonga/obd-tui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.4.0

2 files

0.3.8

2 files

0.3.7

2 files

0.3.6

2 files

This release

0.3.5 This release

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page