Selsine’s Retro Gaming YouTube Channel

I’ve decided to start recording the gameplay from of the classic video games from my youth. The first video game that I’m going to tackle is Super Mario Bros 2. You can can find all of the videos on my selsine YouTube channel.

Cover Art for Super Mario Bros. 2

For now I’m going to focus on games from the Nintendo Entertainment System (NES) specifically, so if there are any NES games that you want me to play please let me know.

If you like watching old guys play video games please subscribe to my YouTube channel and let me know what you like and what you don’t like.

I’m doing this as part of my attempt to create more. I’ve been feeling a bit stuck lately (I wonder why) and I’m thinking that putting more out into the world will help. I know it’s going to be hard with kids and a full time job, so I’m going to start small. Trying to put out one video and one blog post a week. You’ll recognize my love to old video games in some of my older posts about recording game play on the RetroPi.

The nice thing about recording retro game play is that it has the added bonus of being fun to do at the same time.

We’ll see how it goes…

70% Hydration Sourdough Bread Recipe Recipe


I’ve been making sourdough bread off an on for the last few years, making many bad and a few good, loaves of bread. This recipe is what I’m currently making and results in a loaf of bread that everyone in my family can enjoy.

Note: I’m going to slowly add some recipes to my blog. The real reason that I’m doing this is so that I will always be able to find them when I need to!

This recipe assumes that you already have an active sourdough starter ready to use. If you don’t have a starter it’s really easy to make one, all you need is a google search, flour, and water.

This recipe uses weight (grams) for its measurements instead of cups or spoons. I’ve found that makes a sourdough recipe easier to replicate and tweak the hydration levels. This is a 70% hydration recipe, which means that the amount of water used is 70% of amount of flour used. Using weight makes it easier to switch to a 65% hydration sourdough by simply decreasing the amount of water used or make a half batch.

I like 70% hydration as the crust of the bread ends up being soft and chewy as opposed to the crust of some of my earlier loaves that did not pass the kids test.

Continue reading 70% Hydration Sourdough Bread Recipe Recipe

Instant Pot Banana Oatmeal

This is a bit of a left turn for this blog but I am posting here so that I don’t loose it. If you have an Instant Pot (or another pressure cooker I guess) and are interested in a tasty healthy breakfast give it a try. The mashed bananas are a really nice addition and are sweet enough so that you don’t need to add any sweetener. I often double this recipe up.


  • 2 bananas – nice and ripe, use frozen if you have them
  • 2 cup rolled oats
  • 3 1/3 cups water
  • 1 tsp vanilla
  • 1 tsp cinnamon
  • 1 – 2 cups frozen berries or fruit – whatever you like best
  • 1 apple – chopped


  1. Mash the bananas in a bowl until the lumps are gone. If you are using fresh bananas you could do this in the Instant Pot but I usually do it in the glass bowl that I used to microwave the frozen bananas.
  2. Core and chop the apple (no need to peel) and add it to the bananas.
  3. Add the vanilla and cinnamon to the banana apple mixture.
  4. Combine the oats and water in the Instant Pot.
  5. Add the apple banana mixture and the frozen fruit to the Instant Pot, give it a few good stirs so that it is well mixed.
  6. Close the instant pot (make sure it’s set to sealing) and use the manual setting on high pressure for 7 minutes.
  7. Let the pressure release naturally form the Instant Pot for about ten minutes.
  8. Scoop into a bowl and enjoy.

Yesterday I Bought My First Bitcoins

Yesterday I took the plunge and bought my first bitcoin, well my first tiny percentage of a bitcoin. I spent a little bit of money and purchased some Bitcoin, Ethereum, and Litecoin. Doing this right in the middle of the hype-cycle makes me feel like a bit of a cliché, but I’m trying to get over it. I am also still trying to get over my ignorance about how all of this works, and I’m hoping that the more I experiment and the more I blog, the more I will learn.

I purchased the currency as a way to get get started, I plan on transferring the coins to an exchange where I can then trade them for other coins and experiment with buying and selling.

I did it using CoinBase (Referral href=””>link) and it only took me a few minutes once my account was setup.

