My history with a Commodore 64

Before December 1983 my dad had written a letter to my mum which my grandmother read aloud which mentioned something to the effect of, “I’d like to buy Iain and Robyn a Commodore 64”.

The excitement of me going, “YES!” and then realizing maybe that wasn’t the response I should have given, “Maybe not? Is it okay?”. You could see the confusion in my voice because my parents did not have the smoothest of divorces and messaging was really confusing about us hating him yet still having a relationship with him.

I digress, December arrived and he visited taking us to the University of Guelph to introduce us to some of his colleagues and their work, going for meals. I really felt in those days, Dad was doing his best and making an effort to do what he could to inspire us and be a Dad.

I was too excited, after all, I was 10 years old and I was about to get an amazing computer! I had already experienced an Apple ][ and Commodore PETs at school; being exposed to UNIX and an IBM 5150 PC at my mum’s work; and friends had a Commodore VIC-20.

We drove to Guelph one late afternoon, went to a Zellers, and pick up a Commodore 64, a 1701 monitor, 1541 disk drive and all with, i think, a free VIC Desk! I think we also got Music Maker as well, so we weren’t left without something to try.

Those early days of not understanding how to load programs from the Commodore 64 and the 1541 – I remember my Grandfather and Uncle figuring it out; to getting my first joystick – a Suncom Slik Stick, and games Radar Rate Race and Jupiter Lander for my birthday.

I did so much with this computer

  • I played and copied many games
  • I did hours of homework using Easy Script and geoWrite
  • I spent a lot of time entering programs from magazines, though I admit to not writing too many of my own designed programs in those days. Compute!’s Gazett, Ahoy!, Commodore Magazine, Commodore Power/Play – I had to get them monthly from WH Smith – thanks mum! I actually still have these though I am considering passing these on to the University of Toronto’s Computing Archive
  • To help me learn the piano, I’d using music sequencing software to help learn timing of notes and such – this definitely inspired my music project, in the future and my comfort in programming analogue synthesizers
  • I did a lot of BBSing once I picked up a Commodore 1670 modem, around, I think, 1987

Mum actually used Paperclip to help type a book for one of the profs she worked with, rather than typing it out on Wordperfect on her work PC. I don’t remember how long the Commodore 64 was in her bedroom or at her office, but it certainly was a significant amount of time.

I made a number of friendships over the Commodore 64 – Paul and his dad too me to my first World of Commodore in December 1984. Paul gave me some of the first games – Ghostbusters, Pole Position and Frantic Freddie.

I’d learn about Super Snapshot cartridges, fast loaders, how bad Commodore printers were – thanks to my uncle for helping to purchase a Commodore 1526 printer that I used for many years to print out assignments; until I purchased a Xetec Supergrapics Jr and a Star NX-1000 Rainbow printer – the first piece of computer hardware I saved up for and purchased with summer work money.

I even bought a 1764 REU which, in some respects was a waste of money, though it really did speed up GEOS which I used VERY extensively for homework assignments.

I still have that Commodore 64, the 1541 disk drive, the REU and every disk I ever owned. Gone is the monitor, the VIC Desk, . The last time I turned it on was last year, and unfortunately, I think one of the PLA chips died as I was backing up my disks to an SD card – Pi1541 for the backup win!

Thankfully, the World of Commodore is still going and I was able to purchase a replacement PLA chip – that I still have yet to install. I will likely do that in the coming weeks.

While the TS 1000 was the first computer I owned, the main computer I used was this Commodore 64. It was a workhorse for me from 1983 to 1990 when I picked up a Commodore Amiga 500.

Such a powerful computer at the time, and I realize now there was so much more I could have learned, especially with electronics and the user port. I’d have loved to have had a second disk drive, a second phone line into the house and run a BBS. I actually did run one for a short time period, but off the main phone line. My grandmother was not pleased with me. LOL!

Still, I did push that computer and loved every minute of it.

Iain The Tech Bear

My YouTube Channel is going through a bit of a transition!

With not travelling as much as I used to, I decided to add a new category of content – Tech Content! Beyond travel and music, it’s one more thing I’m quite passionate about.

There is a lot that I want to talk about between retrocomputing history, Internet of Things, and various projects I have going on.

My history with a Timex Sinclair 1000

What a steal! CAD$69.99 in 1983 and comes with the arcade game, Frogger and Mixed Game Bag 1!

The problem, and the best way to disappoint a kid – to be clear, the corporation, not my mum who spent hard earned money in 1983 to get me my first computer.

To use those games, you’d need a 16K RAM Pack!

I first explored programming on this computer, with a membrane keyboard and the manual in hand, oh and a Panasonic tape recorder to save my programs to.

I’ve mentioned people in my life who inspired me in my career. I mentioned my great uncle, Reggie.

In my life story of the Timex Sinclair 1000, is another person that inspired me – Kenyon Taylor.

Kenyon and his wife were friends of my grandparents. In my fact, one of his sons and my mother dated for a period of time, I think, in the 1950s. When we would vacation in Northern Ontario, we would often travel to Mindemoya on Manitoulin Island where they lived.

Kenyon is famous as one of the co-inventors of the modern trackball, DATAR, vehicle detection systems, and Flip Disk Displays among a number of other patents. In many respects, I was standing in the presence of engineering greatness not really comprehending it as a kid.

We last saw Kenyon shortly before he passed away in June 1986. I remember Robyn and I being very quiet at his side with mum and some of his family members. He is someone I wish I could have spoken to as a teenager or an adult.

Back to our connection on the Timex Sinclair 1000 – When we visited Kenyon, he had a Timex Sinclair 1000 and he inspired me to learn more programming on it and printed out a number of programs for me to type in.

I still have those programs, printed on the Timex Sinclair 2040, using thermal paper!

It gave me some really good inspiration for algebra and trigonometry in high school.

This is one of a number of moments in my history, definitely a gift that I will always appreciate.

I didn’t always use the Timex Sinclair 1000 after about 1988. I’d occasionally pull it out and plug it in for fun, but I have fully transitioned to using my Commodore 64 for gaming, and homework. None the less, I held on to the computer and, as mentioned, I still have it, as well as two backups – one from an acquaintance from high school, and one my partner Sté is passing on to me.

Sinclair computers were such an important part of making computing available to the masses back in the 80s, especially in Europe and would go on to great acclaim with the Sinclair ZX Spectrum, of which I picked up a Spectrum+ when I lived in Norwich in 1995.

I created a home lab

I’ve dreamed of having servers in my home to do various things and, I guess, it’s finally taken on a life of it’s own!

See, it started with me implementing Pi-Hole, to stop annoying advertisements from websites. Of course, I have a bunch of IoT devices and have controllers.

Then Raspberry Pi announced the 8Gb Raspberry Pi 4. I bought one as soon as I could and wondered, what should I do with it? I’ve always wanted to install Home Assistant should our network connection ever go down, we can control our devices.

I added a Synology NAS as I needed the space and the redundancy for backups and the Raspberry Pi Retroconsole project I’ve been curating. This also allows me to run Docker containers – the ability to run a particular piece of software in it’s own little – are pretty cool.

The thing with Home Assistant, you don’t want to run that off an SDCard as it will burn it out. So I bought an Argon One M.2 case with a 250 Gb SSD. A Raspberry Pi running off an SDD is pretty quick! It surprised me.

So, Home Assistant doesn’t use that much space, so I’m wasting the space on a 250 Gb SDD! Also, admittedly, the fan on the Argon One M.2 case started making noises and I had situation where I thought I lost the SDD, so I decided to switch the case to a SunFounder Pironman – I’m all about the LED lighting.

So far so good.

So with that done, I’m deciding to experiment with a bunch of services hosted on both the NAS and my Pi 4 8Gb:

Pi-Hole – I’ve already mentioned, this is my Ad Blocker

Home Assistant – i’ve mentioned this too, which allows me to run my IoT devices independent of their cloud brokers

Mealie – This is a new addition, a recipe manager that will scrape website pages for recipes. I really like this concept, and have been somewhat fascinated by recipe managers since my Timex Sinclair 1000 days

WordPress – This was the first iteration of a dashboard, more a page of links to servers and such inside our home. I’m not sure I’ll use this much, but having the option, I might be inspired to put it to use

Homarr – is everything I ever wanted in a Dashboard for a home. It’s easy to add new buttons for internal web services and more! The perfect starting point!

OwnCloud – With the space on the Raspberry Pi, I could put some important files on here as a just in case backup fron the NAS and cloud; accessible anywhere.

Kasm – I heard about this from a YouTube video on servers people are running at home. I’m completely blown away that my Raspberry Pi 4 with 8Gb can run two streaming Docker containers running a game of Doom and a full Debian Linux instance! It’s pretty awesome and gives me a bunchmark for just how powerful a Raspberry Pi is.

Plex – I run Plex off my Mac server for streaming videos

Apple Music – Last but not least, my music streams off my Mac server

I also have dedicated systems that run a web browser, PHP and control LEDs for saying a room is busy.

There you have it – what

I built a Fishbowl

Well almost. See, I got the idea to put together my first desktop Windows-based PC in about 20+ years. Why? I guess I was inspired by my Steamdeck which at the time introduced me to the world of modern handheld PC gaming.

I feel in love with the Steamdeck after years of playing on my Sony PS Vita. The fact that games would also play on a PC versus years of consoles and handhelds being separate really got me thinking. I’ve known for a long time that PC gaming is outpacing console gaming.

What did I spec out for the Fishbowl?

  • AMD Ryzen 9 7950X3D
  • XFX Speedster Merc 310 with an AMD Radeon RX 7900XTX Black Edition
  • Asus ROG Crosshair X670e Extreme
  • Asus ROG Ryujin III 360 cooler
  • LianLi Fans
  • Kingston Fury Beast 16Gbx2 DDR5 RAM that goes up to 6000 MT/s
  • WD Black SSDs

I tend to go a bit overboard on my builds because I do want them to last a long time between upgrades. Using an AM5 motherboard also helps keep that future upgrade path as future AMD processors will be supported.

I also admit, blinky lights and customization in the new generation of PC motherboards really grabs my attention. Where before the boring beige aesthetic was, well the boring beige box aesthetic.

The LED pixel and OLED displays and LEDs around the motherboard, the LCD screen on the cooler and the LEDs on the fans really add to the design to make my machine unique. Different colours also add to the ambience too.

I had to set the lighting to two shades of blue and add the two fish to the cooler LCD screen and the OLED display, and voila – digital fish tank!

I admit, I’m seriously impressed by modern PC tech. Now, the amount of power draw from this is quite something.

Comparing what I started out with, to where we are today. The PC I built is 700x more powerful than a Cray XMP super computers in the 80s! I could never have imagined that as a kid. Even something as small as a Raspberry Pi, what that can do, relative to, even 30 years ago.

I’ve not had a desktop PC since the early 2000s, when I switched to a Mac. I wasn’t a huge PC gamer, and I had started console gaming. Prior to that, I was gaming on 16-bit hardware like an Amiga 500.

I’ve known that PCs were very much getting ahead of consoles, which, at one point, used to be leading edge. Really researching what to put in my build, and seeing the results of it playing Starfield and Cyberpunk 2077 – Just incredible.

I’ve enjoyed the gaming experience so much on my Steamdeck, being able to play those games, literally anywhere between the Steamdeck, on my PC, or on my PC laptop, or streaming in my living room – is epic.

40 Years of Computers

This month I celebrate 40 years since I was given my first computer – A Timex Sinclair 1000. I’ve talked about and reminisced about this time period often.

The fishbowl PC next to my first computer, a Timex Sinclair 1000

Mum finally agreed to get a computer, so off we went to Consumers Distributing in Mississauga on Dundas St, after piano lessons. It was between a Timex Sinclair 1000 or a Texas Instruments TI99/4a – both being on sale. As history would have it, we bough the Timex Sinclair 1000 for CA$69.99 in 1983 – Today apparently that’s $211.77 adjusted for inflation!

That was a huge purchase back in the day, and it had a massive impact on my life.

Two months later, my Dad bought us a Commodore 64 for Christmas at a Zellers in Guelph complete with a Vic Desk, Monitor and disk drive! It was an amazing setup!

With my parents divorced, we had to keep the Sinclair a secret from Dad out of the irrational fear that he would not buy us the Commodore.

I’m so glad and very fortunate my parents invested in my future though both systems. It’s let me appreciate generations of computers from an early age. I used both a fair but, and we expanded the Sinclair with the thermal printer and a 16k RAM pack so we could play Frogger in black and white. 10 minutes to load from a tape deck!

In 1987, an acquaintance from school gave me his TS/1000 and a bunch of tapes. Both still are here with me, as are the tapes and a tape deck.

The impact of having a computer in my life did several things

  • It very much inspired my career – There were several things I wanted to do between becoming a high school Computer Science teacher, to being a software developer that travelled. I ended up doing the latter between software development, being a consultant, management and architecture.
  • It became a major hobby – between maximizing my home network, my retrogaming projects and other things, it opened up a whole new world to me, one that I wanted to play a part in.
  • It helped drive friendships and connection – Nothing like trading games to create community back then. L33t! 😉

My history of computing goes something like this

  • Timex Sinclair 1000
  • Commodore 64
  • Commodore Amiga 500 – I saved up for this all summer, the graphics were amazing
  • AST 486SX Laptop – Which sadly died two years after I bought it, not having used it for a year while I was living the UK
  • Commodore Amiga 3000 – This was given to me by a former work colleague and landlord. I took it with me to the UK and used it to emulate a Mac to complete my assignments
  • Compaq Presario 4528 – This was my first desktop Intel machine – Pentium II power with MMX! I used this to finish my degree
  • PC I had built – I’ve completely forgotten what the specs were for this machine
  • Lenovo T-Series laptop
  • Apple PowerMac G4 Desktop
  • At this point I got indoctrinated into Apple with various Mac laptops – G3, G4, MacBooks, MacBook Pros, MacBook Airs, an Intel-based iMac & MacMinis, and currently with an M1 Mac Mini, and a MacBook Pro
  • Various Raspberry Pi Model 3Bs, 4s, 400s, 3As
  • Minisforum HX90 – My first desktop PC since around 2003 which I was going to use for my arcade project but ended up not doing so
  • Beeline SER5 – I’m using this on my Pinball Machine to drive Pinball FX
  • Alienware M15 – AMD Rizen 9 7845 and Nvidia GeForce RTX 4070
  • And finally, to celebrate my 40th year of computing, I finally built my own PC with my friend Charles with an AMD Rizen 9 7950X3D and an AMD RX 7900 XTX which is all decked out with LCDs and LED lighting

If I were to include game machines:

  • Commodore Amiga CDTV – Do we really consider this a game machine? LOL
  • Commodore Amiga CD32
  • Nintendo Gameboy Colour
  • Nintendo Gamecube
  • Nintendo Gameboy Advance SP
  • Nintendo 3DS
  • Nintendo Wii
  • Sony Playstation 3
  • Xbox 360
  • Sony Playstation 4
  • Xbox One
  • Sony PlayStation 4 Pro
  • Xbox Series X
  • Playstation 5

Which gives me pause for thought.

Put my Timex Sinclair 1000 next to my new desktop PC – As a kid, I could not fathom having a computer that could generate the images that we now see in 4K on our computer monitors. My friends and I thought it was going to be an impossible task to emulate an Amiga, yet, today we have small credit-card sized computers that can emulate such a machine many times faster, with a huge amount of ram and storage space, relatively speaking.

At that time in the 80s, I’m not sure we could envision what we have today, even in the 90s. I think, by the 2000s you could see where things were going so the surprises are becoming fewer and fewer.

How many Cray XMPs are on my desktop? 800 MFLOPs versus 563 GFLOP (563000 MFLOPS) – 703 times the processing power!

We’ve come a long way from having to cool super computers the way we did in the 80s to what we have today.

The power of my new desktop, even my laptop, is completely insane!

I do believe one of my Timex Sinclair 1000s still works, the other would need to reconnect the keyboard properly and fix one of the membrane keys. The other challenge is having a TV with an analogue antenna port, which I do have, so I have ways of connecting the computer up to a TV.

Frogger for the Sinclair ZX81/Timex Sinclair 1000 being run off my Raspberry Pi arcade console

This is one of the reasons I believe in retro gaming archives and emulation, so people can experience what it was like using some of these more “primitive” machines which are so important to computing history, inspiring people and getting computers into the home.

I won’t lie that I miss the discussions we would have on the merits of different platforms, specifications, what computer the future should pick but that business had blinders on focusing on Intel 80X86 systems rather than the superior Motorola 680X0 series, what the future should be. We were all idealists back then, and we did have some foresight.

Thing is, that discussion became – Xbox versus Playstation, AMD versus Intel, Windows versus macOS. Where it used to be considerably broader, it always seemed to become two against each other – Commodore versus Atari back in the day.

DOS and Windows did become way more refined like Amiga Workbench and Apple macOS. Platforms are a lot more open. For example could you imagine the Windows Subsystem for Linux to run Linux oriented software on Windows? macOS being built on BSD? I couldn’t have either.

So what is there to get excited about these days, especially given 40 years of system versus system battles? Here is what I’m interested in:

  • Miniturization – The fact that a Raspberry Pi running an ARM core can emulate so many machines is, in many respects, mind-blowing. Just how powerful that platform is.
  • Efficiency – While my “Fishbowl” is one of the fastest setups you can buy, speed isn’t necessarily everything to me. Doing what I can with efficiency is really neat, which goes hand in hand with miniaturization. Doing all that I can to maximize use of the system. For example, I have a Raspberry Pi server in my home running multiple applications on a single machine – I’m not using an x86-based system for this.
  • What’s going on with other platforms? – I like learning and seeing what’s going on in the macOS, Linux and Windows worlds, especially with being away from the Windows world for over 20 years.

There are other things too, but those are the top three.

It’s been an incredible journey of 40 years.

Setting up an APC UPS, Synology and NUT

I figured I’d document setting up an uninterruptible power supply (UPS) with a Synology NAS that can also shutdown a Mac and two Raspberry Pis that drive certain aspects of my home network.

I am using NUT as clients on the Raspberry Pi and macOS computers that connects to my Synology NAS with an APC UPS connected.

Synology NAS Setup

For the Synology, follow Synology’s instructions to enable UPS support in DSM with the following exceptions:

  • Enable the Network UPS server
  • Put in the IP addresses of the computers you want to send shutdown messages to. While it says, “Permitted Synology NAS Devices”, you can use Network UPS Tools (NUT) clients in both macOS and Raspberry Pi OS to monitor
  • You do need to give those clientsand your NAS static IP addresses, which they have on my network

Raspberry Pi Setup

Setting up the client on Raspberry Pi is pretty straight forward. The link provided covers setting up as both server and client if you ever wanted to use a Raspberry Pi as a server.

For the purposes of my setup, I’m going to recommend letting the NAS be the server in this case.

Make sure you pay attention to upssched-cmd

macOS Setup

macOS is a bit trickier.

  • If you don’t have Mac Ports installed, install it
  • I followed these instructions to install NUT with the exception of
  • Making sure I used the MONITOR, NOTIFYMSG, NOTIFYFLAG details from the Raspberry Pi Setup
    • I used nano instead of emacs
  • I then follow the configuration files as described in the Raspberry Pi setup with the changes in the Mac instructions in this section

Steamdeck

For the past year I’ve been playing with a Steamdeck.

I adored the Sony Playstation Vita, and when I saw the Steamdeck, I saw it as a worthy successor and I think I’m right.

The Steamdeck is fantastic! Now, there are definitely more powerful handhelds out there such as the Asus ROG Ally, but the Steamdeck was really the game changer handheld gamers were looking for.

What do I like about it?

  • It runs Linux – Nothing like seeing the power of Linux shine at a gaming level. Steam did a great job of creating SteamOS off Arch Linux
  • I can use it both as a gaming machine and as a Linux desktop, especially when in a dock hooked up to a keyboard, monitor and mouse
  • It runs Windows – Not that I run Windows often on the Steamdeck, but it’s definitely an option and I’m running it off an SD card
  • It runs Emulation Station – This was a huge factor in me buying the Steamdeck, I wanted to be able to carry a subset of my retro gaming archive on the Steamdeck.
  • How it feels in my hands and how visible the screen is
  • The controls are good
  • For how powerful the machine is, the battery life is not bad

What do I dislike about it?

  • The size of the Steamdeck is big and the case just adds more to it. That said, it’s kind of to be expected, people need a good size screen, good controls and a comfortable unit, so there are definitely tradeoffs.
  • It can run warm – Although I throttle using some plugins which saves battery life
  • The virtual keyboard takes up too much of the screen, and sometimes blocks fields you’re entering, say, a username or password in

There’s not much I don’t like, honestly and I can very much live with the things I dislike.

I’ve played some AAA titles such as Stray, and I didn’t see much lag, and the Steamdeck kept up with the game.

I do tend to play more modern retro-like games and games that don’t tax the system, however I would like to play more immersive modern games on it.

Now, how do I balance Steam versus my game consoles? Well, there are certain games that I’m going to want to play on multiple platforms – Tetris is one game that I want with me. I think this is also why I play more retro-like and independent games on the Steamdeck, because they don’t necessarily exist on the consoles, or if they do, I’m more likely to play games while travelling, or casually outside versus inside.

Some games are mean to be played on a big TV, some, I’d say handheld, and others work for both.

Steamdeck, Asus ROG Ally or other? Hmmm – The Steamdeck, when I ordered it, was definitely one of a kind and it definitely spurred a whole new industry.

I admit, I love the look of the Asus ROG Ally, but I’m a bit meh on it running Windows out of the box. I know there are sites that document how to setup Linux and get close to a Steamdeck experience on the Ally and that will improve over time. The Ally is definitely more powerful than the Steamdeck.

I think, ultimately, weigh the pros and cons of Windows versus Linux. SteamOS is pretty fantastic and I’ve not had any issues with it.

Raspberry Pi Projects

I adore the Raspberry Pi platform. A small, credit card-sized computer, that’s cheap, relatively powerful and extremely versatile. If you’re looking for one, have a look at rpilocator.com which provides inventory detail around the world for Raspberry Pis.

While they primarily run Linux, there are a number of operating systems available including a bunch of Linux distributions including sub variants like Android and ChromiumOS, FreeBSD, RISC OS, and Plan 9.

I pretty much run Raspberry Pi OS, formerly Raspbian, on all my Pis. Here are a few projects I’ve created over the years

OctoPrint – I run OctoPrint on my 3D printer as a print spooler so I can keep my other computers going on other projects, especially for long print jobs.

Pi-Hole – I run an ad blocker on my home network so it a) reduces the amount of traffic on my home network, b) reduces how often we get profiled by ads, c) reduces annoying web pages as much as possible.

