Your rating: None Average: 5 (1 vote)

RetroArch is the official reference frontend for the libretro API.
Libretro is a simple but powerful development interface that allows for the
easy creation of emulators, games and multimedia applications that can plug
straight into any libretro-compatible frontend. This development interface
is open to others so that they can run these pluggable emulator and game
cores also in their own programs or devices.

Stuff that currently doesn't work in the Sailfish version (that i know of):

  • Audio (might only be wrong config settings for the pulseaudio backend)
  • Onscreen keyboard. The built-in keyboards work but only partially
  • Some of the cores
  • Video and input drivers other than Wayland + EGL (SDL2 support is compiled in but currently cannot display the GL Menu)
  • Other menus than the GL (MaterialUI) Menu. The Menus will display but touch input does not work at all except for the xmb menu.
  • Automatic screen rotation. Manual screen rotation works but the onscreen overlay controller isn't rotated.

When starting retroarch for the first time some of the icons are missing. You have to go to "Online Updater" and click on "Update Assets" to download them.

To play games without a hardware keyboard or controller (if they even work. Haven't tested this yet) you can enable an onscreen overlay controller. To enable the onscreen overlay controller first go to "Online Updater" and click on "Update Overlays" then go to the settings screen and select an overlay via "Onscreen Overlay" -> "Overlay Preset".

If retroarch doesn't start anymore or somehow else became unusable because you selected something in the menu that doesn't work just delete the retroarch config file ~/.config/retroarch/retroarch.cfg. Retroarch will then start again with the default options from /etc/retroarch.cfg.




Application versions: 


wiktorek140's picture

Can u send build instruction for sfos branch?

merpl's picture

[EDIT] Removed some useless info.

Retroarch fails to start on xt894 (Droid 4). Problem may be due to libhybris using fbdev
SailfishOS (Iijoki) (armv7hl)

ldd -v /usr/bin/retroarch => /usr/lib/ (0x4020e000) => /usr/lib/ (0x40013000) => /usr/lib/ (0x402c9000)

it is loading:

Not finding
/usr/lib/tls/ = -1 ENOENT
/usr/lib/tls/ = -1 ENOENT
/etc/powervr.omap4.ini = -1 ENOENT
/etc/powervr.ini = -1 ENOENT

the last thing it seems to do before starting shutdown is:
access("/vendor/lib/hw/", R_OK) = 0
socket(PF_LOCAL, SOCK_STREAM, 0) = 11
connect(11, {sa_family=AF_LOCAL, sun_path="/dev/socket/property_service"}, 31) = 0
send(11, "\2\0\0\0debug.egl.finish\0\0\0\0\0\0\0\0\0\0\0\0"..., 128, 0) = 128
recv(11, "\2\0\0\0debug.egl.finish\0\0\0\0\0\0\0\0\0\0\0\0"..., 128, 0) = 128
recv(11, "", 128, 0) = 0
close(11) = 0
clock_gettime(CLOCK_MONOTONIC_COARSE, {18030, 844353843}) = 0
socket(PF_LOCAL, SOCK_STREAM, 0) = 11
connect(11, {sa_family=AF_LOCAL, sun_path="/dev/socket/property_service"}, 31) = 0
send(11, "\2\0\0\0debug.egl.traceGpuCompletion"..., 128, 0) = 128
recv(11, "\2\0\0\0debug.egl.traceGpuCompletion"..., 128, 0) = 128
recv(11, "", 128, 0) = 0
close(11) = 0
clock_gettime(CLOCK_MONOTONIC_COARSE, {18030, 844353843}) = 0
sendmsg(7, {msg_name(0)=NULL, msg_iov(1)=[{"\4\0\0\0\1\0\f\0\7\0\0\0\4\0\0\0\0\0\f\0\10\0\0\0\4\0\0\0\2\0\f\0"..., 144}], msg_controllen=0, msg_flags=0}, MSG_DONTWAIT|MSG_NOSIGNAL) = 144
poll([{fd=7, events=POLLIN}], 1, -1) = 1 ([{fd=7, revents=POLLIN}])
recvmsg(7, {msg_name(0)=NULL, msg_iov(2)=[{"\7\0\0\0\0\0\20\0\1\0\0\0#\260\0\0\6\0\0\0\0\0$\0\1\0\0\0\16\0\0\0"..., 3532}, {"", 564}], msg_controllen=16, {cmsg_len=16, cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, {11}}, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_CMSG_CLOEXEC) = 568
ending with
sendmsg(7, {msg_name(0)=NULL, msg_iov(1)=[{"\6\0\0\0\0\0(\0\6\0\0\0\16\0\0\0android_wlegl\0\0\0"..., 48}], msg_controllen=0, msg_flags=0}, MSG_DONTWAIT|MSG_NOSIGNAL) = 48
close(7) = 0
close(7) = -1 EBADF (Bad file descriptor)
exit_group(0) = ?
+++ exited with 0 +++

Laucian's picture

I got it to start on my Droid 4.

delete the ~/.config/retroarch folder, run retroarch and then edit the following entries on ~/.config/retroarch/retroarch.cfg

audio_enable = "false"

input_driver = "sdl2"

video_driver = "sdl2"

menu_druver = "rgui"

I had some rather random results, so if you are having trouble, try running it from a terminal as "retroarch --verbose"

No games that I tried actually ran, however. They all segfaulted or complained about glibc extensions. The results were very random, so I couldn't get the same error twice in a row.

merpl's picture

Thanks Laucian!  That got menu started.

Now starting any SNES title (with retroarch --verbose --menu) yields

RetroArch [INFO] :: [SDL]: Available displays:
RetroArch [INFO] ::     Display #0 mode: 540x960@0hz.
Segmentation fault

Same error for every snes title and every snes core.


full log is here:

Skillmon's picture

For me, installation doesn't work, it's missing OpenAL-1.15.1-1.1.12.armv7hl.rpm. Where can I get it? Just in case this makes a difference, I'm on SFOS


kfg's picture

I'm still on SFOS so it might be a general problem with Although the package only seems to have a dependency on not on a specific OpenAL Package Version so even if SFOS has a newer OpenAL Package it should still satisfy the dependency.

Could you maybe run "rpm -q OpenAL" and "rpm -ql OpenAL" in fingerterm and paste the output here or on pastebin and link it here?

Skillmon's picture

Well, I had to send my phone in, because the filesystem got destructed during upgrade. Now the package installed just fine. I have no idea why.

Skillmon's picture

Sorry for taking so long. I run both commands both with and without rootprivileges and they only returned "package OpenAL is not installed".

AGA's picture

I have same problem such as Skillmon but I'm on SFOS like yours. I think it will be different in the depedency problem.

Dax's picture


Great work for bringing RetroArch on Sailfish! :)