Local Connectivity for Sydney’s ITG Builds

🔖
I built two of the “main” ITG cabs in Sydney. I’ll call them the Ed Park or OG cab and the Koko cab, based off their locations.

Context

Here in Sydney, every now and then, whether it be a request or perhaps keeping up to date with The Spreadsheet, I need to connect to the ITG cab to make changes.

Back in the past, this meant doing stuff like:

  • Asking for the keyboard from staff, which, after we realised this was going to be a common recurring thing, we just provided our own
    • ...Assuming there were working USB ports. The Ed Park cab had USB slots at the front, but one of them didn’t work, so we had a ‘backdoor’ USB slot hidden inconspicuously with duct tape at the back. The Koko cab, being a 5th Mix convert, doesn’t have USB slots at the front.
  • Quitting StepMania to make changes (i.e. possibly long durations of downtime if cache isn’t happy)
  • Making sure whoever was working on shift was someone we knew to allow this to happen in the first place
  • As the “PC” was a motherboard screwed onto a wooden panel (typical of old school builds), we had to shift the entire cab to make space to pull the panel out

When the OG’s system hard drive started to throw in the towel, I was tasked to replace it with a new PC. Inspired by a cab in Canberra built by one of our friends, I chose to use a mini PC (Intel NUC) and solve loading time problems with an SSD.

The most important part of the system, which I overlooked at the time, was that the NUC came with an in-built wireless module. This meant:

Wireless Connectivity

No keyboard. No USB. No exiting the game. Amazing.

With the OG cab living in Edmonson Park, I can’t just ask for a keyboard, let alone work on the pads. I don’t know the staff there, and they don’t know how my (purposefully advanced) system works.[1]

Thankfully, with the ease of Linux[2], I don’t need to physically touch the machine (well, technically) to get new songs on the cab. Here’s my “Sydney” setup; it’s standard run-of-the-mill:

  • Most importantly, the wireless module needs to be in hotspot mode, whose password and SSID can be configured through the GUI. For other stuff like switching the hotspot’s security from WEP (seriously?) to WPA2, those are set in a file in /etc/NetworkManager/system-connections
  • Secure shell, preferably restricting use to only key-based authentication
  • SFTP

The usual procedure to modify files on the system:

  • I connect my device to the local hotspot
  • Then, I use an SFTP client to connect: WinSCPWin, FilzaiPad, or MiXplorerAndroid

The songs are now on the cab, but they need to be reloaded through the service menu. Whilst I could do this remotely, my policy is to at least pay for a game:

  • Insert a credit so we can get to ScreenTitleJoin
  • In this screen I use the CodeMessageCommand event listener to enter a “menu code” on the pad to transition me to the service menu ScreenOptionsService
  • Reload songs from the last option in the menu

The only downside to copying songs this way is that it’s slower than a USB transfer – you’re limited to the max speed of the hotspot, which for some reason seems to capping at 802.11g speeds of ~4 MB/s despite the hotspot being recognised as n. This can be worked around by plugging the USB into one of the non-reserved StepMania slots (yep, we’ve got that set up too) and using the CLI to copy whatever, mounting if necessary.

Other Features

If you have wireless access to the cabinet with everything Linux has to offer, you have a lot of power at your hands to do some cool shit with it. Here’s some of the other stuff we got going on:

  • Nginx as a reverse proxy
  • ufw for standard network protection (can’t hurt having it)
  • Apache HTTP Server for serving basic web stuff
  • .NET Core to run my deployed apps
🔌
Note the wireless module being in hotspot mode. That means, no internet – unless you provide it via some other interface like a LAN cable. Unlike actual arcade cabs where internet connectivity is tightly controlled at both software and hardware levels, most arcades shouldn’t be comfortable or willing to let you run what could potentially be a publicly exposing DIY server. Let’s not push it, now...

[1] Any regular can ask for the keyboard, and so we had a player who would... fill the cab with their low-quality, 20-minute simfiles.

To counter-act this, on the OG Windows PC, we got rid of the desktop by changing its shell from explorer.exe to OpenITG. (The cool thing by doing it this way is – just like you’d know when Explorer crashes – if the game does, Windows will boot it up again.) Except that this player eventually learnt the solution of bringing up Task Manager to start Explorer. However, that’s Windows, and I’m confident they wouldn’t know how to navigate Ubuntu.

In that similar vein, I’m actually reluctant to share the ins and outs of the PC with any of the staff, in the event the curiosity of a ‘tech’ gets the better of them and breaks something. Most technicians are of the hardware kind, so it’s highly unlikely I’ll trust someone unless they can prove to me that they know their way around Linux.

[2] Linux, because it’s free. The old PC was running on Windows XP, which I didn’t have the CD and service packs readily available at that time.

Actually, the interim PC I used for the meantime was Windows 8.1. Let’s not get into how tedious it was to make that arcade-ready and performant within 2 GB of RAM. Windows Defender please...