DEV Community

makepkg
makepkg

Posted on

Ultimate Upgrade of old HP THIN Clinet T630 with Pico Commander

🚀 Turn Any Cheap Thin Client (like HP T630) into an Advanced Headless Server with a Modular Hardware UI

If you love the r/homelab ethos, you probably know that old enterprise thin clients—like the HP Thin Client T630, Dell Wyse, or Lenovo ThinkCentre Tiny—make incredible, low-power, budget-friendly headless servers. They run Docker, home automation, and lightweight media servers perfectly.

But they have one massive downside compared to enterprise servers: No physical management interface. There is no iLO, no IPMI, and no screen. If your network drops, a Docker container hangs, or you need a safe emergency shutdown, your only choices are blind power-cycling or dragging out a monitor and keyboard.

To fix this, I built Pico Commander—not just as a macro pad, but as a flexible, modular hardware firmware kit designed to embed right into your micro-PCs or custom monolith chassis to act as an independent physical system manager.
🛠 What is Pico Commander?

At its core, Pico Commander is an open-source subsystem running on a Raspberry Pi Pico (RP2040) and driven by CircuitPython. It communicates with your host system via native USB HID emulation (acting as a driverless keyboard).

Because it’s a modular kit, you can easily mount the components inside an empty drive bay, cut holes into a thin client's plastic shell, or build a monolithic custom chassis.
The Hardware Stack:

The Brain: Raspberry Pi Pico (RP2040)

The Display: SSD1306 OLED (128x32 or 128x64) for multi-level hierarchical menu navigation.

The Input: KY-040 Rotary Encoder (scroll to browse, click to execute, long-press to go back).

The Secret Weapon: Twin Hall Effect Sensors acting as air-gapped, magnetic hardware panic buttons.
Enter fullscreen mode Exit fullscreen mode

🧠 The Magic: Visual Automation Pipelines, No Hardcoding

Most DIY hardware controllers require you to rewrite and re-flash C++ or Python code every time you want to change a button's function. That is highly inefficient for server management.

Pico Commander solves this with a decoupled architecture. The firmware reads its entire behavior from a single config.json file. To make managing this file effortless, the repository includes an offline browser-based visual HTML configuration tool (editor.html).

Instead of simple key combinations, you can visually drag-and-drop multi-step automation pipelines:
JSON

"scenarios": {
"docker_container_cycle": [
{"action": "type", "value": "docker-compose down"},
{"action": "key", "combo": "enter"},
{"action": "wait", "ms": 2500},
{"action": "type", "value": "docker-compose up -d"},
{"action": "key", "combo": "enter"}
]
}

You map these scenarios to submenus (e.g., Apps -> Nginx -> Restart), save the file, drop it onto the Pico's flash drive, and the system dynamically updates.
🚨 The Air-Gapped Hardware Panic Trigger

One of the coolest ways this modular kit upgrades a machine like the HP T630 is through Hall effect sensors.

Imagine your server handles sensitive data or acts as a local security node. By hiding a tiny Hall sensor inside the chassis casing, you create a completely invisible, physical override.

When you swipe a magnet near that specific spot on the case, Pico Commander triggers a high-priority emergency script—bypassing standard menu navigation and cooldown protections—to instantly trigger a safe system shutdown, isolate network interfaces, or run a data wipe pipeline.
💻 Project Architecture: Build It Your Way

The project is designed to be highly extensible. If you want to integrate it into your own system manager monolith, the Python backend is neatly split into functional modules:

boot.py — Configures USB HID modes and read/write states.

trigger_bus.py — The core engine execution pipeline that handles delays and script sequences.

display.py & screensaver.py — Manages UI layouts, menu scroll animations, and OLED auto-sleep rendering (Matrix, Starfield effects).

passive.py — Monitors background hardware states (Hall sensors, physical boot buttons).
Enter fullscreen mode Exit fullscreen mode

Because it uses generic I2C and GPIO definitions, you can adapt the pins in config.json to match whatever space limitations you have inside your server case.
🚀 Get Started (Open Source)

The project is completely free, open-source, and ready for you to fork. If you have a few spare parts lying around on your workbench, you can have a working prototype wired up on a breadboard in under 15 minutes.

👉 Check out the full source code, wiring schematics, and the offline web tool on GitHub:

https://github.com/makepkg/pico-admin-hid

How would you integrate a physical UI into your headless homelab? Let me know your ideas for custom hardware triggers in the comments below!

Top comments (2)

Collapse
 
josh_green_dev profile image
Josh Green

Thin clients are so underrated for homelab builds. The T630 especially hits that sweet spot of being cheap enough to grab a few spares but capable enough to actually run something useful. I've got a simlar setup running a handful of Docker containers at home and the idle power draw alone is the reason I'll never go back to repurposed desktop towers.

Collapse
 
makepkg profile image
makepkg

Spot on! I actually managed to score mine for just $50 on the used market, which feels like an absolute steal.

Aside from the incredible power savings compared to a desktop tower, I'm seriously impressed by the form factor. HP really nailed the ergonomics here—the chassis is surprisingly well-thought-out and clever, making it a perfect playground for mods and upgrades. It’s just such an interesting piece of hardware to tinker with. What kind of containers are you running on yours?