Skip to main content

← All posts

Build Log

Build Your Own: The Peregrine Page Is Live

· 4 min read

The third full module build guide is up. Peregrine now has a detail page that covers the whole offline voice assistant from a pile of parts to a running module, and the two-piece case is now printable with a single click on Makerworld.

What's on the page

Same shape as Headwaters and Bearing before it. A bill of materials with every part called out by name. Dimensioned orthographic drawings pulled directly out of the FreeCAD assembly. Studio renders of the full module, the case bottom, and the case cover. A step-by-step assembly walkthrough paired with a full assembly animation that shows every part dropping into place in the right order. A breakdown of the on-device voice pipeline, from wake word detection through text-to-speech, and a table of the voice commands it already responds to.

Dimensions came straight out of the CAD. Print settings came straight out of the Bambu Studio project we actually use. Parts list matches the assembly file. If something on the page is wrong, the CAD is wrong too, and we want to know.

A few things about Peregrine that are not like the other modules

Peregrine is the second full-Linux module in the lineup, after Headwaters, and the first one with a dedicated NPU. Headwaters runs a Raspberry Pi CM5 and spends most of its cycles shuffling MQTT traffic and serving the dashboard. Peregrine runs a Radxa Dragon Q6A, a single-board computer with a Qualcomm QCS6490 SoC, and it spends most of its cycles listening and thinking. The LLM (Llama 3.2 1B) runs on the Hexagon NPU at roughly twelve tokens per second. The wake word model, the speech-to-text model, and the text-to-speech voice all run on the CPU. Everything is on-device. No cloud services, no account, no microphone feed leaving the vehicle.

A few things we found along the way that are worth flagging for anyone building one:

  • The Radxa takes 12 V on a dedicated 3-pin power header, not USB-C and not on the main GPIO pins. It took a while to find it in the docs. The detail page calls it out explicitly.
  • The buck converter is a 12 V regulator, not a step-down to 5 V. A fully charged 4S lithium pack sits at 14.6 V, and the board does not love that. The LM2597 holds the rail steady at 12.0 V no matter what the bus is doing.
  • The M.2 slot on the Q6A is sized for 2230, not 2280. The common long NVMe drives will not fit. Grab a 2230 stick and you're fine.
  • Audio is a Jabra Speak USB speakerphone. One cable, one device, mic plus speaker plus echo cancellation handled in hardware. That is the only combination we have tested end to end, and we standardized on it on purpose. Linux audio is a rabbit hole; the Jabra gets you out of the rabbit hole.

The case is on Makerworld

The two-piece case has its own Makerworld listing with a ready-to-print Bambu Studio project. The case bottom is printed open-side-up so the integrated standoffs grow straight out of the build plate. The cover is set up as a two-filament print, and it prints on its edge, not flat. Standing it vertically lets the color swap between the case color and TrailCurrent green run cleanly across the logo face, which looks a lot better than trying to print a color boundary on a horizontal top surface. The profile in the .3mf handles the orientation and the filament mapping automatically. Click print, pick your colors, walk away.

Prefer raw STL? They're in the CAD folder on GitHub along with the full .3mf project file.

Why a voice assistant, and why offline

RVs are tight spaces. Your hands are usually busy with something else. Being able to say "hey Peregrine, turn off the lights" or "what's the battery at" without picking up a phone is a genuinely useful interaction, not a gimmick. And doing it locally is the whole point. Voice data is sensitive. We didn't want to build a system that quietly uploads everything anyone says inside the cabin to a data center on the other side of the continent, so we didn't. The whole pipeline runs on the chip inside the van. If the cell bars are gone, the assistant still works.

Next up

That's three modules down. Headwaters and Bearing last week, Peregrine this week, and the rest of the lineup is next. Torrent, Tapper, Borealis, Ampline, Solstice, Picket, Aftline, Plateau, Therma, Milepost, Fireside, Spotter — each one is getting the same treatment at the same level of detail, as fast as we can turn them around. Same format every time: exactly what to buy, exactly how to put it together, exactly which files to print and flash.

If the Peregrine write-up is what you have been waiting for to start a build, this is the page. If you just want to print the case and come back to the electronics later, it's one click away.