RetroPie – I run RetroPie on my home arcade consoles with my curated image of games from the 70s to early 2000s.

Recalbox – I have a few handheld Raspberry Pi Zero -based gaming machines such as the Retroflag GPi Case that run Recalbox. Well worth looking into as an alternative to RetroPie.

Pi1541 – When backing up old Commodore 64 disks and adding to my curated game images, I sought out Pi1541 to save backups of my disks. It works very well as a 1541 drive emulator.

Pimiga – Anyone who knows me knows how much I love Commodore Amiga computers, and I have quite a collection at home. When I heard about Pimiga, I had to try it out. It’s pretty amazing.

PiStorm – While i’ve not actually finished setting this up, I have a PiStorm to breathe new life into my Amiga 500 and 1000 in my collection. In short, it replaces the Motorola 68000 with software emulation running on the Raspberry Pi, accelerating the Amiga, and also supports RTG so you can run your Amiga off an HDMI screen rather than having to find a 15khz monitor. it also allows you to run any Kickstart – available with Coloanto Amiga Forever.

Home Assistant – I attempted to setup a Home Assistant at home, however I think I unfortunately killed the SSD – I’m in the process of reviving it – despite having a fan in the case. I went with Home Assistant as I’ve been concerned – what happens to our web-connected smart devices when manufacturers fold or cease to support a device? I’m using an Argon One M.2 case for this project.

