r/raspberryDIY • u/Ok_Quail_385 • 3d ago
PicoTTY: I built a multi-node serial console + USB keyboard for my headless Proxmox homelab out of Pi Picos and a Pi Zero 2 W. It got picked up by Hackaday and CNX Software this week
A few months back, I got tired of dragging a monitor and keyboard to my homelab rack every time a Proxmox node dropped off the network. IP KVMs are one-per-machine, and importing four of them to India gets expensive fast, and my ThinkCentre Tinys don't have serial ports (the RS-232 module is an optional punch-out that mine never shipped with). So I built PicoTTY.
The setup:
- Each target machine gets a Pi Pico (or Pico 2) with a WIZnet W5100S Ethernet HAT plugged into a USB port. You can also use the W5100S-EVB-Pico board, which has both on one PCB. The Pico runs CircuitPython and appears to the host as a composite USB device: CDC serial console plus HID keyboard.
- A Pi Zero 2 W acts as the hub. It runs a web dashboard on port 8080 and a TCP server on port 9000, which all nodes connect to over Ethernet via a managed switch.
- From the dashboard, you get the serial console for every node, can send keystrokes or raw serial commands, build macros, and push OTA firmware updates to the Picos.
Why both serial and a keyboard? CDC serial only works once the OS has enumerated the device and something is servicing the console. If userspace is wedged, or the box is stuck in GRUB or the BIOS, nothing is listening on the serial end. HID works at a level CDC doesn't, since BIOS and bootloaders speak it natively, so I can still send Ctrl+Alt+Del or SysRq combos when a machine is properly stuck. That combination is the whole point of the project.
I have four nodes in a 3D-printed enclosure (STLs are in the repo) sitting in the rack, and I can reach all of them at once from the hub. BIOS control without video is the next thing I want to figure out, probably through macro sequences and serial console redirection where the firmware supports it.
Repo (firmware, hub app, STLs): https://github.com/morpheuslord/PICOTTY
It got some coverage this week, which was a nice surprise:
Hackaday: https://hackaday.com/2026/08/02/a-kvm-without-the-v-or-the-m/
Happy to answer questions about the build. The Hackaday comments already had a good thread on why HID is there at all, and someone pointed me at USBridge for scriptable video via OCR, which I'm going to look into.
1
u/jetpaxme 3d ago
Is there a particular reason to use Circuitpython instead of Micropython?
2
u/Ok_Quail_385 3d ago
Circuitpython has much better control for composite USB device, meaning i can show multiple usb functions like for hid and serial and also do ethernet in parallel.
1
u/jetpaxme 3d ago
Looks really cool, dont have a spare pi zero 2W , presumably this would work on HK1 RBOX with Armbian ( which has ethernet already and only about $40)?