Bob

Remotely Update MiSTer via SSH

As more people are integrating their MiSTer setups into a CRT-based arcade machine, one small concern is popping up:  The potential for burn-in as the machine is left on during the update process.  This is a tiny concern and only one that’s relevant after continuous use, but since CRT’s are long out of production, anything you can do to preserve them is always a good thing.  Details are below, but I’ll skip to the end:

SSH Script:  ssh root@IPADDRESS “cd /media/fat/Scripts; ./update_all.sh”
Update_all script:  https://github.com/theypsilon/Update_All_MiSTer
If your version of Windows 10 doesn’t have SSH, run this in Powershell:  Add-WindowsCapability -Online -Name OpenSSH.Client*
Alternatively, use Putty:  https://www.putty.org/
More MiSTer info:  https://www.retrorgb.com/mister.html
MiSTer Network Access:  https://github.com/MiSTer-devel/Main_MiSTer/wiki/Network-access

Before we continue, I’d like to be clear about the scenario in which this is relevant:  Leaving your arcade machine on, as your integrated MiSTer is running the update script (my favorite these days is update_all, linked above).  I can’t think of any other environment a long-term concern of burn-in applies:  If you’re MiSTer isn’t permanently integrated, update it outside of the arcade machine.  If you’re using a standard CRT setup, simply start the update, then switch your monitor to a different input while its running.  Also, if you’re copying files to and from, just launch an arcade game and let the attract mode play as you transfer files (or I guess load the 240p test suite and a white/black screen?).

The only time I’ve ever had a concern is when running the update scripts over a slow WiFi connection, as there’s no way to turn off JUST the CRT when using most arcade machines.  Over years of use, the 10+ minutes spent every time you update might wear your CRT down unnecessarily.  Luckily, there’s a really easy way around this that you might find helpful (thanks to the help of JimmyStones & iMartyn on the official MiSTer Discord for walking me through this).  To be honest, I might even use this method for my main MiSTer, as I can power it on first, run the script from my PC, then power on my display after it’s done.

So, let’s get started.

First, you’ll want to power on your MiSTer and boot to either an arcade core with an attract mode, or into an app that shows an all-black or all white screen.  I have my MiSTerCade set to automatically boot to the last core launched, so if that was an arcade core, I basically just power on and do nothing else!  To add that option, simply add this code to the MiSTer.ini file:

You can add lines 27-39 of the latest MiSTer.ini file (the bootcare stuff) to yours…although it might be better to download the whole thing and integrate your current customizations to the new one;  The MiSTer team is constantly adding new features and using the latest .ini file is a good way to access them all:  https://github.com/MiSTer-devel/Main_MiSTer/blob/master/MiSTer.ini

Then, find out your MiSTer’s IP address.  If you’re comfortable running a command line script, you should already be familiar with how to log into your router to see your local IP addresses, but if not there’s a script you can run on your MiSTer that will tell you.   For the purposes of this post, I’ll use a standard home IP address scheme:  192.168.1.101.  I’ve found that unless I need to update my router, these IP addresses don’t really change, so you won’t have to do this that often.

Next, make sure your computer has SSH installed.  Any up-to-date version of Windows 10 should have it built in, but if not you can either use Putty, or run the following script in Powershell to install it:  Add-WindowsCapability -Online -Name OpenSSH.Client*

After that, open the command prompt by tying “cmd”.  Then enter the following command, assuming the script you’d like to run is “update_all”; If not, simply change the script to match your preferred file.  Also, MAKE SURE to change the IP address to your MiSTer’s before hitting enter:

ssh root@192.168.1.101 “cd /media/fat/Scripts; ./update_all.sh”

The first time you run the script, it’ll ask you to type “yes” and hit enter to confirm:

Then it will ask you for your password.  This is encrypted, so you won’t see anything when you type.  The default password is simply the number “1”, then hit enter:

The update script will now run, while the attract mode or blank screen plays on your arcade monitor.  Most of the time, your MiSTer will reboot when finished, but you’ll also get this screen:

The next time you run the update on the same computer, it will only prompt you for your password, nothing else.  If you’d like, you can even make this into a batch file for easy future updating.  To do this, simply create any new text file with the code that you just ran – And once again, you’ll want to change the IP address and script name to match your setup, so using the exact code you just confirmed worked is best.

Then, as the second line, simply add the word “pause”.  Then, save the .txt file and change the extension to .bat:

ssh root@192.168.1.101 “cd /media/fat/Scripts; ./update_all.sh”
pause

Now, all you need to do to perform the update is power on your MiSTer, wait for it to connect to your network and double click on the batch file.  It’ll prompt you for your password again and when you hit enter, it’ll run like before.  Then it’ll ask you to “press any key to exit” when it’s done, then automatically close the command window:

And that’s it!  The only time you’d ever need to change anything is if your MiSTer’s IP address changes, or if you’d like to run a different script.  While a nerdy solution like this isn’t for most people, anyone familiar with batch files and the command line might like it as much as I do!

For more info on integrating a MiSTer into your setup, check out my MiniMiSTerCade video!:

Liked it? Take a second to support Bob on Patreon!