Short answer: yes — a Raspberry Pi Zero W plus a 2.4" IPS screen, a lithium cell, a small speaker, and a 3D-printed shell gets you a genuine pocket-sized retro handheld that plays NES through light PS1 at 4-6 hours of battery, for under $80 total. This is a weekend project — no soldering iron required for the basic build if you use a HAT-style adapter, and one evening more for a fully-custom wired build.
Why build one at all when store-bought handhelds exist?
You can buy an Anbernic or Miyoo Mini for a similar price and skip the build. The reason to DIY is the same reason people build their own mechanical keyboards or restomod cars — you learn the stack, you tune the exact feel you want, and you can repair it forever. A DIY Pi Zero W handheld is also a rare project where the parts truly cost less than the finished commercial product, because you're not paying for injection-molded shells at scale.
Also: as of 2026 the retro-handheld scene has settled on a shared codebase — RetroArch and RetroPie — which means the software side is boringly reliable. What used to be a scary configuration project is now a wizard-driven setup.
Key takeaways
- Total BOM under $80 with a Vilros Pi Zero W starter kit as the base.
- Runs NES / SNES / Genesis / GB / GBC / GBA / SMS full-speed, PS1 with tuning.
- Battery life 4-6 hours on a 2000 mAh cell for 2D emulation.
- One weekend build if you follow the printed-shell path; longer for a hand-wired custom.
- No soldering required if you use a pre-made control-board HAT.
- Great "buy a real desktop" upsell path if you outgrow the handheld — a Pi 4 8GB covers heavier emulation (N64, DS) in a bigger shell.
The parts list
| Component | Suggested part | Approx cost |
|---|---|---|
| SBC + basics | Vilros Raspberry Pi Zero W Starter Kit | $28 |
| Screen | 2.4" IPS 320×240 SPI display | $16 |
| Battery | 2000 mAh 3.7 V single-cell lithium | $9 |
| Charger board | TP4056 with protection | $2 |
| Boost converter | 5 V step-up module (2A) | $3 |
| Audio amp + speaker | PAM8302 + 4Ω 1W speaker | $4 |
| Controller HAT | Pi Zero gamepad HAT (kmboxpro / RetroFlag) | $18 |
| Shell | 3D-printed PLA case | ~$4 in material |
| Storage | 32 GB Class-10 SanDisk microSD | $8 |
Round trip about $92 at retail, or ~$78 if you already have the microSD and 3D-print material on hand. Total build time: 4-6 hours if you follow this guide; longer if you get into custom firmware.
Step 1: prep the Pi and RetroPie
The software is the boring part, and boring is good. Flash the RetroPie image for Pi Zero using the official RetroPie docs or the Raspberry Pi Imager. Boot the Pi headless the first time with SSH enabled, connect it to your Wi-Fi, and let it complete first-run configuration. Update package lists (sudo apt update && sudo apt upgrade) before installing anything else.
Enable SPI in raspi-config since we'll drive the screen over SPI later. Also enable I2C if your controller HAT uses it. Reboot after config.
Step 2: install the screen driver
Most 2.4" SPI screens use the ILI9341 controller. The fbcp-ili9341 driver renders the Pi's framebuffer to the SPI display at 60 fps with negligible CPU cost, which is what makes this build feel snappy.
If the screen boots blank, halve the SPI clock divisor. If it flickers, add a small ceramic decoupling cap across the screen's power pins. Once it stably shows the RetroPie menu, add the command to /etc/rc.local so it runs on boot.
Step 3: wire the controller HAT
The lazy path is a pre-built HAT — the Retroflag or kmbox Pi Zero controller HAT drops onto the GPIO header and exposes buttons and a D-pad through gpio-mapper. That works, no soldering, five minutes.
The custom path is soldering discrete buttons to specific GPIO pins and configuring gpiozero mappings. The tradeoff is exact button placement in your printed shell. If you're the kind of maker who wants to tune the D-pad throw and the A/B button spacing, wire discrete tactile buttons — Cherry MX-lite low-profile switches feel great in a handheld shell.
Step 4: audio
The Pi Zero W has no built-in audio jack. Two options:
- PWM audio via GPIO 18 with an RC filter and a small amp like the PAM8302. Cheap, works, hisses slightly at low volume.
- I2S audio via a small DAC HAT. Cleaner sound, adds ~$8 to the build.
For a pocket handheld the PWM path is fine — you'll play through the tiny speaker, not headphones, and the noise floor is masked by the speaker's own limits.
Wire the amp to GPIO 18 through an RC low-pass filter (~1 kΩ + 47 nF), then to the amp's input. Amp output goes to the 4Ω 1W speaker. Connect amp power to the 5V rail after your boost converter.
Step 5: power
Two subsystems: charging the battery and delivering stable 5V to the Pi.
- Charging: TP4056 module with protection. USB-C micro-B input, JST connector to the battery. It handles constant-current then constant-voltage charging automatically and cuts off at 4.2 V. Add a small physical switch to isolate the battery when the handheld isn't being played long-term.
- Boost converter: step 3.7 V (battery) up to 5 V for the Pi. A cheap MT3608 module works for the ~600 mA the Pi Zero + screen + amp draws; use a 2A-rated module for margin.
Ground the shells of everything to one common ground rail. The Pi is sensitive to voltage droop under load; if you see reboots during gameplay, add a 220 μF electrolytic capacitor across the 5 V rail near the Pi.
Step 6: shell
Two paths: 3D-print a shell from an existing model (Thingiverse and Printables have dozens of Pi Zero handheld shells), or design your own in Fusion 360 / OnShape.
Recommended existing designs as of 2026:
- PiGrrl Zero — the original, well-documented, community-tested.
- Retro-Lite CM4 — bigger, uses a CM4 module; overkill for a Pi Zero W but the design is beautiful.
- Pico8Retro — minimalist single-piece design, no hardware fasteners needed.
Print in PLA or PETG at 0.2 mm layer height, 20% infill, four walls. A print takes about 6 hours on a stock Ender 3-class printer. Sand the button holes to fit your specific switches — printer tolerances vary and you don't want binding.
Step 7: RetroArch config
RetroArch cores handle the actual emulation. Recommended cores for a Pi Zero W:
| System | Recommended core | Notes |
|---|---|---|
| NES | fceumm | Full speed |
| SNES | snes9x2010 | Full speed on Pi Zero W |
| Genesis | genesis_plus_gx | Full speed |
| Game Boy / GBC | gambatte | Full speed |
| GBA | gpsp | Full speed with frame skip 1 |
| Master System | genesis_plus_gx | Full speed |
| PS1 | pcsx_rearmed | 90-100% on 2D titles; drop resolution for 3D |
| N64 | skip | Won't run acceptably on Pi Zero W |
For PS1, enable dynarec, drop internal resolution to 1x, and disable interlacing. Titles like Symphony of the Night, Final Fantasy VII (with occasional stutter), and Crash Bandicoot run playably.
Step 8: dial in the feel
The build "works" after the software boots. It "feels right" after tuning. Time spent here is the difference between a project and a keeper.
- Button feel. Test all buttons and swap tactile domes until you're happy. Cherry MX-lite feel great; cheap dome tactile switches feel mushy.
- Screen brightness. SPI displays often have a backlight PWM input on a spare GPIO. Wire it and add a brightness slider in EmulationStation.
- Shoulder buttons. Add them if the shell supports it. GBA and PS1 depend on them.
- Save states + rewind. Enable in RetroArch settings. Life-changing for retro play on a small screen.
- Sleep on lid close. If your shell has a magnetic lid switch, wire it to GPIO and let the Pi suspend cleanly.
Common pitfalls
- Underpowered PSU during charging. A 5V/1A charger takes ~5 hours to fill a 2000 mAh cell. Use a 5V/2A supply for ~2.5 hours.
- No BEC / reverse polarity protection. Add a Schottky diode inline with the battery. Cheap insurance.
- Screen flicker. Almost always inadequate power decoupling. Add caps across screen power pins.
- Audio hiss. RC filter values off — try 4.7 kΩ + 22 nF for cleaner PWM audio.
- Buttons sticking in shell. Sand the holes. Every printer's tolerances are different.
- Boot fails after adding the screen driver. SPI conflict with another peripheral. Check
dmesgon first boot.
When to upgrade to a bigger shell
If you find yourself wanting N64, DS, or PSP emulation on the handheld, the Pi Zero W isn't the right chip. A Pi 4 8GB in a bigger shell handles all of the above at full speed. The trade-offs are size, weight, and heat — a Pi 4 is not pocketable in the same way. For that upgrade, look at the Retro-Lite CM4 or a full-size arcade-style shell. Also swap the SD card for a proper USB-attached Crucial BX500 SATA SSD via a UASP enclosure — model and ROM load is much faster.
For pure retro (NES through GBA) in your pocket, the Pi Zero W stays the right chip.
The related retro-hardware picks
If you want physical retro cartridges for your handheld and haven't already, a Transcend CF133 CompactFlash card works as a boot medium for Win98-era retro PCs (companion article) and as an archival ROM store for your dumped legal cartridges. Overkill for the Pi Zero build itself — the microSD is fine — but useful once you have a broader retro workflow.
Total-cost-of-ownership and reliability outlook
A Pi Zero W handheld build should run reliably for 5+ years with minor consumables (battery replacement every 300-500 cycles, USB-C connector wear-out around 5000 cycles). Total lifetime cost including one battery replacement: ~$95.
Compare that to a commercial handheld like an Anbernic or Miyoo Mini around $70-90 up front. The commercial handheld's advantage is instant gratification and a polished commercial firmware; the DIY handheld's advantage is repairability (every part is standard, every screw is off-the-shelf) and the deep customization option.
The reliability outlook depends heavily on your build quality. The three failure modes we've seen most often in the community:
- Battery pouch damage from case pressure. Use a rigid battery holder, not a raw pouch under a case shell.
- Screen ribbon flex cracks. Route the flex cable with a strain-relief loop.
- USB-C connector sheared off the charge board. Reinforce the connector with epoxy or use a board with a soldered-through-hole USB-C jack.
Any of these are 10-15 minute repairs on a DIY build. On a commercial handheld they're often board-swap events.
What to consider building next after the Zero W
Once you've built one handheld, the natural next steps are:
- Bigger shell with a Pi 4 8GB — handles N64, DS, PSP. Not pocketable, but a full-featured desk handheld.
- CM4-based build — the compute module packaging is more compact and industrial. Best for a permanent build.
- Handheld + docking station — HDMI out and controller pass-through when you dock, so the same device drives the TV or the palm.
A Crucial BX500 1TB SSD in a USB 3.0 enclosure is nice on a Pi 4 build for the same reason it's nice on the local-LLM build: fast model / ROM load and no SD card wear-out. Overkill on the Zero W (USB 2.0 caps the transfer speed anyway).
Bottom line
A Raspberry Pi Zero W is enough to build a pocket retro handheld that plays NES, SNES, Genesis, GBA, and light PS1 for 4-6 hours on a single charge. Total BOM under $80, weekend build, and the platform is boringly reliable because RetroArch has consolidated the retro emulation ecosystem. Upgrade to a Pi 4 8GB in a bigger shell only if you actually want N64/DS/PSP.
Related reading: our Pi 4 8GB local LLM guide, CompactFlash boot disk for Win98 retro rigs, and Sega Genesis Mini vs SNES Classic.
Sources
- RetroPie docs — canonical setup guide and emulator core selection reference.
- Raspberry Pi Foundation — Pi Zero W — SoC, memory, and I/O specifications.
- RetroArch on GitHub — the emulator front-end this build depends on.
