Skip to main content

ecuconnect-tool (Python)

Python CLI for ECUconnect using libCANyonero bindings. The default transport is WiFi/TCP at 192.168.42.42:129 (override with --endpoint for mocks or other adapters).

Install

From PyPI (TCP transport only):

pipx install ecuconnect-tool

With BLE/L2CAP support on Linux (needs system python3-dbus and python3-gi):

sudo apt install python3-dbus python3-gi
pipx install --system-site-packages ecuconnect-tool

From the repo (editable, for development):

python3 -m pip install -e ./python/ecuconnect_tool

Quick start

ecuconnect-tool info
ecuconnect-tool login
ecuconnect-tool ping 512 --count 10
ecuconnect-tool benchmark --count 32
ecuconnect-tool term 500000 --proto raw
ecuconnect-tool --url ecuconnect-l2cap://FFF1:129 term 500000 --proto raw
ecuconnect-tool monitor --bitrate 500000
ecuconnect-tool send "02 3E 80" --tx-id 0x123 --rx-id 0x321
ecuconnect-tool test --can-interface can0 --busload 1 --duration 5

BLE/L2CAP

Use the ECUconnect L2CAP endpoint format (works on both macOS and Linux):

ecuconnect-tool --url ecuconnect-l2cap://FFF1:129 info

macOS

Install CoreBluetooth bindings:

python3 -m pip install pyobjc-framework-CoreBluetooth

Optionally target a specific peripheral UUID:

ecuconnect-tool --url ecuconnect-l2cap://FFF1:129/12345678-1234-1234-1234-123456789abc info

Linux

See install section above for dependencies. Discovery uses the BlueZ D-Bus API; the L2CAP connection uses the kernel socket API directly.

Optionally filter by BD_ADDR:

ecuconnect-tool --url ecuconnect-l2cap://FFF1:129/DC:DA:0C:3A:E3:06 info

Dev flow (no install)

This builds the native extension in-place and runs the CLI from the repo:

python3 -m pip install --user pybind11 typer rich python-can
python3 ./python/ecuconnect_tool/scripts/run_dev.py test --can-interface can0 --busload 20 --duration 5

Auto ramp mode (start at 1 pps, step 1 pps until max busload):

ecuconnect-tool test --can-interface can0 --busload auto --auto-max-busload 1

Preflight info + ping happens before the load test by default. Disable with --preflight false. Use --preflight-only to stop after the connectivity checks (no CAN open). Use --traffic none to open the CAN channel + set arbitration, then exit without data transfer. Use --traffic rx for CAN->ECU only, --traffic tx for ECU->CAN only.

Notes

  • ecuconnect-l2cap:// is supported on macOS (CoreBluetooth) and Linux (BlueZ + kernel L2CAP).
  • Windows currently supports TCP endpoints only.
  • Socket buffers default to 4M; override with --rx-buffer/--tx-buffer using bytes or K/M/G suffixes.
  • Set ECUCONNECT_DEBUG_IO=1 to print raw TX/RX frame traces while debugging transport issues.

Metadata

Release files for ecuconnect-tool 0.9.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ecuconnect-tool 0.9.7
File Size Uploaded Provenance Actions
ecuconnect_tool-0.9.7.tar.gz 94.9 kB Without provenance Details for ecuconnect_tool-0.9.7.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ecuconnect-tool 0.9.7
File Interpreter ABI Platform Actions
ecuconnect_tool-0.9.7-cp314-cp314-macosx_26_0_arm64.whl CPython 3.14 CPython 3.14 macOS 26.0+ ARM64 Details for ecuconnect_tool-0.9.7-cp314-cp314-macosx_26_0_arm64.whl

Total release size: 288.9 kB

Release files / ecuconnect_tool-0.9.7.tar.gz

Download URL ecuconnect_tool-0.9.7.tar.gz
Size 94.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a32b015dbaa682d9f9ad8e3fe646e08623ba48801ef81c04345ec163a848e660
BLAKE2b-256 checksum
How to use checksums
d2f6273d2b530e285f5e4134b632593aa6039fe2d6c0d8e175e5caf1a06553e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / ecuconnect_tool-0.9.7-cp314-cp314-macosx_26_0_arm64.whl

Download URL ecuconnect_tool-0.9.7-cp314-cp314-macosx_26_0_arm64.whl
Size 194.0 kB
Tags CPython 3.14 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
c59a67ded8fa924e534273c1b87d8b505655d88e475426c92b884c2ba1eafb06
BLAKE2b-256 checksum
How to use checksums
b3dde1f34bac0bec3585ffd56c81d40ec3dcf8f599aa8d85f5fb13eb6f1c8b69
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Security for ecuconnect-tool 0.9.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.9.7 This release

2 release files No provenance

0.9.2

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