The Build
Based on the open-source DFCD (DesignatedFreeCadDevice), a modular Raspberry Pi 5 cyberdeck with a sliding 10.1" touchscreen, hidden mechanical keyboard, trackball, and NP-F battery. Every part is either 3D-printed or off-the-shelf, and the custom parts stay separate from the upstream design. This is an in-progress hardware build with the software, firmware, CAD, and build notes kept inspectable in the repo.
View the GitHub Repo
What to Inspect
Software: A custom Raspberry Pi OS layer built around an idempotent installer, drop-in boot scripts, memory tuning, desktop/theme setup, opt-in AI tooling, and Grimoire, an offline docs search app that stores compressed documents in SQLite and searches them with FTS5.
Comms module: A rail-mounted add-on that uses a Raspberry Pi Pico as the USB bridge between the main Pi, a PN532 NFC reader, and an RFM9x LoRa radio. The repo includes the CircuitPython bridge firmware, host-side deck-comms tool, and FreeCAD-generated enclosure.
3D Model Preview
Loading model...
Hardware
Software
Comms Module
How it works: The Pico runs CircuitPython firmware that reads both radios and exposes a simple line protocol over its USB serial port. The host Pi talks to it via
deck-comms, a shell tool that finds the bridge by
PINGing serial ports.CAD: Custom enclosure generated with Python + FreeCAD: 82 x 60 x 32 mm body with a 1.2 mm NFC read-through window, SMA antenna hole for LoRa, USB exit slot, and M3 floor holes for the rail clamp.
Proof Points
Hardware proof points
- Defines the main build around a Raspberry Pi 5, sliding touchscreen, hidden keyboard, trackball, and NP-F power.
- Keeps custom 3D-printed parts separate from the upstream DFCD files.
- Documents the raised GPIO lid, LED screen frame, and rail-mounted comms enclosure as inspectable CAD work.
Custom OS proof points
- Uses
setup.shas the repeatable entry point for boot, memory, theme, AI, extras, and upgrade layers. - Moves boot behavior into drop-in scripts so the deck can be rebuilt from readable files.
- Includes Grimoire as the local docs-search app, separate from the operating-system layer.
Comms module proof points
- Uses CircuitPython firmware on the Pico to expose NFC and LoRa reads over a simple USB serial protocol.
- Lets the host Pi find the bridge with the deck-comms shell tool.
- Models the NFC window, LoRa antenna hole, USB exit, and rail clamp in the FreeCAD enclosure.
Dev Notes
Why Build This
I wanted a computer that was entirely mine, not designed around how a manufacturer thinks I should work. A form factor I chose, hardware I can repair, and software I control down to the boot scripts. The DFCD gave me a proven mechanical base so I could focus on the OS and software side.
Hardest Part So Far
The hardest part is keeping hardware, firmware, and OS choices modular enough that one part can change without forcing a full rebuild. The comms module is separate for that reason: the main deck can keep working while the radios, bridge firmware, or enclosure design evolve.
What I've Learned
Writing idempotent shell installers, systemd unit design, kernel VM tuning for RAM-backed swap, FreeCAD headless scripting for CAD measurement and part generation, CircuitPython firmware for the Pico, and parametric enclosure design. Also: 3D printing tolerances are unforgiving.
Current Status
Inspectable now: The linked repo carries the shell installer, OS layer directories, FreeCAD-generated custom parts, comms firmware, host-side comms tool, build guide, and purchasing notes. The physical build is still in progress, so the page treats this as build proof, not a finished product claim.
Next physical-build work: Use the repo's bill of materials and shopping notes to order the keyboard, comms electronics, battery, and power parts, then print and fit the chassis and custom parts.
GitHub repo: github.com/PyMite6941/cyberdeck
Back to top