Home brew projects

On Air Indicator – Based on a Raspberry Pi Zero W, I created an internal website that indicates if a room is in use, okay to enter, etc. Useful for Scott’s office when he’s teaching. I used a Pimoroni Blanket! LED, Apache, PHP and Python to

Game Console – An extension of RetroPie, here is a link to my page for how I put together my custom arcade game console.

What models am I using?

Primary Pi 4s and 400s with 4Gb of memory. I use a Pi 400 as my “primary” Linux machine in my office for general tinkering, testing and other geekery at home.

My OctoPi runs off a Pi 3B, and it’s more than enough power for that setup.

My handheld and On Air Indicator project run of Pi Zero Ws, and I have a Pi Zero 2W I also use with the GPI case – the 2W is close in power to a 3 which is huge.

For PiStorm, I’m using a Pi 3A which has a much thinner form factor.

And there you go!

RetroPie, Ultimarc I-Pac Ultimate I/O Game Console, RGB Commander and xboxdrv

About two years ago, I was inspired by my partner Sté to put together my own arcade game console with buttons, two joysticks, blinky LEDS and make it Raspberry Pi and RetroPie-based.

It was a great project to start during the COVID-19 Pandemic, but I ran into an issue when one of the vendors sent me the wrong cables. I finally got around to sorting this out and got the controller up and running.

