Linux Cab Project
This is a new blog about the process of switching my current Windows Virtual Pinball cabinet to Linux.
THIS IS A WORK IN PROGRESS – COME BACK SOON

Table of Contents
-Introduction -Considerations -Preparation -Linux Distros
-Test
Introduction
I always wanted to get a virtual pinball cabinet set up like the king Ron Popeil commercial ( SET IT AND FORGET IT! ). If you own a Arcade cabinet with Emulation Station or RetroPi , you set it up once and you don’t touch the system ever. This is my goal with this setup, the difference is that on a Virtual Pinball cabinet we are adding new tables regularly.
Over the years it has been a challenge to maintain a proper VP cab with Windows updates breaking the setup, changing the Anti-virus preferences and constent nagging screens to update or use Co-pilot. With the development of VPX Standalone it now allows to play Virtual Pinball on almost any plafforms including Linux. I am now starting my journey and going to turn my cabinet into a Linux cabinet and say goodbye to Windows.
considerations
Moving to Linux has gotten easier over the years, Most people who heard of linux automatically thinks of “Geeks” , “command line” and a complicated operating system to use. There are some truth to this but the development and ease of use has come a long way. You can use a linux operating system without touching the console / command lines ever!
Before moving to linux ask yourself the following questions?
- Am i ready to learn something new?
- Am i ready to accept that certain features are not going to work and is going to be different from windows.
- Am i ready to spend some time tweaking and setting thing up from scratch
- Are you ready to go through your entire system and make it compatible with VPX standalone? VPX standalone requires a specific folder structure that is different from Windows. I am going to discuss this requirement later.
Virtual pinball works well on Linux and many people have already used it for some time. There are some things still in development like DOF and Pup Packs integration. DOF works but it is not consistent. Certain Pup packs work and some don’t. Certain tables are not working under Standalone ( Many tables have patches and works )
The challenge VPX developers are facing is to make virtual pinball work flawlessly on Linux. They can achieve that by adding Plugins in VPX Standalone and it allows support for windows only features like VBS and .Net. Not all tables are coded the same, not all puck packs are built the same. The lack of consistency in the table making process makes it harder to achieve a stable experience on Linux. ( But we are getting there )
linux-distro
There are several versions of Linux, different builds, different “distros”. I tested in the past Batocera which is a Gaming Distro using the popular Front end Emulation Station.
This now has VPX Standalone intergrated and is a solid solution. I tested it and right of the bat, it did not detect my 3rd screen and before moving on and troubleshooting, i will test other Distros. Batocera Site.
-
Batocera - Gaming frontend build using Emulation Station. Did not detect my 3rd screen. https://batocera.org/

- Nobara - Gaming Distro with a lot of video card drivers support. - very appealing interface, support Steam games – Issues with the Playfield not detecting 4K, might be cabling issues…. to investigate https://nobaraproject.org/

-
Ubuntu 24.04.4 LTS - Was Freezinfg on the Welcome Screen – Unknown what is the reason https://ubuntu.com/download/desktop

- PoPOS very popular Distro, a lot of folks are liking that one. — Freezing on the wek=lcome screen. – Unknown if it is incompatibility with my current setup. https://system76.com/

