Linux Cab Project

I always wanted a virtual pinball cabinet that works like a Ron Popeil infomercial: “SET IT AND FORGET IT!” This is possible on Linux

If you own an arcade cabinet with EmulationStation or RetroPie, you set it up once and rarely touch the system. That’s my goal with this Linux conversion.

Linux Virtual Pinball Cabinet Watch the video
VPX on Linux Video (THE SETUP) - Part 1

📋 Table of Contents

🎯 Introduction

Why Move to Linux?

Over the years, maintaining a Windows-based VP cabinet has been challenging:

  • Windows updates breaking configurations
  • Antivirus preference changes
  • Constant nagging screens for updates or Copilot
  • System instability

With the development of VPX Standalone, Virtual Pinball now runs on almost any platform, including Linux. This journey documents my transition from Windows to Linux for a more stable, maintenance-free pinball cabinet.

Windows 11 Goodbye


🤔 Considerations Before Moving to Linux

Moving to Linux has become easier over the years. While many still associate Linux with “geeks,” “command lines,” and complexity, modern Linux distributions are very user-friendly. You can use Linux without ever touching the command line!

Ask Yourself These Questions

Before making the switch, consider:

  • Am I ready to learn something new?
  • Am I ready to accept that certain features won’t work the same as Windows?
  • Am I ready to spend time tweaking and setting things up from scratch?
  • Am I prepared to restructure my entire system for VPX Standalone compatibility?

Current Limitations

Virtual Pinball works well on Linux, but some features are still in development:

  • DOF (Direct Output Framework): Works but not consistently
  • PuP Packs: Some work, some don’t
  • Table Compatibility: Not all tables work out of the box (many have patches available)

The Challenge

VPX developers are working to make Virtual Pinball flawless on Linux by adding plugins that support Windows-only features like VBS and .NET. However:

  • Not all tables are coded consistently
  • Not all PuP Packs are built the same way
  • Lack of standardization makes achieving stability challenging

But we’re getting there! 🚀


💿 Linux Distributions Tested

I tested multiple Linux distributions to find the best fit for Virtual Pinball. Here are my findings:


Batocera Batocera

Type: Gaming frontend built on EmulationStation

Pros

  • ✅ Polished, user-friendly interface
  • ✅ Great for arcade emulation

Cons

  • ❌ Closed environment, difficult to update components
  • ❌ VPX version is outdated (10.8 on v10.42, won’t update to 10.8.1 until v44)
  • ❌ Monitor detection is challenging
  • ❌ Media file management through gamelist.xml is cumbersome
  • ❌ Requires advanced skills to automate with tools like VPXBCT

Verdict

Not recommended for Virtual Pinball. Better suited for arcade emulation.


Nobara Nobara

Type: Fedora-based gaming distro

Pros

  • ✅ Appealing interface
  • ✅ Excellent GPU driver support
  • ✅ Detects all 3 screens out of the box
  • ✅ Steam games support

Cons

  • ❌ Difficulties with VPinFE frontend compatibility
  • ❌ Fedora is not officially supported by VPX developers

Verdict

Not recommended due to lack of VPX community support.


Ubuntu Ubuntu

Type: Debian-based distribution

Pros

  • Officially supported by VPX developers
  • ✅ Very user-friendly (Windows-like experience)
  • ✅ Large community and extensive support
  • ✅ Stable and well-maintained

Cons

  • ⚠️ Graphics card driver support can be challenging
  • ⚠️ Ubuntu 24.04.1 LTS freezes on welcome screen (safe mode required for installation)

Verdict

Recommended — Best balance of support and usability.


Bazzite Bazzite

Type: Fedora-based gaming distro

Pros

  • ✅ Designed for gaming newcomers and enthusiasts
  • ✅ Steam pre-installed with Proton integration
  • ✅ HDR & VRR support
  • ✅ Improved CPU schedulers for responsive gameplay
  • ✅ Detects all 3 screens out of the box
  • ✅ Excellent graphics driver support (Nvidia, AMD, Intel)
  • ✅ Out-of-the-box controller support (Xbox, PS3/4/5, Switch, Wii)
  • ✅ Lutris pre-installed for managing non-Steam games
  • ✅ Supports multiple game launchers (Epic, GOG, EA, Battle.net, etc.)