I’m putting this together so that anyone who wants to do something similar with RetoPie can do so. There were some hoops I had to jump through to get this working, mainly around drivers that were no longer available, but re-found courtesy of the Internet Archives.

Here is where I picked up the parts:

  • Game Room Solutions – Who designed the console box and artwork
  • Ultimarc – I went with the Classic RGB Illuminated buttons and went with the I-Pac Ultimate I/O which acts as a keyboard, Xbox 360 Controller, or dInput. I also wanted illuminated joysticks.
  • Raspberry Pi 4 – The guts of the system – 4gb spec.
  • Crucial X8 4Tb SSD – I wanted something fast, relatively low power, and efficient for space. I also have curated a significantly large image of games from the 70s to early 2000s. Previously I was using a WD 4Tb My Passport which does the trick and thankfully I was able to copy the image to the SDD.
  • Atolla USB Hub – While it seems I can power the SDD from the Raspberry Pi directly, I wanted to make sure I had a powered USB hub to help with power.
  • Various cables
    1. USB A-USB C cable for power to the Raspberry Pi from the USB hub
    2. Power cable for the Ultimate I/O board to power LEDs
    3. Micro USB-USB A for the Ultimate I/O board for cotrol
    4. Micro HDMI to HDMI and with a female to female converter to hook up to my TV