- Bazzite : I installed it and the 3 screens are automatically detected. Still having A 4K Resolution out of range error on my 4k playfield. ( will order high quality 4k/120hz cables . https://bazzite.gg/

Supported Platforms
macos-arm64
macos-x64
linux-x64 (Ubuntu)
ios-arm64 (and ios-simulator-arm64)
android-arm64-v8a (Mobile)
android-arm64-v8a (Quest)
Unsupported Platforms
linux-x64 (Fedora)
linux-aarch64 (Fedora Asahi Remix 41 - Apple silicon)
linux-aarch64 (RPI)
linux-aarch64 (RK3588)
Preparation
The Preparation of your system is going to be key in the success. Take your time , this is not a race. We have to touch on a few topics in order to transition your windows cab to Linux. Even if you are a brand new user and is planning opn building a cab, those preparation tips are going to be key.
BACKUP
You heard it , and you may or may not have taken this seriously. Please do, you don’t want to loose all your table collection because of a mistake. Backup all your tables and media to an External Hard drive and Put it away. Have another external hard drive ( Working copy ). I created
a small backup utility called Backup Utility For My Pinball
It is a very simple and straight forward utility designed to backup your Existing Virtual Pinball setup and copy it to an External Hard drive or a Network drive.
Convert your folders to a VPX Standalone self contained folder
This is the folder structure of your Virtual Pinball tables. Every required elements to run the table will be in a self contained folder structure. The folder structure can be seen
VPX File Layout Documentation
Table Name (Manufacturer Year)/ <= We created a dedicated folder to hold all the files for this table
├── Table file v1.1.vpx <= This is the main VPX file
├── Table file v1.1.ini <= This file holds the table setting overrides
├── Table file v1.1.vbs <= For some reason, we decided to override the table script by a custom script
├── Table file v1.1.scv <= ScoreView plugin will use this layout file if present (otherwise defaulting to its global scoreview folder)
├── Table file v1.0.vpx <= For example, we decided to keep an older version for reference
├── Table Name (Manufacturer Year).directb2s <= We chose to name the backglass after the folder name, as it is shared between all table versions
├── Table Name (Manufacturer Year).info <= This is an information file to store frontend datas, we decided to name after the folder name (not directly linked to VPX, see below)
├── Installation.txt <= Additional file the table authors decided to include
├── Rulesheet.pdf <= Additional file the table authors decided to include
├── altsound/ <= AltSound plugin will look here for altsound files
│ └── xxx/
│ └── ...
├── cache/ <= VPX cache some informations for smoother play, they will be stored here
│ └── ...
├── medias/ <= This is a common folder to store frontend files (not directly linked to VPX, see below)
│ ├── (Backglass) Table Name (Manufacturer Year).mp4
│ ├── (Playfield) Table Name (Manufacturer Year).mp4
│ ├── (Wheel) Table Name (Manufacturer Year).apng
│ └── ...
├── music/ <= Folder from which music are loaded when script use the PlayMusic command
│ ├── Multiball Theme.ogg
│ └── ...
├── pinmame/ <= PinMAME plugin will look here for rom, nvram, and alias files
│ ├── roms/
│ │ ├── xxx.zip
│ │ └── yyy.zip
│ ├── nvram/
│ │ ├── xxx.nv
│ │ └── yyy.nv
│ └── alias.txt
├── pupvideos/ <= PinUp player plugin will look here for pinup videos
│ └── xxx/
│ └── ...
├── scripts/ <= When a table loads additional script, they are searched here as well as in core script folder
│ └── ...
├── serum/ <= Serum plugin will look here for colorization files
│ └── xxx/
│ └── xxx.crz
├── Table Name.UltraDMD/ <= Folder with FlexDMD or UltraDMD content (name is directly defined in the table script)
│ └── ...
├── user/ <= VPX stores values saved from script in this folder
│ └── VPReg.stg
└── vni/ <= VNI plugin will look here for colorization files
└── xxx/
├── xxx.pal
└── xxx.vni
This means that you need to find all related files for your table and copy it in the new folder structure. Quite the task you will say, and i agree. Here’s an example of all files required to be copied and how long it takes VS the automated way i will talk to you about next.
Youtube video ( Time comparison Creating a table structure for VPX Standalone manually VS VPX Merging tool )
—————————————————————————————————————————————-
VPX MERGING TOOL
I created a Merging tool that will scan for all required files for a specific table ( rom,directb2s,altsound,altcolor,pup video,music ) and i have a logic built in the software and it knows where to look in your computer or hard drive backup. It will list all files and copy them to a single folder with all the folders created to make it work in VPX Standalone.
Here’s a quick Youtube preview video