Cons

  • Not officially supported by VPX developers
  • ❌ VPinFE frontend compatibility issues
  • ❌ Python dependency problems with frontend

Verdict

Not recommended despite excellent hardware support. Lack of VPX community support is a dealbreaker.

🔗 Learn more about Bazzite



🖥️ VPX Supported Platforms


✅ Supported Platforms
  • macOS (ARM64)
  • macOS (x64)
  • Linux x64 (Ubuntu)
  • iOS (ARM64)
  • iOS Simulator (ARM64)
  • Android (ARM64-v8a Mobile)
  • Android (ARM64-v8a Quest)
❌ Unsupported Platforms
  • Linux x64 (Fedora)
  • Linux aarch64 (Fedora Asahi Remix 41)
  • Linux aarch64 (Raspberry Pi)
  • Linux aarch64 (RK3588)

Ubuntu

Ubuntu 24.04 LTS

After testing multiple distributions, Ubuntu 24.04 LTS is the recommended choice for Virtual Pinball on Linux.

Why Ubuntu?

While not my first choice (due to driver support challenges and monitor detection), Ubuntu makes the most sense for:

  • Official VPX developer support
  • Long-term stability (LTS = Long Term Support)
  • Active community with decades of experience
  • Regular updates and ongoing development
  • Future-proof — best bet for continued compatibility

Ubuntu has been around for decades and continues to improve. It’s the safest choice for long-term Virtual Pinball stability.


📦 Preparation

Proper preparation is critical for a successful migration. This is not a race—take your time!


💾 Backup

⚠️ BACKUP EVERYTHING BEFORE YOU START ⚠️

You don’t want to lose your entire table collection due to a mistake.

Backup Strategy

  1. Primary Backup: Copy all tables and media to an external hard drive and store it safely
  2. Working Copy: Use a second external hard drive for active work

I created a simple backup utility specifically for Virtual Pinball:

BUMP - Backup Utility for My Pinball

BUMP is designed to backup your existing Virtual Pinball setup to an external or network drive with ease.


📁 VPX Standalone Folder Structure


Flintstones folder setup demo

VPX Standalone uses a self-contained folder structure where all files for a table are in one directory.

📘 Official VPX File Layout Documentation

Example Structure

Table Name (Manufacturer Year)/              ← Dedicated folder for this table
├── Table file v1.1.vpx                      ← Main VPX file
├── Table file v1.1.ini                      ← Table setting overrides
├── Table file v1.1.vbs                      ← Custom script override
├── Table file v1.1.scv                      ← ScoreView plugin layout
├── Table file v1.0.vpx                      ← Older version (for reference)
├── Table Name (Manufacturer Year).directb2s ← Backglass (shared between versions)
├── Table Name (Manufacturer Year).info      ← Frontend metadata
├── Installation.txt                         ← Table author documentation
├── Rulesheet.pdf                            ← Game rules
├── altsound/                                ← AltSound files
│   └── xxx/
├── cache/                                   ← VPX cache data
├── medias/                                  ← Frontend media files
│   ├── (Backglass) Table Name.mp4
│   ├── (Playfield) Table Name.mp4
│   └── (Wheel) Table Name.apng
├── music/                                   ← Music files (loaded via PlayMusic)
│   └── *.ogg
├── pinmame/                                 ← PinMAME ROMs and NVRAM
│   ├── roms/
│   │   └── *.zip
│   ├── nvram/
│   │   └── *.nv
│   └── alias.txt
├── pupvideos/                               ← PinUP Player videos
│   └── xxx/
├── scripts/                                 ← Additional table scripts
├── serum/                                   ← Serum colorization files
│   └── xxx/
│       └── xxx.crz
├── Table Name.UltraDMD/                     ← FlexDMD/UltraDMD content
├── user/                                    ← Saved values from scripts
│   └── VPReg.stg
└── vni/                                     ← VNI colorization files
    └── xxx/
        ├── xxx.pal
        └── xxx.vni

