Skip to main content

← All posts

Deep Dive

Headwaters Gets a Second Platform: The Radxa Dragon Q6A

· 5 min read

Headwaters now builds on two reference platforms. The Raspberry Pi CM5 stack we moved to last month stays exactly as it is. Alongside it, there is now a build that runs on the Radxa Dragon Q6A. This is not a replacement. It is a second path to the same system, aimed squarely at two problems that decide whether someone actually builds TrailCurrent: can you get the parts, and can you afford them.

Why a second platform at all

The single biggest thing that stops people from building an open-source project is not the code. It is the bill of materials. If the one reference board you support goes out of stock, the whole project goes out of stock with it. If the price of that board drifts up, every build gets more expensive, and the pool of people willing to try it shrinks.

The CM5 is a great module. It is also a single point of failure for the brain of the whole system. Supporting a second, independent module on a second, independent silicon vendor means a Headwaters build can ship even when one SKU is allocated out, backordered, or quietly EOL'd. Broadcom and Qualcomm. Raspberry Pi Ltd. and Radxa. Two supply chains, one Headwaters.

What the Dragon Q6A is

The Radxa Dragon Q6A is a single-board computer built around Qualcomm's QCS6490. In the 4 GB SKU that we target, it ships with:

  • NVMe storage on the board itself, so no separate carrier and no ribbon cable
  • On-board 12 V DC input, so no buck regulator and no USB-C PD path
  • A 40-pin header that is electrically compatible with the Raspberry Pi HAT ecosystem

It is a faster chip than the CM5, with an NPU, a GPU, display controllers, camera pipelines, WiFi, and Bluetooth. Headwaters does not need any of that. The Headwaters workload is MongoDB, Mosquitto, a Node backend, nginx, and a tileserver. None of it is compute-bound. So the image turns all of it off.

Three cost levers, collapsed into one module

The reason the Q6A variant exists is price. Not performance. Three changes combine to land the Q6A BOM at or below the CM5 equivalent:

1. Storage lives on the module. A CM5 Headwaters build is a CM5, plus a carrier board with an NVMe slot, plus the NVMe drive itself, connected through a mezzanine layout that has to be assembled. The Q6A has NVMe on the board. Three parts collapse into one. Fewer connectors, fewer interfaces, less that can go wrong at first boot.

2. Power comes in directly. The Q6A accepts 12 V DC on its own input. That is the rail every RV and trailer already runs on. On the CM5 side, 12 V power goes through the CAN hat, which has a built-in buck converter to feed the CM5 its 5 V rail (no USB-C PD supply anywhere in either build). On the Q6A, that entire power stage goes away.

3. A cheaper CAN hat. The CM5 variant uses the Waveshare RS485 CAN HAT (B), which is the part that houses the 12 V buck converter and also includes transient and reverse polarity protection on the input. The Q6A variant uses the Waveshare RS485 CAN HAT, the small size and low cost RS485 CAN expansion board, with a 12 MHz on-board oscillator feeding the MCP2515. Same CAN bus, same function, noticeably cheaper part. We added a small device-tree overlay to the image so the Qualcomm SPI controller picks up the MCP2515 correctly. A single-line fix to the overlay last week set the clock to 12000000 so it matches the actual part, which is why that hat is called out specifically.

What you give up to get the savings

Cheaper in total parts is real, and it is worth being honest about what gets traded for it. The Q6A board does not include two things the CM5 reference build has:

No active cooling. The CM5 reference stack has a fan. The Q6A board does not. Under the underclocked, subsystems-off profile we ship, idle temperatures are well inside spec, but the margin is smaller. Watch it. Headwaters reports CPU and SoC temperature to the PWA on the same system-stats panel that shows memory and storage, so the number is always one tap away. If your install location is hot, or if you stack the board inside an enclosed space, plan airflow up front rather than finding out later.

No transient or reverse polarity protection on the 12 V input. On the CM5 side, those protections live on the Waveshare CAN HAT (B) alongside the buck converter. Moving to the plain CAN hat on the Q6A is where the cost saving comes from, and it is also what gives up that protection layer. The Q6A's on-board 12 V input is less forgiving: if you swap the positive and negative leads when you wire it in, you will damage the board. Double-check polarity before you apply power. A cheap inline fuse on the positive lead is a good idea on any 12 V install, and doubly so here.

Neither of these is a deal-breaker for the kind of builder who is already comfortable wiring a CAN bus and a power distribution module. They are real differences from the CM5 path, and it is fair to know about them before you pick a platform.

Same software, two front doors

Both images build from the same Docker artifacts and the same offline map tiles. The backend, the PWA, the broker, the database, the tileserver, the CAN-to-MQTT bridge: identical across both platforms. First boot is the same. The setup wizard is the same. The web UI at https://headwaters.local/ is the same. Your rig, your data, your dashboard, regardless of which board you picked.

Under the Hood the Q6A image is aggressive about idling down the silicon. All eight cores are capped at 600 MHz, matching the CM5's underclock. WiFi, Bluetooth, the display controllers, the camera pipeline, the audio subsystem, the GPU, and the NPU are all blacklisted in the kernel and torn down at boot. USB autosuspend is on. Idle target is at or below five watts. On a 12 V rail with a 100 Ah battery and a 200 W solar setup, that sits well inside the power envelope we were already living in with the CM5.

Both targets stay fully supported

We are not consolidating. The CM5 build is not going anywhere. If the CM5 is what you can get, or what you already have, nothing changes for you. The Q6A is there for the builder who cannot find a CM5, or who wants the shorter BOM. Pick the one you can buy today. Either one gets you to the same place.

Where to find it

The image build, the flash procedure, the power-savings configuration, and the device-tree overlay for the Waveshare CAN hat all live in the RADXAQ6A directory of the Headwaters repository. The README walks through what is disabled and why, and the SETUP guide covers EDL mode, flashing the SPI NOR firmware, and first boot end to end.

This was the whole point of making TrailCurrent open source. Not one blessed hardware path. A project that bends around what you can actually source, at a price that does not gatekeep the build. The Dragon Q6A is the next step in that direction.