Posted: 2025-12-08
There's something deeply satisfying about purpose-built hardware. In an age where we do everything on glass rectangles that demand our constant attention, I wanted to build something different: a dedicated device for reading Gemini content that feels more like a book than a browser.
Enter VT-452 — a handheld Gemini protocol browser built around a Raspberry Pi Pico 2W and a 3.7-inch e-paper display. No distractions, no notifications, just text and links rendered on a screen that looks like paper.
At the heart of the VT-452 is the Raspberry Pi Pico 2W — a $8 microcontroller with built-in WiFi and enough processing power to handle TLS connections. Paired with a Waveshare 3.7" e-ink display (480×280 pixels), it creates a surprisingly capable reading device.
The Pico sits on a Maker Pro board that adds:
Four buttons provide all the navigation you need:
Long-press combinations unlock additional features — hold LEFT for content menus, hold RIGHT for system settings. It's a control scheme that feels intuitive after a few minutes of use.
![[IMG] The e-paper screen with Project Gemini FAQ page displayed](/images/IMG_20251122_221034_292.png)
E-ink displays are magical. They consume almost no power when showing static content, they're readable in direct sunlight, and they look remarkably like printed paper. But they come with significant engineering challenges.
The primary issue is refresh time. A full screen update on this display takes about 2-3 seconds and involves complex voltage waveforms that push and pull pigment particles through a microscopic suspension. For a book reader, this is acceptable. For an interactive browser, it's glacial.
The solution comes in the form of partial refresh modes. The display controller supports multiple Look-Up Tables (LUTs) — essentially different waveform patterns that trade off quality for speed:
The trick is knowing when to use each. VT-452 implements a smart refresh strategy: partial updates for cursor movements and most page turns, with a full refresh every 5 pages to clear accumulated ghosting. The user never has to think about it — the system just feels responsive while maintaining good image quality.
The soul of the VT-452 is its chassis. Rather than a simple rectangular box, the device is a love letter to the "Space Age" aesthetic of the early 1970s, specifically the iconic DEC VT05 terminal.
![[IMG] The original VT05 by DEC](/images/vt-05.png)
![[IMG] The 3d model I'm working on](/images/3d.png)
Designed in Onshape and 3D printed, the enclosure captures that distinct "alien head" profile:
VT-452 runs MicroPython, which proved to be both a blessing and a curse. The blessing: rapid development with a high-level language. The curse: MicroPython is strict about syntax and memory-efficient code patterns that feel foreign to Python developers.
The Gemini protocol is refreshingly simple — perfect for a resource-constrained device. A request is just a single line:
gemini://example.com/path\r\n
The response starts with a status line, followed by the content. Status codes in the 20s mean success, 30s mean redirect, everything else is an error. No cookies, no complex headers, no JavaScript. It's HTTP stripped down to its essence.
VT-452 handles the entire flow:
Streaming to disk rather than keeping everything in RAM was crucial — the Pico only has 512KB of RAM, and pages can be much larger than that.
The display uses a custom font system based on the terminus font and the micropython-font-to-py project. Multiple font faces at different sizes handle the various Gemtext elements:
Text wrapping happens at render time, splitting long lines at word boundaries and calculating how many lines fit on screen. The pagination system tracks byte offsets in the cached file, allowing instant forward and backward navigation without re-parsing.
Initial versions of VT-452 had a serious problem: moving the cursor from one link to another took 1.5-2 seconds. The display could update in 0.3 seconds, so where was the time going?
The culprit was naive rendering. Every cursor movement triggered:
This was wasteful. Moving the cursor only affects two lines of text — the old cursor position and the new one.
The fix required selective redrawing. A new `draw_cursor_change()` function:
Result: cursor response dropped from 1.5-2s to 0.3s. A 6× improvement that makes the device feel genuinely responsive.
Similar optimizations followed:
With these optimizations, a 1600mAh battery should provide 12-18 hours of active reading — several days of realistic use.
Using VT-452 feels different from using a phone or laptop to browse Gemini. The e-ink display enforces a slower, more deliberate pace. You can't mindlessly scroll — each page turn is a conscious action.
The four-button interface is limiting in the best way. There's no temptation to open multiple tabs or switch contexts. You follow a link or you go back. That's it.
Text input uses a grid-based keyboard that cycles through character sets (lowercase, uppercase, symbols). It's not fast, but it doesn't need to be — you're mostly consuming content, not creating it.
The device includes pleasant audio feedback — a satisfying click for button presses, a small fanfare when WiFi connects, and distinct sounds for navigation events. It can be muted for silent reading.
VT-452 works, but it's not finished. Current limitations include:
VT-452 isn't trying to compete with phones or tablets. It's exploring a different question: what does a purpose-built device for the small web look like?
The Gemini protocol deserves hardware that matches its philosophy — simple, focused, and respectful of the user's attention. VT-452 is one answer to that challenge.
More importantly, it's a reminder that we can build our own tools. The entire hardware stack costs under $50. The software is open source. Anyone with basic soldering skills and a weekend can build their own.
In a world of locked-down devices and walled gardens, there's something radical about a browser you build yourself.
The complete source code, hardware specifications, and optimization details are available for anyone interested in building their own or learning from the implementation. I will write a more detailed article once I finish the development and build.
**Key specifications:**
**Performance benchmarks:**
Building VT-452 taught me that constraints breed creativity. Working with a slow display forced better UX decisions. Limited memory demanded efficient algorithms. A tiny screen made every pixel count.
The result is a device that does one thing well: reading Gemini content. No more, no less.
If you're interested in the small web, hardware hacking, or just want to escape the attention economy for a while, maybe it's time to build your own.
The Gemini space is waiting.
VT-452 is an open hardware/software project. Build your own, improve the design, share what you learn.
73 de SV1SYY - see you in Gemini space!