The Challenge

Converting your existing Windows setup to this structure requires finding and copying all related files for each table. This can be time-consuming!



🔧 VPX Merging Tool

📥 Download VPX Merging Tool

Automating the conversion process

I created a tool that automatically scans and merges all required files for VPX Standalone compatibility.

What It Does

  • 🔍 Scans for: ROM, DirectB2S, AltSound, AltColor, PuP Videos, Music
  • 🧠 Built-in logic knows where to look in your system
  • 📋 Lists all found files before copying
  • 📁 Creates proper folder structure automatically
  • ⚡ Saves hours of manual work

Video Comparison: Manual vs Automated

See how much time the merging tool saves:


Manual Process vs VPX Merging Tool


Complete walkthrough of VPX Merging Tool


🚀 Installation

Now it’s time to install Ubuntu on your Virtual Pinball cabinet!


💿 Creating Bootable USB

Requirements:

⚙️ BIOS Settings

Before booting from USB, configure your BIOS for optimal Ubuntu compatibility.

Required BIOS Settings

Setting Value Notes
Boot Mode UEFI Modern Ubuntu (20.04+) works best with UEFI
Secure Boot Disabled Can re-enable after installation
Fast Boot Disabled Prevents boot issues
Boot Order USB First Then HDD/SSD
SATA Mode AHCI Required for SSD/NVMe performance
Virtualization Enabled For VMs and containerization

Installation Steps

  1. Enter BIOS (usually Del, F2, or F12 during boot)
  2. Configure settings as listed above
  3. Save & Exit
  4. Boot from USB (press F12/F8 to access boot menu)
  5. Follow Ubuntu installer
  6. 3 Screens Ubuntu Setup Guide
  7. Download the latest VPinballX_BGFX-10.8.1 linux-x64-Release
  8. Setup VPX ( Screen layout )

LiveUI

LiveUI is the new F12 function in 10.8.1. It is designed to be a fully graphical interface to manage the (Playfield, Backglass, ScoreView) monitor setup. This is not working 100% on Linux. You may have to manually adjust the entry in the VPinballX.ini.

YouTubeYou can see an overview of the LiveUI


Point of View

Graphics Settings

ScoreView Display Settings

Playfield Display Settings

Display Settings Menu

LiveUI Main Screen


You access the menu with F12 and select the option you want to adjust.

Most common settings used

  • Playfield ( Display )
  • Backglass ( Display )
  • ScoreView ( Display ) DMD
  • Point of View ( Point of View ) / change the layout of the view
  • Scene Lighting ( Miscellaneous settings ) / make the table lighter or darker
  • View ( Graphics Settings ) / change the type of setting Desktop / Cabinet
  • Plugins ( Plugins ) / options for all plugins

Installing software and settings on Ubuntu

  • Save VPinballX_BGFX in the directory home/user/VPX (extract all files in VPX)
  • Save your tables in the home/user/VPX/tables
  • To open VPX, you need to double-click the .VPX table file, but first we need to associate it.
    VPX File Association & Icon Setup on Ubuntu


Screenshot
# As you can see now the VPX table has a picture

Following the file association guide, will now allow you to
1- have an Icon on your table.vpx
2- Launch VPX by double clicking the table.vpx

VPX


URL: Download the latest VPX version from the Github

  • Extract the tar.gz by double clicking
  • I suggest you rename the folder to VPX and copy it in your home/username/ folder.
  • Double click the table.vpx and the table should start. You will need to configure the monitor location and dimensions.
  • There are 2 ways you can configure your monitors, the 1st solution and the recommended way is to use the LiveUI. This is done by pressing F12 while VPX is running.



The 2nd way to configure your monitors is by manually editing the .ini file.
Navigate to your .VPinballX.ini on linux it is in /.local/share/VpinballX/VpinballX.ini
Opening the file and changing your monitors ( Playfield / Backglass/ Scoreview ) just like showed in this video

YouTubeYou can see an overview of the LiveUI


Ubuntu


📚 Additional Resources



More content coming soon! Check back for updates.

← Back to Blog