A lesson learned

I originally bought a set of buttons and a controller from Amazon or Aliexpress, and while it sort of worked, I ran into an issue with keyboard emulation. From what I recall, I couldn’t use two of these controllers at the same time for the two different sides, or something else. It’s been a while. I know I also had some issues with powering the LEDs on those buttons.

I was also frustrated because the buttons were really brittle so taking off the switches broke the harness that the switch sits in.

Setting it up

When ordering the Ultimate I/O board make sure you go with the 4.8 mm switch connector. The buttons had 4.8 mm connectors, not the 2.8 mm which are for the Goldleaf connectors. I had ordered the 4.8 mm harness with mine, and Ultimarc sent me the 4.8 mm and 2.8 mm version.

Wiring is not too hard, but a few tips:

  • Make a note of where you’re connecting your LEDs for the buttons as you’ll need the port numbers for programming/configuration later
  • Pay attention to the switch harness and what wire goes to which button as they are specific
  • Buttons for Joysticks and Buttons themselves often have two connectors – for the signal wire. I found that you want to connect the signal wire to the terminal closest to the ground. Otherwise it assumes the switch is closed when you’re not pressing the button rather than open:

Keyboard or Xbox 360 Mode?

The Ultimarc I/O board can switch between multiple modes – Keyboard, dInput, and Xbox 360 mode. I didn’t explore much with dInput mode as I’ve had good experiences with both Keyboards and Xbox controllers with RetroPie.

