Cyberdeck

A modular Raspberry Pi cyberdeck with custom hardware, OS layers, and a rail-mounted comms module

All projects  ·  About Matt

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


Hardware: A Raspberry Pi 5 portable computer using the DFCD mechanical base, a sliding touch screen, hidden mechanical keyboard, trackball input, NP-F battery power, and custom 3D-printed parts for the GPIO lid, screen frame, and comms enclosure.

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


Core Components ------------------------------------------ Brain Raspberry Pi 5 8GB Display 10.1" IPS touch LCD (sliding) Keyboard 60-65% mechanical keyboard (hidden under screen) Input Trackball (Logitech Marble donor) Power NP-F battery -> 7.2V -> 5.1V regulated Scroll Rotary encoder handle Custom 3D-Printed Parts ------------------------------------------ Raised GPIO lid +12mm headroom for RTC/cabling over GPIO header Screen frame Modified with status LED between front buttons (GPIO26) Comms module Clamp-on enclosure: Pico USB bridge + NFC + LoRa (AS923) Upstream hardware design: DFCD by ArcticEnrichmentCenter. Custom parts kept separate; upstream files were never modified.

Software


OS Layer (Raspberry Pi OS 64-bit) ------------------------------------------ setup.sh one-shot idempotent installer |- boot/ systemd boot-script system (drop-in /boot.d/) |- memory/ zram swap + kernel VM tuning (no SD wear) |- theme/ green/cyan prompt, fastfetch banner, tmux, wallpaper |- ai/ (opt-in) Claude Code + Ollama, memory-tuned for Pi 5 |- extras/ (opt-in) deck-mode, deck-vault (LUKS2), Conky bar, RTL-SDR `- upgrades/(opt-in) deck-assistant, USB HID, NAS share, comms module Apps (user workspace, separate from OS layer) ------------------------------------------ Grimoire Offline docs search engine with SQLite + BM25 FTS5, zstandard compression, ingest from DevDocs .zim files Security Suite local tools slot for future security workflows The OS layer is stored as readable shell and config files, so it can be rebuilt or edited without a custom image.

Comms Module


What it is: A clamp-on add-on module that attaches to the deck's rail. Houses a Raspberry Pi Pico as a USB bridge between the main Pi and two radios: a PN532 NFC reader and an RFM9x LoRa radio on the AS923 band noted in the repo.

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.
Hardware build scope

Custom OS proof points

  • Uses setup.sh as 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.
Custom OS 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.
Comms module files

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


Implemented in repo: Custom OS layer (setup.sh plus base, AI, extras, and upgrades layers), Grimoire app, comms module firmware + CAD + host tool, raised GPIO lid CAD, status-LED screen frame CAD, build guide (PDF), bill of materials, shopping lists.

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