There as some pros and cons (high transaction fees!) to using CoinBase, but one of the reasons I went with them was because they are backed by VC firm A16Z, who is large enough, and respected enough for me to trust. So I went with them even though there are others, because I was pretty sure that they were not going to steal my money. Prior to purchasing I read quite a bit online including the BitcoinCA subreddit.

Note: Don’t take me at my word though, if you are interested do your own research and pick a company or exchange that you are comfortable with. There is risk in all of this, and I am not an expert.

Doing this in Canada means that I will not be able to pull my money out of Coinbase directly, instead I will need to setup a wallet somewhere else, transfer my funds there, and then pull the money out.

Coinbase has an easy to use website and a very nice iOS app (the charts are excellent, and if you know me you know that I love charts). What you first need to do is create an account on or within the app. Then you will need to verify your phone number. This is similar to two factor authentication. You give them your phone number, they text you a code, and then you open the code in your app in order to prove that you have access to the phone.

After that was setup the next step was to add a payment method. I added a credit card, but you can also choose to add a debit card.

After you had added a payment method CoinBase will put two pending charges onto your linked account between $1.00 and $2.00 for additional verification. These charges will be refunded but you will need to log onto your credit cards or bank’s website and look for any pending charges.

Enter the two pending charges into the CoinBase app or website and you have successfully verified your payment account.

After that you are ready to buy some crypto. If you are in Canada like me it means that you can purchase a maximum of $250.00 per week, which is another reason to use a different site, but for me I just wanted to experiment so the low limit was acceptable.

At some point in time I am going to register for site that will allow me to extract my funds as Canadian dollars, but as I have heard that the verification times right now are exceptionally long, and I want to test out some exchanges first, I’m ok with this as a starting point.

I mentioned earlier in the post that CoinBase charges pretty high transaction fees, and in my three small transactions (purchasing Bitcoins, Ethereum, and Litecoin) I paid %5.39 in transaction fees. As a result of this, I’m not sure I would recommend going with them in the long run, however as a quick way to dip your toes into crypto currency CoinBase was pretty easy to use, and so far seems safe enough.

Also, I am in no way recommending that you invest in crypto currencies at the moment, I am only doing it as an experiment and only invested a small amount of money that I was comfortable losing.

My goal is not just to experiment in the buying and selling of crypto currencies, I also want to experiment with the underlying technology and code. This is the first step for me in understanding how to buy and sell currencies.

Bitcoins, Blockchains, and Cryptocurrencies Oh My!

The Introduction

We’re just half way into the first month of 2018 and if you follow tech in any way (even if you don’t) you’ve probably heard about Bitcoin and other cryptocurrencies. This is mainly due to their values exploding near the end of 2017 and all of the hype and confusion that generated.

This graph, showing the value of Bitcoin shows why there was so much hype:

Yahoo! Finance

As you see the price of a Bitcoin went from $5,917.16 USD November 6th, 2017 to $19,230.77 USD just over a month later on December 11th, 2017. Which works out to a 225% rate of return on your investment. That’s enough to get a lot of people talking and investing.

Of course for Bitcoin this really isn’t anything that new, back when it first hit $1,000 USD, I remember a similar (albeit smaller) level of hype. This time it feels different, maybe it’s the sheer number of “alt-coins” that have arisen, or perhaps it was the rise of the ICO’s (Initial Coin Offerings), but there seems to be more substance now, more legitimacy to what is happening. Or perhaps it’s just taken this next round of hype for me to look at it long enough to believe that there is some legitimacy. To be fair, like sharks to a feeding frenzy, all of this hype and money has attracted scam artists intent on making a quick buck from buzzwords and empty promises, so take my claims of substance with a more than a grain of salt for now.

The Reasons

From Satoshi Nakamoto’s whitepaper

So why am I writing this blog post? Basically it’s because I don’t know anything about Bitcoin, the blockchain, trusted contracts, trusted contracts, nothing. But I want to learn. (That’s not totally true I have read Satoshi Nakamoto’s whitepaper.)

What I’m going to try to do over the next few weeks or months is to try to enter the cryptocurrency world, both from a monetary perspective and also from a technical perspective, all the while documenting my journey here.

For a variety of reasons what I want to do is give myself a project that will do the following:

  1. Get me writing again
  2. Learn something new and current

