Emulationstation on Gameshell

I was running v0.3. Unfortunately my attempts at installing freeimage, ended up breaking the screen drivers. Nothing after the initial boot screen. I need to start over…

I received a new GameShell today. I made a backup of the stock image on the SD card, then proceeded to follow your tutorial and got a working, legible ES install, screen looks normal. I believe the stock SD has OS 0.21 installed, but I do not know how to check that. I am going to spend some more time configuring ES and this GS in general, but I may try upgrading the OS to 0.3 and see if I get the corrupted screen issue again. But for now, it looks normal. Thanks for all your help!

Okay! I got EmulationStation to install into a new install of clockworkos_v2.1.

It launches, but I get a configuration screen to assign keys. Unfortunately, the GameShell doesn’t have enough buttons to assign every function. Is there a technique to skip entries? Or better yet, does someone have a config file will the keys already assigned?


I believe that holding any button for several seconds will skip a keymapping entry. In this way you can skip functions you do not want to map to buttons by holding any key.

Cool! I got it up and running. Unfortunately, I can’t get it to run any ROMs from NES or SNES…

Edit: Got it. Typos in emulator paths.

Cool ! Good news :slight_smile:

Please check my launch script, it could be useful for ya ! :wink:

Confirmed. ES runs fine for me with 0.21 but the display is corrupted with 0.3 installed.

Hi. Great tutorial.

I have compiled emulationstaton on 0.21 and set up es_systems.cfg and gamelists.xml following your example. Also got ES icon on clockworkpi screen.

When I run emulationstation, I get an error initializing SDL. No available video device. Window failed to initialize followed by a segmentation fault:

Any ideas?


Did you get the resources folder in .emulationstation ?

Verify the owner and the permissions of the folders

You need to add DISPLAY=:0; to send the output to the LCD before the command if launching via SSH. IE:

cpi@clockworkpi:~/.emulationstation/gamelists$ DISPLAY=:0;emulationstation

Yes. I copied the contents of ~/EmulationStation/resources into ~/.emulationstation like this:

Is this correct?

Thanks again for the help.

Thanks for the suggestion. When I tried it I got this output:


This is the same output I get when I try to run emulationstation with the command:

cpi@clockworkpi:~/.emulationstation$ emulationstation

Am I missing SDL driver?

Looks like you took the contents of the resources folder, instead of the folder itself.

Try this command, which will recursively copy the resources folder into the .emulationstation folder:

cp -R ~/EmulationStation/resources/ ~/.emulationstation/

As for your sdl error… I do remember having this problem once, but the only solution that worked for me was to start from scratch and try again.

Thanks for the help. I used the cp -R ~/EmulationStation/resources/ ~/.emulationstation/ command previously but just tried again on fresh install of 0.3 with same results :woozy_face:

I did remember this time that the /etc/emulationstation files are note created automatically. I have been making the /etc/emulationstation/themes folder to install the light theme as per the directions. Browsing the Emulationstation github page it looks like there should be some files installed to /etc during installation. Is this correct?

Thanks very much to all who have helped out. Much appreciated. Really wanna get this to work.

For etc, I had to add the folders and files for themes manually. You will need to use sudo for all commands, including git.

FYI, I started again with a fresh image with OS 0.21 and got some similar sdl errors when attempting to run emulationstation over SSH, but it ran fine when I launched it from the GameShell. I would not recommend using 0.3. I got those corrupt screens using 0.3 on 2 different GameShells.

apt-get install libcurl4-openssl-dev

worked for me but from os 0.2

A bit of a necropost, but just want to confirm that emulationstation appears to be working soundly on os 0.5.

There was a small error in the initial apt-get install, in the sense that one of the fonts couldn’t be installed. I just removed that.

sudo apt-get install libsdl2-dev libboost-system-dev libboost-filesystem-dev libboost-date-time-dev libboost-locale-dev libfreeimage-dev libfreetype6-dev libeigen3-dev libcurl4-openssl-dev libasound2-dev libgl1-mesa-dev build-essential cmake fonts-droid-fallback vlc libvlc5 libvlc-dev rapidjson-dev

git clone --recursive https://github.com/RetroPie/EmulationStation.git

cd EmulationStation

cmake .


cp -R ~/EmulationStation/resources/ ~/.emulationstation/resources/

sudo make install

rm -Rf ~/EmulationStation

In a directory you can easily access via the gameshell, make a file called emulationstation.sh, or whatever you want to call it, and in the file just write the line


Since you did the sudo make install, it should reference the file you copied to /usr/local/bin.

This is the config file I generated, based on the default directory structure of the game shell. Place it in ~/.emulationstation

		<fullname>Multiple Arcade Machine Emulator</fullname>
		<command>retroarch -F -L ~/.apps/emulators/mame2003_plus_libretro.so %ROM%</command>
		<fullname>Nintendo Entertainment System</fullname>
		<extension>.nes .NES .zip .7z</extension>
		<command>retroarch -F -L ~/.apps/emulators/nestopia_libretro.so %ROM%</command>

		<fullname>Super Nintendo Entertainment System</fullname>
		<extension>.sfc .smc .fig .zip .7z</extension>
		<command>~/apps/emulators/PocketSNES %ROM%</command>

		<fullname>Game Boy</fullname>
		<extension>.gb .gbc .gba .gbx .7z .zip</extension>
		<command>retroarch -F -L ~/.apps/emulators/mgba_libretro.so %ROM%</command>

		<fullname>Game Boy Advance</fullname>
		<extension>.gb .abc .gba .gbx .7z .zip</extension>
		<command>~/apps/emulators/gpsp %ROM%</command>

		<fullname>Sega Mega Drive</fullname>
		<extension>.bin .zip .gen .32x .smd .iso .7z</extension>
		<command>retroarch -F -L ~/apps/emulators/picodrive_libretro_gameshell_v1.92.so %ROM%</command>

		<fullname>Sega Game Gear</fullname>
		<extension>.md .gg .7z .zip</extension>
		<command>retroarch -F -L ~/.apps/emulators/gearsystem_libretro.so %ROM%</command>

		<extension>.col .COL .7z .zip</extension>
		<command>retroarch -F -L ~/.apps/emulators/bluemsx_libretro.so %ROM%</command>

		<fullname>Atari Lynx</fullname>
		<extension>.lnx .7z .zip</extension>
		<command>retroarch -F -L ~/.apps/emulators/handy_libretro.so %ROM%</command>

		<fullname>Nintendo 64</fullname>
		<extension>.z64 .n64 .zip .7z .v64</extension>
		<command>~/apps/emulators/mupen64plus --plugindir /usr/local/lib/mupen64plus/ --gfx mupen64plus-video-rice.so --fullscreen %ROM%</command>

		<fullname>Sinclair ZX Spectrum</fullname>
		<extension>.tzx .tap .z80 .rzx .scl .trd .7z .zip</extension>
		<command>retroarch -F -L ~/.apps/emulators/fuse_libretro.so %ROM%</command>

		<extension>.uae .7z .zip</extension>
		<command>~/apps/emulators/uae4arm %ROM%</command>

		<fullname>Sony Playstation</fullname>
		<extension>.bin .cue .img .mdf .pbp .toc .cbn .m3u .ccd</extension>
		<command>~/apps/emulators/pcsx -cdfile %ROM%</command>


When setting up the key bindings initially, it is purely for the emulationstation interface, and not for setting up values in games. There are less keys on the gameshell than the interface asks for. You can skip any keys you don’t use, such as L3 and R3 etc, by holding the menu button for a couple of seconds on the gameshell.

I made a themes directory in ~/.emulationstation/themes and copied the default theme to there.
You can get it from https://emulationstation.org/downloads/themes/simple_latest.zip
Using the config above, it should put together a nice visually pleasing theme, and be compatible with emulationstation community themes. I personally find that it’s easy enough to see, despite the low resolution.

There are possibly some people out there just wanting the gameshell as a pure emulation device, and not really care for tinkering. If that’s the case, then possibly having emulationstation as the main launcher could almost be feasible.


I personnally edited the pixel TFT theme to make it compatible with videos thumbnail.
And also created a Shell script to use different emulator for the same system.
I coule share them if someone us interested.


Please do! Any shared perspective is good!!
I initially had a system config with both standalone and Retroarch, but I wanted to make this as “kiosk friendly” as possible, and that just confuses my layman subject. Plus that config I wrote is for a stock 0.5 setup, without any extra standalone emulators installed.

On another note, do you have real hit or miss kind of luck with stability? Like some times Retroarch cores sometimes work a treat, and other times just fail completely? It’s like it’s getting confused as to what running directory it is coming from, possibly dependant on whatever the previous thing you did was.
Pcsx ends up installing its .pcsx and rom directories in the same one as my ES running script within the launcher menu.
Exiting out of standalone emulators is also hit or miss, with the ES sometimes coming back in frozen, and half loaded in. Retroarch at least seems to be able to exit fine.
Did you provide any arguments in your running script to make it run with more consistency? I have a feeling it is to do reinitialisation of graphic drivers and/or not cleanly terminating processes.
It’s such a pretty UI to just hand to someone to use, and have them go “oh wow” but just not stable enough to leave them with your console for more than 5 mins without panicking.