There is once big caveat – If you use Xbox mode, you cannot control the LEDs on the board. As I understand it, Microsoft locks down the abilities of boards that emulate Xbox controllers in their protocols, and so you cannot control the LEDs.

That said, two controllers are clearly visible in Xbox mode and it works well. Just be sure to program the triggers to the proper Coin and Start buttons if you use this mode. If you’re not using LEDs, this could work for you.

Now, what is the challenge if you use Keyboard mode with RetroPie? Well…out of the box, you can only setup the keyboard as a single player device, you can’t have two distinct set of controllers and control them as Player 1 and 2 separately.

If you try to setup both sides, you end up wiping out the controls for the other player. So if I setup Player 1 and then setup Player 2, I end up wiping out the Player 2 controls.

Attempt #1: xboxdrv

Update 2023-08-31: I thought xboxdrv to the rescue, but it actually didn’t work. Sure enough, it turned my keyboard into an Xbox controller, but only one controller, not two.

So you can’t say one part of the keyboard is player 1, and another part is player 2. ARGH!

Here is what I had previously written:

xboxdrv allows you to setup a single keyboard-like device as two controllers (nope!). So your device still acts like a keyboard, and the driver converts the keypresses as if it were an Xbox controller. Perfect for what I needed so I can control the LEDs and have two controllers.

