Until now, you could run one Torrent and one Tapper on the CAN bus. That's enough for a simple setup, but real vehicles have zones. A galley, a bedroom, a cargo bay, an exterior. Today's firmware update lets you run up to three Torrent modules, three Switchback modules, and as many Tapper panels as you need, all on the same bus, all at the same time. The web flasher now handles the full matrix of device variants so you don't have to think about addresses or build flags.
The problem we solved
A single Torrent gives you eight PWM channels. That covers a lot of lighting and low-current loads, but once you start wiring up a full vehicle (interior lights, exterior floods, underbody accent LEDs, awning lights, cabinet lighting) eight channels aren't enough. You need a second Torrent. And if that second Torrent listens on the same CAN IDs as the first one, they'll both respond to the same commands and you've got chaos on the bus.
Same story with Switchback. One module handles eight relay-switched loads. Add a second one for high-current circuits in a different zone and you need the bus to tell them apart.
Tapper had a similar limitation. It could only talk to one Torrent instance. If you wanted a panel that controlled a second Torrent or a Switchback, you were out of luck.
How addressing works
Each device type now supports three addresses: 0, 1, and 2. The address is baked into the firmware at build time and offsets the CAN IDs that device uses. Address 0 is the default and matches the original single-device behavior, so existing setups don't need to change anything.
For Torrent, the three addresses map to distinct CAN IDs for toggle commands, status feedback, brightness, and sequence control. Torrent at address 0 uses toggle ID 0x18, address 1 uses 0x19, address 2 uses 0x1A. The status, brightness, and sequence IDs shift in the same way. Three Torrents on one bus, each controlling its own eight channels, no collisions.
Switchback follows the same pattern. Address 0 listens on 0x25 for relay commands and reports status on 0x28. Address 1 shifts to 0x26 and 0x29. Address 2 to 0x27 and 0x2A.
Tapper learns to pair
Tapper is the eight-button control panel that sits on your wall. Previously it only knew how to talk to Torrent. Now each Tapper is built with two pieces of configuration: which device type it talks to (Torrent or Switchback) and which address of that device it controls.
That gives you six possible Tapper variants:
- Paired to Torrent: Address 0, 1, or 2
- Paired to Switchback: Address 0, 1, or 2
A Tapper paired to Torrent address 0 sends toggle commands on 0x18 and listens for status on 0x1B. A Tapper paired to Switchback address 1 sends on 0x26 and listens on 0x29. The firmware also adapts its LED feedback logic. Torrent sends per-channel PWM values (eight bytes, one per channel), while Switchback sends a single bitmask byte (one bit per relay). The Tapper handles both formats correctly based on its build target.
Multi-way switch panels
Here's where it gets practical. Want to control the same set of lights from two locations? Flash two Tappers with the same pairing, say both set to Torrent address 0. Both panels send toggle commands on the same CAN ID. Both panels receive the same status feedback. Press a button on one panel, the LED updates on both. It works the same way a traditional three-way light switch works, except it scales to as many locations as you want and every panel always shows the correct state.
A realistic setup might look like this:
- Torrent address 0: cabin lighting (8 channels)
- Torrent address 1: exterior and accent lighting (8 channels)
- Switchback address 0: high-current loads like water pump, fridge, fans, heater (8 relays)
- Tapper at the entry door: paired to Torrent 0 (cabin lights)
- Tapper at the bedside: paired to Torrent 0 (same cabin lights, multi-way control)
- Tapper in the galley: paired to Switchback 0 (appliance control)
- Tapper at the exterior compartment: paired to Torrent 1 (exterior lights)
Four Tappers, two Torrents, one Switchback, one CAN bus. Every panel knows exactly which device it controls, and every device ignores traffic that isn't addressed to it.
The flasher handles it
None of this requires you to set up a build environment. The web flasher now shows a variant dropdown after you select your module. Pick Torrent and you'll see address 0, 1, or 2. Pick Tapper and you'll see all six pairing options laid out plainly: "Paired to Torrent, Address 0", "Paired to Switchback, Address 1", and so on. The flasher pulls the matching pre-built binary from the GitHub release and writes it to your board.
We also added a baud rate selector. Most boards flash fine at the default rate, but if you're hitting connection issues, particularly with certain USB-to-serial chips, you can drop the baud rate to 115200 for a more reliable connection.
Discovery got smarter too
When Headwaters (the edge gateway) scans the network via mDNS, each device now advertises its address, its target device type, and its CAN IDs in the discovery response. Headwaters knows not just that a Tapper exists, but that it's paired to Switchback address 1 and communicates on CAN ID 0x26. This means the local dashboard and automation rules can be built dynamically based on what's actually on the bus, rather than requiring manual configuration.
What's next
Three addresses per device type gives you up to 24 PWM channels (three Torrents) and 24 relay-switched loads (three Switchbacks) on a single bus, with as many Tapper panels as you have wall space. That covers every vehicle layout we've encountered so far.
If you're already running a single Torrent and Tapper, nothing changes for you. Address 0 is the default and matches the old single-device firmware. If you're ready to expand, grab the latest release and head to the flasher.