finds.dev← search

// the find

c3re/can2mqtt

★ 102 · Rust · MIT · updated May 2026

CAN-Bus -- MQTT bridge: bidirectional, configurable and extendable

can2mqtt bridges CAN-Bus to MQTT bidirectionally using SocketCAN on Linux, written in Rust. It maps CAN frame IDs to MQTT topics via a CSV config file and handles type conversions (int, uint, bool arrays, RGB color, pixel data) in both directions. Aimed at embedded/IoT integrators who need CAN devices talking to an MQTT broker without writing their own glue code.

Fuzz testing on every converter type is genuinely thoughtful — CAN frames are fixed-size binary blobs and malformed input here causes real pain, so having libFuzzer targets is more than most embedded bridging tools bother with. Rust is a good fit for this use case: the memory safety guarantees matter when you're parsing raw CAN frames from hardware. The CSV-based config is simple enough that a non-programmer can wire up a new CAN ID without touching code. Active CI via GitHub Actions with a release workflow means binaries get cut automatically.

The project has abandoned GitHub and moved to Codeberg — the GitHub repo is a tombstone with no actual README or code, so anyone finding it here gets nothing useful. 102 stars on a repo that just says 'we left' is a misleading signal. The converter type set is fixed at compile time (int, uint, color, pixel, sixteenbool, none) — adding a new CAN frame format means forking and writing Rust, which undermines the 'configurable and extendable' claim in the description. No mention of error handling behavior when the MQTT broker goes down mid-operation or when a CAN frame arrives for an unmapped ID — important failure modes for anyone running this in production on a vehicle or industrial system.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →