Cyberdeck

A custom portable computer built from scratch

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. This is an in-progress hardware build.


View the GitHub Repo

3D Model Preview


Loading model...


Hardware


Core Components ══════════════════════════════════════════ Brain Raspberry Pi 5 8GB Display 10.1" IPS touch LCD (sliding) Keyboard NOS C-450 TKL (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 GFPIO lid +12mm headroom for RTC/cabling over GPIO header Screen frame Modified — 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 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 ΓÇö SQLite + BM25 FTS5, zstandard compression, ingest from DevDocs .zim files Security Suite local tools slot for future security workflows Every piece is a readable text file ΓÇö re-flashable in minutes, editable by hand or by agents.

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 (923 MHz ΓÇö AS923, Thailand-legal).

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×60×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.

In Action

Hardware proof points

  • Uses a repairable DFCD base instead of a sealed laptop form factor.
  • Rail-mounted comms module separates radio hardware from the main deck.
  • FreeCAD-generated enclosure dimensions keep the add-on reproducible.
Hardware assembly

Custom OS proof points

  • Readable text configuration makes the deck quick to re-flash or edit by hand.
  • Offline docs search is planned around SQLite FTS5 and compressed DevDocs data.
  • Boot and system behavior are owned in the project instead of hidden behind vendor defaults.
Custom OS ΓÇö boot screen

Comms module proof points

  • Raspberry Pi Pico bridges the main Pi to NFC and LoRa radios over USB serial.
  • Shell tooling can discover the bridge by pinging candidate serial ports.
  • The enclosure accounts for NFC read-through, LoRa antenna, USB exit, and rail clamp mounting.
Comms module CAD

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


Done: Custom OS layer (setup.sh + all opt-in layers), Grimoire app, comms module firmware + CAD + host tool, raised GFPIO lid CAD, status-LED screen frame CAD, build guide (PDF), bill of materials, shopping lists.

Blocking physical build: Cost of mechanical keyboard components, PCB fabrication for the comms module, and 3D printing time for the chassis parts.

GitHub repo: github.com/PyMite6941/cyberdeck

Back to top