What the customer needed
Modern electric-vehicle battery packs publish hundreds of signals across multiple CAN buses — module voltages, cell temperatures, contactor states, isolation monitor readings, BMS state machines. To validate a pack across a test campaign, engineers need to capture all of those buses simultaneously and with synchronised timestamps. Recording one bus at a time and aligning logs in post is slow, fragile, and loses fidelity wherever the buses cross-reference each other.
This customer's previous setup didn't have enough channels per logger, so they were doing exactly that — capturing serially and merging. They wanted a single rig that could capture the whole pack at full bus load and feed downstream analysis tools immediately.
What we built
A SparkFrame 19" rack populated with:
- A Kvaser 4× PCIe CAN card — four independent CAN channels in a single PCIe slot, exposed under Linux as standard SocketCAN interfaces (
can0–can3) - MACS running on the rack, configured through the CAN Network Configurator to bind all four channels at once
- A DBC file per bus, loaded into MACS for live signal decoding
- A web dashboard subscribing to the decoded signals for real-time monitoring
- Recording nodes writing time-aligned logs to disk for later analysis
Because MACS treats every CAN interface the same way regardless of vendor, integrating the Kvaser card was a SocketCAN configuration step — no driver work, no special MACS plugin. The same pipeline would handle Vector, PEAK, Advantech, or virtual buses with one config change.
Why this combination
- SparkFrame gives the customer a customisable 19" platform — they can add or swap I/O cards (Kvaser today, an Advantech analog card tomorrow) without rebuilding the rig.
- Kvaser 4× PCIe is the densest CAN option per slot at this price point, with rock-solid Linux support — exactly what MACS's "runs on standard Linux" approach is designed for.
- MACS handles the multi-bus routing, DBC decoding, recording, and dashboarding in one place, so the customer doesn't run three separate tools that don't talk to each other.