The RetroPie documentation is great is covered what I needed, as is the manpage for xboxdrv.

Ultimately what got me over the hurdle was the –next-controller command. Here is the command line I ended up using for the base configuration of my Ultimate I/O:

sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \
    --evdev /dev/input/by-id/usb-Ultimarc_I-PAC_Ultimate_I_O_4-event-kbd \
    --silent \
    --detach-kernel-driver \
    --force-feedback \
    --deadzone-trigger 15% \
    --deadzone 4000 \
    --mimic-xpad \
    --dpad-as-button \
    --evdev-keymap KEY_LEFTCTRL=a,KEY_LEFTALT=b,KEY_SPACE=x,KEY_LEFTSHIFT=y,KEY_Z=lb,KEY_X=rb,KEY_C=tl,KEY_V=tr,KEY_3=guide,KEY_1=back,KEY_5=start,KEY_UP=du,KEY_DOWN=dd,KEY_LEFT=dl,KEY_RIGHT=dr \
--ui-axismap lt=void,rt=void,x1=void,x2=void,y1=void,y2=void \
  --next-controller \
    --evdev-keymap KEY_A=a,KEY_S=b,KEY_Q=x,KEY_W=y,KEY_I=lb,KEY_K=rb,KEY_J=tl,KEY_L=tr,KEY_8=guide,KEY_6=back,KEY_2=start,KEY_R=du,KEY_F=dd,KEY_D=dl,KEY_G=dr \
    --ui-axismap lt=void,rt=void,x1=void,x2=void,y1=void,y2=void \
    &

This works perfectly for what I wanted. Definitely use the by-id approach as that guarantees the Ultimarc Game Controller is used rather than any other plug and play device.

Nope, that did not work – I suspect I had my keyboard plugged in at the time.

A real shame, because if someone could get the OS to interpret two different parts of the keyboard as a joystick, then that would be awesome.

Attempt #2: Update retroarch.cfg

Ultimately, I had to follow the page on Keyboard controllers at Retopie and setup retroarch.cfg for all systems to use the keyboard as player 1 and player 2. This works well with Retroarch and definitely, two people can play head to head with the controller AND I can use the RGB lights.

There’s a problem though. What if I wanted to play a game like Gauntlet with four people, two on the controller, and two on wireless joysticks?

It seems that for now, I’m a bit out of luck unless I use a tool like Retropie Joystick Selection and force a joystick to be used for player 3 and 4. It’s kludgy but it works. It would be nice if this were available through the Emulation Station UI so I don’t have to login to my Raspberry Pi to make the changes.

Now, for practicality sake, how many people will actually use the controller directly versus using wireless controllers? Most people will likely play games with wireless controllers as our living room is in a bit of an odd layout with the couches perpendicular to the television.

Wireless Controllers?

Of course! I want friends to be able to play games like Gauntlet – very much a favourite – which supports up to 4 players. This was a big deal when Atari came out with the game, and very much my kind of D&D-like game to throw virtual quarters at.

I’m using 8BitDo SN30s and Ultimates in my build. The Ultimates will be the primary controllers for player 1 and 2, with the SN30s for player 3 and 4, or if preferred, someone can use the SN30s.

How about that LED Lighting?

Ultimarc suggests using RGB Commander, however clicking the link, RGB Commander no longer exists. Doing a search, RGB Commander is nowhere to be found.

Welcome to the Internet Wayback Machine – You can download version 4.0.5 here, which was the last version.

Details can be found here.

Much thanks to Gijsbrecht De Waegeneer – if there is a way I can support you in the future, I’d like to through a donation, or some other means. Even if I could host or even take over the code, it’s clear there is demand for RGB Commander.

RBG Commander has two config files:

  • rgbcmdd.xml which defines the actual behaviour of the LEDs and RGB Commander
  • Animation files in the rgba folder

Some tips about RGB Commander:

  • You can setup a static pattern, you don’t always have to use an Animation
  • When creating your own RGBA file, use three values to set RGB
  • When you start programming the RGB values on the right side, I have noticed that I had to program the values not in R, G, B triplets but in B, G, R – I’m double checking to make sure I’ve not plugged in my LEDs backwards on the board
  • It’s not hard to program but will take some experimenting with the setup to understand which LED is represented by each triplet
  • I’ve not linked the application up to specific emulators and tested that, yet

I left the default animation on boot up of the Ultimate I/O card as-is – It’s almost like it’s linked to boot up of RetroPie, which it really isn’t, it isn’t like it’s a progress indicator per se, but you know RetroPie is fully loaded when my default animation starts playing. Neat!

Next up is figuring out how to get buttons to show up in the various emulators.

What else?

If you want to add external USB-based hand held controllers you can. IDs for the devices, i.e. which is the first, second, third or fourth controller seems to be determined based on the order in which they are connected to the USB hub. Play around with this on your hub. I could actually be quite wrong.

Conclusion

This has been an epic project, a bit delayed, but I got it done and I’m super pleased with the results.

This completely replaces a Raspberry Pi 400, USB hub and wireless controllers I had setup as part of my home entertainment setup and puts everything into a very accessible, expandable box. It also frees up the living room Raspberry Pi 400 for other projects.

What’s Next? I’m not planning on putting this in its own arcade cabinet as I already have an AtGames Legends Ultimate with AwesomeSaUCE and CoinOpsX. I am thinking of getting a wide IKEA Lack TV Bench or Coffee Table to put the console on as it’s a bit difficult to sit on the floor comfortably although it does give me significant modern 80s retro vibes and memories.