While at the same time learning more about:

  1. Bitcoin
  2. The blockchain (as a protocol, why do some very smart people think that this is the future of computing?)
  3. Trusted contracts
  4. Proof of work
  5. Ethereum, Ethereum tokens, and DAPPS (Decentralized Apps that run on the Ethereum protocol
  6. All the things I don’t even know yet

As well as basic things like:

  1. How to setup a bitcoin wallet
  2. How to mine a cryptocurrency
  3. How to trade cryptocurrencies.

I’m not yet sure how far I’ll go, or how technical the articles will be, but I’m excited to take another stab at blogging and learning again.

Till next time.

follow.trail on iOS

Today my buddy Greg released his first iOS game follow.trail. It’s a puzzle game where you attempt to clear the game board of all the black and white tiles before reaching the end tile. If you succeed then you move onto the next level, and if you fail you restart. The levels start out easy and then get more and more difficult (natch). 

I was lucky enough to be a part of his beta test and am the current follow.trail world record holder at level 69.

The game is $3.49 Canadian (I think, since I bought it I can’t check the price), $2.99 US, and worth every penny. No in-app purchase, ads, or anything like that just a straight-ahead puzzle game.  There may be some promo codes still available in a Touch arcade thread if you want to grab the game for free. 

So if you have an iPhone check out follow.trail and support your local indie dev. 

Oh and there is no Android version (or rain).

Friday Evening Tech Thoughts

It’s Friday night and I find myself watching playoff hockey, on my own, for the first time in what must be over a decade. 

In between periods the commentators come on and begin to discuss the game so far. The sound is off because we had been putting the kids to bed so I have no idea what the men in suits are saying. What I do notice, however, is the sponsor: Hauwei. 

My how times have changed. A global Chinese tech brand, mostly known for smartphones in the west, is sponsoring NHL hockey on the Canadian Public Broadcasting network. Tech, smartphones in particular are mainstream. I remember a few years ago, maybe 5, when people in the tech community still struggled to pronounce Hauwei…

This, and a conversation I had with my podcast cohost Ben Rogers, got me thinking, after what seemed like dull Google I/O and Microsoft Build events about the current state tech:

  • It feels like we are in the tech hangover after the smartphone high.
  • We are desperately searching for another reason to party but nothing seems to be lighting things up yet.
  • Bots, smart watches promised a lot and delivered very little.
  • Virtual Reality, people were so convinced that it was the future but like smart watches consumers don’t seem to be buying.
  • Artificial intelligence, machine learning? Is this the new electricity or another iteration in the long history of AI promises and failures? (I do think AI has legs this time due to hardware increases)
  • Augmented reality? More VR? Where are the consumers aside from the initial Pokémon Go hysteria?
  • Ambient computing? Of all of the tech listed here this seems like it has the greatest chance in the short term, but for all the hype the Alexa has still sold less than 10 million units. 
  • I am writing this on an iPhone. 

Just some thoughts after a long stressful week at work. 

Also the Senators lost to Pittsburgh…

How To Live Stream To YouTube from a RetroPie

In my last post I showed how you can live stream to Twitch from a RetroPie and in this post I will build off of that and show how you can stream to YouTube.

The basics of this guide are very similar to the Twitch guide so I suggest you give it a read as I will assume that you already know how to do things like ssh into your RetroPie and work with the config files.

First Things First

Before you can stream to YouTube you need to have your RetroPie setup to record gameplace. To do so follow the instructions in this post: How To Record A GamePlay Video From A RetroPie. Once that is working come back and get YouTube streaming working.

YouTube Account and Stream Key

The first step is to get your YouTube live account setup. To do so visit: and click the “Go Live” button at the top right. If you don’t have a YouTube live account you will be prompted to create one.


Then go to your YouTube Live dashboard and scroll to the bottom of the screen. At the bottom of the screen you will see your Encoder Server URL and Stream key:


You will need to press the reveal button to actually get your YouTube Stream key. Keep that around but like your Twitch stream key do not share it with anyone.

Streaming Config File

Now that our account is set up we will need to create an FFmpeg config file for our YouTube streaming. We could share the Twitch file but to make this guide easier we will create a new file, plus I think that their settings will need to be different. SSH into your RetroPie and create your YouTube config file with the following command:

$ nano /home/pi/RetroPie/recording/youtube.cfg


Then paste the following config settings into the file:

vcodec = libx264
acodec = libfdk_aac
pix_fmt = yuv420p
threads = 2
scale_factor = 1
format = flv
video_preset = ultrafast
video_profile = main
video_tune = animation
video_bufsize = 512k
video_minrate = 512k
video_maxrate = 512k
video_r = 60
video_g = 120
video_keyint_min = 60
sample_rate = 44100
audio_preset = aac_he_v2
audio_global_quality = 1


Then save (CTRL+O) and exit nano (CTRL+X).

Note: I’ve noticed that the video quality on YouTube using these settings is a little worse than what I was seeing on Twitch. So they will need to be tweaked a little bit in the future.

Emulator Configuration

Now we need to edit the config file for the emulators that we want to stream. More information on this can be found in my game play stream tutorial. All emulator config files can be found using the following path:


Where $$SYSTEM$$ is the name of the system that you want to configure. For this example we will be adding a YouTube livestream entry to the NES config file. To do so we edit it with the following command:

$ nano /opt/retropie/configs/nes/emulators.cfg

Then we will add a ‘lr-fceumm-record-youtube’ entry that will stream to YouTube:

lr-fceumm-record-youtube = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-fceumm/ --config /opt/retropie/configs/nes/retroarch.cfg --record rtmp://$$STREAM_KEY$$ --recordconfig /home/pi/RetroPie/recording/youtube.cfg %ROM%"



is the YouTube URL we are streaming to and $$STREAM_KEY$$ is the YouTube stream key we got earlier.


--recordconfig /home/pi/RetroPie/recording/youtube.cfg

tells FFmpeg to use the config file we created earlier.

Then save (CTRL+O) and exit nano (CTRL+X).

Streaming Your GamePlay


Now that we have everything setup we can stream to YouTube by starting a NES game and then pressing the ‘A’ button while the game is loading. This will load the configuration screen, from there select ‘Select emulator for rom’. You will now see the new ‘lr-fceumm-record-youtube’ entry that we added. Select it (it will now be the default so be sure to change it if you don’t want to stream next time you play) and when you launch the game you should now be streaming to YouTube.

That’s it.

You can check out my live YouTube here:

How To Live Stream To Twitch from a RetroPie

This article will show your how to live stream from your RetroPie directly to

If you want to stream from your RetroPie to Twitch you will first need to get gameplay recording working (installing FFmpeg and rebuilding RetroArch with FFmpeg support) which you can do by following along with my earlier post: How To Record A GamePlay Video From A RetroPie

Once that is set up the next steps are pretty simple, I thought that it would be more difficult but it turns out it’s pretty straight forward to get a RetroPie to stream something to Twitch.

The big problem is the performance of the games as you are playing them. The performance is alright but I’d love to be able to up the quality a bit without having the games slow down as you play them, but I thought that I would post this and maybe a reader who knows FFmpeg better than I do could give me some tips.

Note: You can see my test stream here:


I’m going to assume that you can already ssh into your RetroPie and that you can already record gameplay videos. If not checkout my post: How To Record A GamePlay Video From A RetroPie or RetroResolutions: Recording Live Gameplay in RetroPie’s RetroArch Emulators Natively on the Raspberry Pi

Getting A Twitch Account and Stream Key

If you want to stream to Twitch you will need a Twitch account (of course) to do so visit: and signup.

Once you have an account you will need your Twitch stream key. You can get this by visiting the ‘Stream Key’ tab on your twitch dashboard at the following URL:<>/dashboard/streamkey


From there hit the ‘Show Key’ button and grab your stream key.

Note: Keep your stream key private. Anyone that has it can stream to your Twitch account, and you don’t want that happening.

Twitch Config File

Now that we have our twitch account setup we will need to create a Twitch config file for FFmpeg so that the recordings it does are compatible with the Twitch servers.

To do that ssh into your Raspberry Pi and use the following command to create the config file:

$ nano /home/pi/RetroPie/recording/twitch.cfg


I based my config file off of what I found on the RetroArch wiki however when ever I had my audio codex set to ‘libmp3lame’ I would get a “bus error” at the following location: ‘/opt/retropie/supplementary/runcommand/ line 855: 16499’

Switching to ‘aac’ as the audio code solved the issue and got me streaming to Twitch, however there were lots of lag issues, so I spent a long time configuring the settings trying to get the games to play smoothly locally and stream at the same time.

In the end these are the settings that I settled on:

vcodec = libx264
acodec = libfdk_aac
pix_fmt = yuv420p
threads = 2
scale_factor = 1
format = flv

video_preset = ultrafast
video_profile = main
video_tune = animation
video_bufsize = 512k
video_minrate = 512k
video_maxrate = 512k
video_r = 60
video_g = 120
video_keyint_min = 60

sample_rate = 44100
audio_preset = aac_he_v2
audio_global_quality = 1

There is only a bit of audio distortion but the stream gets an excellent rating on Twitch.

Once you have pasted the above settings into your config file save (CTRL+O) and exit (CTRL+X).

Emulator Configuration

Now we need to add an entry into our emulator config file that will start a twitch stream rather than a regular recording or normal emulation.

Note: For more information on emulator config files checkout my first recording howto.

For this example we are going to edit the NES system’s config file using the following command (you have to ssh in):

$ nano /opt/retropie/configs/nes/emulators.cfg

Then we need to add an entry that will stream to Twitch. We will call it: ‘lr-fceumm-record-twitch’ and we will use the following command:

lr-fceumm-record-twitch = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-fceumm/ --config /opt/retropie/configs/nes/retroarch.cfg --record rtmp://$$STREAM_KEY$$ --recordconfig /home/pi/RetroPie/recording/twitch.cfg %ROM%"

Where we specify the Twitch config file that we created earlier:

--recordconfig /home/pi/RetroPie/recording/twtich.cfg

And the RMTP Twitch URL that we will stream to:

--record rtmp://$$STREAM_KEY$$

Where $$STREAM_KEY$$ is the stream key that you got from your Twitch account earlier.


Then save (CTRL+O) and exit (CTRL+X).

Note: You may want to check out the list of Twitch servers and choose one that is the closest to you.

Streaming Your Gameplay

That’s it for the setup. Now you can go into the NES section on your RetroPie and start a game. While the game is loading hit the ‘A’ button to enter the configuration and select ‘Select emulator for rom’. There you will see the new ‘lr-fceumm-record-twitch’ entry that we added. Select it (it will now be the default so be sure to change it if you don’t want to stream next time you play.) and when you launch the game you should now be streaming to twitch.

You can check my stream to see if I’m playing anything:


How To Record A GamePlay Video From A RetroPie

(Proof that this works)


If you saw my last post you probably know that I’m into retro video games. What you might not know is that I do my retro gaming using a RetroPie. I can take screen shots of my games while I’m playing, but the RetroPie does not come with the built-in ability to create game play videos. As a result I did some Googling and found a fantastic blog post detailing how to accomplish this on Recording Live Gameplay in RetroPie’s RetroArch Emulators Natively on the Raspberry Pi. The following is a log of how I accomplished this following RetroResolution’s instructions.

Everything I did here I did on an Ubuntu machine running 16.04 LTS. I’m sure you can do all of this Mac box without any changes, but on Windows you’ll need Bash (Windows 10) or an equivalent installed to ssh and perform the backup. If you follow along and if everything goes well I would expect this to take about one full evening.

Note: This post is basically my implementation of the details laid out on Be sure to read the original author’s post for all the nitty-gritty details.


This worked for me but please be careful when following the instructions and be sure to backup all your SD Card before proceeding. Proceed at your own risk.


Before starting anything we should backup the Rsapberry Pi’s SD card so that we can get RetroPie running again if we break anything. To do this I plugged my retro pie into my USB to SD Card reader and then plugged it into my computer.

The USB was mounted to ‘/media/selsine/’ as two partitions: ‘/media/selsine/boot’ and ‘/media/selsine/retroppie’. But I didn’t want to backup each partition separately I wanted to backup the entire SD Card. To do that I needed to figure out which disk in ‘/dev/’ was the SD Card. To figure that out I used the following command:

$ mount | grep "/media/selsine"


The output showed me that the two partitions from the SD Card were under ‘/dev’ as ‘/dev/sdb1’ and ‘/dev/sdb2’ that meant that I needed to backup ‘/dev/sdb’.

I did so using the following command which created a compressed image of the disk in a folder named ‘backup’ in my home directory:

$ sudo dd if=/dev/sdb | gzip > ~/backup/retro_pie_backup.gz


It took about 15 minutes for the backup to complete so go do something interesting while that happens. After that I popped the SD card back into the Raspberry Pi and starting working.

Note: Use the following command to restore if something foes wrong:

$ gzip -dc ~/backup/retro_pie_backup.gz | dd of=/dev/sdb


Much of what we need to do we will do by ssh’ing into the Raspberry pPi. To do this you will need the IP address of your RetroPi on the local network. You can get this by going to the RetroPi setup within RetroPie and then selecting “Show IP Address” from the menu. Once you have your IP address you are good to go.

Then you can SSH into the RetroPi using the following command (where is your retro pie’s IP address:

$ ssh pi@

NOTE: The default login to a RetroPie is: User=pi Password=raspberry



Before going any further I recommend that you update your RetroPie to the latest version of RetroPie. The makes sure that you don’t run into any issues where you’ve updated one part of RetorPie but not another. To update your RetroPie ssh in and run the following command:

sudo ~/RetroPie-Setup/

This will bring up the RetroPie setup screen:


From there select ‘Update RetroPie-Setup script’ to update the setup script.

After that we will update all installed packages via the ‘Update all installed packaged’ menu item. Once all of that is done we are ready to proceed.


Note: My splash screen stopped loading after this, so in order to fix that select “Configuration / tools” from the menu:


Then ‘splashscreen – Configure splashscreen’


The select “Choose Splashscreens” | “RetroPie Splashscreens” | “retropie-default.png”.

You can also update your splashscreen from within the RetroPie settings inside of EmulationStation.

Install FFmpeg

As per the RetroResolution instructions the next step is to compile FFmpeg on the RetroPie. This is a relatively simple step since Retro Resolution has provided us with the complete script that we need to compile FFmpeg and it’s related codecs.

I recommend you read his article as it will walk you though all the why’s that I’m about to skip.

The first thing that we need to do is SSH into the RetroPie if you have not already (based on the above instructions). Now that we have logged in we need to create and execute a shell script that will install FFmpeg for us.

First we will create a “tools” directory in the “pi” user’s home directory and then create a script file within that directory:

$ mkdir /home/pi/tools
$ nano /home/pi/tools/

The nano command: ‘$ nano /home/pi/tools/’ will start the nano text editor and create the shell-script file “” in the tools directory.

Then we need to copy the shell script from retro resolution into our nano editor.


Once you have pasted the script hit CTRL+O to save the file and CTRL+X to exit nano.

We are almost done with our script, we just need to make the script executable so that we can run it:

$ chmod +x /home/pi/tools/


Now that we have our script, and it’s executable, we need to launch it as root:

$ sudo /home/pi/tools/


Then we wait for a long time. I suggest having a beer while this compiles.


Fast-forward 1.5 hours on a Raspberry Pi 2 and the compilation and installation of FFmpeg is complete:


Re-Build RetroArch

Now that we have FFmpeg on our Raspberry Pie we need to rebuild RetroArch to take advantage of FFmpeg. We’re going to create a script to enabled the FFmpeg headers in RetroArch and then rebuild RetroArch in a very similar way to what we did above with FFmpeg.

First we’ll create a script to do the work for us:

$ nano /home/pi/tools/

Then we will paste in the following script:


cd ~/RetroPie-Setup/
# remove the config that disables ffmpeg on the RPI
sed -i "s/--disable-ffmpeg//" scriptmodules/emulators/
# build new retroarch from source
sudo ./ retroarch
# put the file back how it was
git checkout scriptmodules/emulators/


Then save (CTRL+O) and exit (CTRL+X).

Next we need to make the script executable:

$ chmod +x /home/pi/tools/

And finally execute it, but NOT as root:

$ /home/pi/tools/

It should finish after about 10 minutes.


We now need to see if it worked by restarting the raspberry pie and then starting a game. Once the game has started hit select+X on your controller to bring up the RetroArch menu. For me the RetroArch menu was now lacking icons, but you need to select ‘Driver’ from the menu and then look at the ‘recording’ entry and verify that it says ‘ffmpeg’ instead of ‘null’

Mount a USB Drive for Recording

We are going to save our videos onto a USB drive connected to the Raspberry Pie. RetroResolution says that this is a better, more efficient, way to record the videos. If you want you can record to the SD card and skip this step.

If we are going to save the videos on a USB drive we need to plug a USB drive into the Raspberry Pie and get the OS to mount it automatically at boot time. So plug the USB drive in, ssh into the Raspberry Pie, and then list all of the drives using the following command:

$ ls -l /dev/disk/by-uuid/


From my output I know that SDA1 is the drive that I want. So what I want to do is add the following line to my FSTAB file, using the UUID of the drive from the output to automatically mount my USB drive:

UUID=1BE2-9CBE /media/usb_video vfat nofail,user,umask=0000 0 2

Note: The above command is for a USB device that is using the FAT file system. If your USB drive is NTFS, HFS+, EXT3, or any other file system you will have to use a different command. This article on should help.

We will edit the fstab file as root using the following command:

$ sudo nano /etc/fstab


Then make our mount directory as root;

$ sudo mkdir /media/usb_video

We can test to make sure that our drive can be mounted using the following command, which we execute not as root, to be sure that the default pi user can mount the drive:

$ mount /media/usb_video/

If we don’t see an error the drive will be mounted on boot going forward.

Enable the Recording

Now we have everything in place to start recording our games. The first step is to create a recording config file. This config file will tell FFmpeg which options we want during the recording.

Created the config file with the following command:

$ mkdir /home/pi/RetroPie/recording
$ nano /home/pi/RetroPie/recording/config.cfg

Paste the following into the config file (which come from RetroResolution)to start, you can play with the settings once your recording is working:

format = matroska
threads = 3
vcodec = libx264rgb
video_preset = ultrafast
video_tune = animation
pix_fmt = bgr24
video_qp = 0
acodec = flac


Now we need to tell RetroArch to record when we play the games from certain systems. To do so we need to edit the ’emulators.cfg’ file for each system. To start I’ll show you how to edit the NES config file.

Each system’s config file exists in the following path, where <> is the gaming system:


So for the original Nintendo we need to edit the following config file:


What we are going to do is add two entries that will launch an emulator and start a recording. Here is the command to edit the NES config file in nano:

$ nano /opt/retropie/configs/nes/emulators.cfg

We will add the following two config entries that will start a recording. The first will use the config file that we created above, and the second will record with the default FFmpeg settings:

With Config:
lr-fceumm-record-hdd = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-fceumm/ --config /opt/retropie/configs/nes/retroarch.cfg --record /media/usb_video/recording_NES_$(date +%Y-%m-%d-%H%M%S).mkv --recordconfig /home/pi/RetroPie/recording/config.cfg %ROM%"

Without Config
lr-fceumm-record-hdd-no-config = "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-fceumm/ --config /opt/retropie/configs/nes/retroarch.cfg --record /media/usb_video/recording_NES_$(date +%Y-%m-%d-%H%M%S).mkv %ROM%"

The magic happens in this part of the command:

--record /media/usb_video/recording_NES_$(date +%Y-%m-%d-%H%M%S).mkv

Where we tell RetroArch to record a video and create a recording file on the USB drive that we mounted earlier. We use a timestamp in the file name: ‘$(date +%Y-%m-%d-%H%M%S)’ (which comes from a suggestion on the RetroPie forums) so that we don’t override any previous recordings.

This part of the first command tells FFmpeg to use our config file to configure itself:

--recordconfig /home/pi/RetroPie/recording/config.cfg

Now launch an NES game and press ‘A’ while the game is loading. Then select ‘Select emulator for ROM’ (to make it ROM specific) or ‘Select default emulator for nes’ for all NES games, and pick one of the above options that we added. I suggest ‘lr-fceumm-record-hdd’. Play the game for a few seconds and then quit.

Now check the USB for the files:

$ ls /media/usb_video/

If all has gone well you should see one recordings from the game that you just played (I tested a few times so I have more that one recording):


That’s It

That’s it. If everything has gone well you should have an updated RetroPie that can now create gameplay videos. If you have any questions or run into any issues please leave a comment.

Be sure to checkout without whom getting this done would have taken a lot longer than it did.

Happy gaming.