Ready-to-flash SD image · v0.6.0 · Debian 13 (trixie)

Build a virtual pinball cabinet on a
Raspberry Pi 5

PinballUX is a multi-monitor Linux frontend for Visual Pinball Standalone. This is a Raspberry Pi 5–optimized build, packaged as a single image you flash to an SD card.

Playfield, backglass and DMD on separate displays. Drop tables onto the cabinet over your network. No compiling, no desktop setup — flash, boot, play.

What you're downloading

A complete pinball cabinet OS

Based on the open-source PinballUX project, this image bundles the frontend, Visual Pinball Standalone (OpenGL ES build), the table & media manager, and every Pi-specific tweak needed to run smoothly — pre-configured on Debian 13 for the Pi 5. Start the app and you land in the table wheel; add your own .vpx tables and ROMs and you're playing.

🖥️

Multi-monitor

Supports 2 display Playfield, Backglass/DMD.

🎮

Joystick & keyboard

Map cabinet buttons for both wheel navigation and in-table play (flippers, plunger, MagnaSave, start).

🎬

Rich media wheel

Table preview videos, backglass and DMD playback, wheel art and per-table audio as you browse.

🗄️

Table Manager

Scans tables, downloads media from ftp.gameex.com, imports HyperPin/PinballX media packs and metadata.

📡

Network drop-in

Samba shares mean you drag tables and ROMs straight onto the cabinet from any PC, Mac or phone — live instantly.

Tuned for the Pi 5

Software video decode, frontend suspend-during-play and XWayland window placement — see below.

The Raspberry Pi difference

Engineered for the Pi 5's quirks

The Pi 5 isn't a gaming PC, so this build works around its hardware honestly rather than fighting it. The notable changes baked into the image:

software decode

No stalling on preview videos

The Pi 5 has no H.264 hardware decoder. Qt's FFmpeg backend would try h264_v4l2m2m, fail, and hang the wheel — so video decode is forced to software, and previews just play.

SIGSTOP

Clean table audio, no popping

While a table is playing, the frontend is frozen with SIGSTOP — timers, repaints and decode all stop — so VPinball gets the whole machine and its audio buffer never starves. The frontend resumes the instant you exit the table.

XWayland

Windows land on the right monitor

Under the Pi's labwc compositor a native-Wayland window can't choose its output. Both PinballUX and VPinball run under XWayland, which presents the monitors as one X screen so absolute positioning of playfield/backglass/DMD is honored.

unclutter

No stray mouse cursor

The pointer is hidden across the whole X session — including over VPinball's separate window — for a true dedicated-cabinet look.

samba

Drag-and-drop tables & ROMs

Pre-wired network shares (\\pinballwizard\Tables and \Roms) point straight at the live folders, so a file dropped from another machine is usable immediately — no copy/install step.

Download

Get the image

VPinballX_RPI5.img.xz

XZ-compressed Raspberry Pi 5 SD-card image. Decompresses to ~12 GB; flash to a 16 GB or larger card.

Download 3.4 GB Uncompressed ~12 GB Target Raspberry Pi 5 OS Debian 13
SHA-256: cb8f73851629c8974e494022517de6e23c3738c64084f745113a07bce043e7b3
⬇ Download
checksum file

Verify after downloading: sha256sum -c VPinballX_RPI5.img.xz.sha256

Installation

Flash & first boot

The image expands the root filesystem to fill your card automatically on first boot.

  1. Write the image to an SD card

    Easiest: Raspberry Pi ImagerUse custom → select VPinballX_RPI5.img.xz (it decompresses on the fly). Or from a terminal:

    # replace /dev/sdX with your card — double-check with lsblk!
    xzcat VPinballX_RPI5.img.xz | sudo dd of=/dev/sdX bs=4M conv=fsync status=progress
  2. Boot the Pi 5

    Insert the card, connect your displays and power up. Hostname is pinballwizard, the cabinet account is pinballux.

  3. Configure your displays & inputs

    Launch PinballUX Setup to assign each display type to a screen number, set rotations, and map your keyboard/joystick. Settings save to ~/.config/pinballux/config.json.

  4. Add tables & ROMs over the network

    From any PC/Mac/phone on the same network, drop .vpx tables and PinMAME .zip ROMs straight onto the cabinet:

    \\pinballwizard\Tables   # .vpx / .directb2s
    \\pinballwizard\Roms     # PinMAME .zip ROMs

    Then open Table Manager to scan the new tables and download matching media (backglass, DMD, wheel art, videos, audio).

Heads-up: tables, ROMs and media are not included — supply your own. The image ships the frontend, Visual Pinball Standalone and all configuration ready to go.
A look inside

Screens

PinballUX Setup GUI
Setup GUIDisplays, Visual Pinball paths, keyboard & joystick mapping.
PinballUX Table Manager
Table ManagerScan tables, download media, import packs & metadata.
Multi-monitor display arrangement
Multi-monitor layoutPlayfield, backglass and DMD arranged across screens.
Details

What's in the image

HardwareRaspberry Pi 5 (4 GB+ recommended)
Operating systemDebian GNU/Linux 13 (trixie), labwc / Wayland desktop session
FrontendPinballUX 0.6.0 (PyQt6) — multi-monitor wheel, media, input handling
Pinball engineVisual Pinball Standalone (VPinballX_GL, OpenGL ES build)
Storage16 GB+ SD card (A2-class recommended); root filesystem auto-expands on first boot
DisplaysUp to 3 roles/ 2 Displays — Playfield, Backglass, DMD
NetworkingSamba shares for Tables & ROMs; Table Manager downloads media from ftp.gameex.com
Default identityhostname pinballwizard · user pinballux · default password: pinballer
LicenseMIT (PinballUX). Visual Pinball is distributed under its own terms.
Security: change the pinballux:pinballer account password and set a Samba password (sudo smbpasswd -a pinballux) before putting the cabinet on an untrusted network.