RetroELEC Kodi+Wayland+Emulationstation+RetroArch (x86/XU4/RPi)

  • Inspired by RetroPie/recalbox/Lakka, I've modified LE to allow for proper emulator gaming without any addons. I've focused on picking the best cores for each system and optimizing them as much as possible. I don't care to include every emulator under the sun, but rather include a well maintained assortment of the best performing and popular ones.

    - LibreELEC base (appliance like "JeOS" with fast bootup, easy upgrades, easy setup)

    - Boots to Emulationstation (can be changed with kernel command line options)

    - RetroArch compiled for Wayland/KMS with glcore/vulkan drivers

    - Plymouth boot splash

    - Kodi 18.7.1 Leia (runs on KMS/OpenGL)

    - Sway minimalistic desktop with a few select utilities

    - VNC backends available # systemctl start wayvnc will start a VNC server so you can remotely control the desktop

    - PulseAudio sound server

    - Pulseaudio BT modules (GitHub - EHfive/pulseaudio-modules-bt: Adds Sony LDAC, aptX, aptX HD, AAC codecs (A2DP Audio) support to PulseAudio on Linux) offers A2DP codecs: Sony LDAC, aptX, aptX HD and AAC

    - Pipewire and GStreamer multimedia framework

    - V4L2 utilities and v4l2loopback

    - Transmission, Plex and SABnzbd available as systemd services

    - F2FS used for the storage partition (with compression support)

    - NFSv4 server (/media and /storage/roms shared by default)

    - AutoFS lets you access NFS shares by accessing /net/hostname/ in the filesystem

    - Everything is built using GCC 10.1.x

    - Flatpak 1.8 lets you extend the OS with additional software from the Flathub

    - RPCS3 included

    - PCSX2 one-click install from Flatpak store

    - AntimicroX

    - The chdman tool from MAME is included to convert cue/iso to CHD

    Included RetroArch cores:

    boom3 (Doom 3)

    desmume (Nintendo DS)

    dolphin (Nintendo Wii/Gamecube)

    dosbox_core (DOSBox)

    ecwolf (Wolfenstein 3D)

    flycast (Dreamcast)

    fuse (ZX Spectrum)

    genesis_plus_gx (Sega 8/16-bit like Megadrive)

    mame2016 (MAME 0.174)

    mednafen_psx_hw (Sony PSX)

    mednafen_saturn_hw (Sega Saturn)

    mgba (Nintendo Gameboy)

    mupen64plus_next (Nintendo 64)

    ppsspp (Sony PSP)

    puae (Amiga 500 / 1200)

    quicknes (Nintendo Entertainment System)

    scummvm (ScummVM)

    snes9x (Super Nintendo)

    stella (Atari 2600)

    vice_x64 (Commodore 64)

    Default root password is "retroelec".

    How to ask for support:

    Make sure your issue is reproducible on a clean install of the latest available image then post the zip file from the logshare (after reproducing).

    Link to download
    Github project


    External Content
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    Note to anyone cloning my project: I like to rebase my changes from time to time to get a clean history. This means your local clone will be out of sync when I do. In that case you can do "git fetch origin && git reset --hard origin/emu" to update, but stash any local changes you have first if any.


    Accessing NFS/SMB shares have never been easier. Mounting and unmounting is no longer necessary, simply access your shares like so:

    # ls -l /auto/nfs/server/share/

    Point your Emulationstation or Kodi sources to the corresponding directory in /auto and the rest is taken care of by the AutoFS daemon.


    RA will run in KMS mode by default if your GPU supports it. To disable it do this in a terminal:

    # touch /storage/.cache/services/kms.disabled


    To start them do # systemctl enable --now service in SSH, where "service" is one of the below

    Transmission: http://retroelec:9091
    SABnzbd: http://retroelec:9092
    Plex: http://retroelec:32400/web

    ttyd-oem: http://retroelec:7681




    [email protected] (

    Emulationstation setup

    Out of the box it will look for roms in /storage/roms. BIOS files are under /storage/roms/bios. Configured input controllers are DS4 (bluetooth) and keyboard, others can be configured from the menu (right ctrl).

    Keyboard bindings for Emulationstation

    Navigation = Arrow keys
    A = Enter
    B = Backspace
    Page up = ,
    Page down = .
    Start = rctrl
    Select = ralt

    Run Docker ARM containers on x86_64

    # docker run -it --rm -v /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static raspbian/jessie bash

    How to build through Docker

    # docker run -it -h arch-build --name arch-build -v /storage:/storage -v /media:/media -v /etc/localtime:/etc/localtime escalade1/arch-build
    # git clone --depth 1 --single-branch
    # cd && PROJECT=Generic ARCH=x86_64 make

    My build container is built from base/archlinux with the minimal package set needed for building.

    Edited 3 times, last by escalade ().

  • Hello,

    Thank you for your hard work. It works fine.
    Last Retroarch UI is very nice.
    My PS3 Bluetooth Controller is also natively supported.

    I'm using this Estuary MOD skin :
    Estuary MOD

    Main menu can be easily customized and it includes also Estuary skinning for LibreELEC settings screen.
    Is it possible to tell me Kodi actions used to launch Retroarch and EmulationStation UI? (to add two new entries to main menu)

  • I have just seen one of your last commit (Estuary patch) in your github.
    I have added a new menu entry based on :


    and it works.

  • Thanks escalade have set this up and all it working as expected, PS3 (official) Controller worked right away wirelessly (after enabling bluetooth in LibreElec settings.). Appreciate your time and efforts for this, I think we are all waiting (and more waiting) for Retroplayer to come online with the mainstream KODI therefore LibreElec stable builds.

    Edited once, last by mapperz ().

  • Interesting, I'll look into that :)

  • Interesting, I'll look into that

    Yes, customization is also saved in skin settings, then it won't be overwritten after an upgrade.

    I have also finally fixed my HDMI sound issue (not annoying - retroarch and emulationStation) with my rpi2.
    Without this parameter in config.txt : dtparam=audio=on, it wasn't possible to list audio devices and no sound was played. (aplay -L and mixer command weren't working)
    Information available here : R-Pi Troubleshooting -
    I don't know if it set by default in your image. (perhaps my config.txt file hasn't been overwritten as it was only an upgrade)
    Everything works fine now. (very good choice for emulationStation skins)

  • Well, I patch the system skin so that won't be overwritten if you upgrade either. I do set dtparam=audio=on it's needed to enable the ALSA device. Glad you like the skin, I've looked through all from RetroPie and I found it the cleanest and most easy on the eye.


  • Hi, i have problems with the generic build on a intel cpu. The Loading screen will come without problems but if the go to kodi the (monitor or tv) will be black, some tips?

    i think it will run the ftp can i see, but no connection over ssh.

    kodi log:libreelec -

    kind regards Scan

    Edited once, last by Scan ().

  • I don't know what to tell you, it works fine here. Post your /var/log/Xorg.0.log. There is no FTP on LE. Network and SSH should be up with pretty much any common network card. What do you mean monitor or tv, do you have two outputs?

  • Hello, good idea and functionality.
    It would be possible to add support for the clone PS3 controller? (Shanwan and Gasia working in OL)
    Thank you

  • Good work, RPi3 internal BT + clone Ps3 controller is paired okay. Small flaw. Missing joystick profile for this PS3 clone in kodi and retroarch. Must be configured buttons on the gamepad.
    Thank you

    Edited once, last by premyslcz ().

  • Not a flaw, Emulationstation usually requires setting the key bindings manually. I just include bindings for DS3/DS4 as mentioned in the first post.

    I've uploaded new images, most of the emulators for rpi have been updated and now include desmume.

  • Hi dear!
    Thanks a lot for your hard work!
    I would like to ask you a clarification about your scummvm package: at emu · escalade/ · GitHub

    To save space, the audio files of my ScummVM games are compressed in Vorbis (with ScummVM tools).
    If I compile from your I can generate a .so file that works fine, but I have no speech (only ambient sound).
    For this reason in some games like broken sword I can play only with subtitles.
    There's a way to pass "vorbis option" in your before the compilation?
    Thank a lot

    Edited once, last by lollo78 ().

  • About scummVM I'm trying to play with it, without success.
    Could you help me please? I done all my best and I made my homeworks...

    According "9.0) Compiling" paragraph of GitHub - libretro/scummvm: ScummVM with libretro backend.


    If you wish to use MP3-compressed CD
    tracks or .SOU files, you will need to install the MAD library; likewise
    you will need the appropriate libraries for Ogg Vorbis and FLAC
    compressed sound. For compressed save states, zlib is required.

    So... why not enabling all the suff in one solution (FLAC, Vorbis and MP3)?
    Then I searched for the right syntax. I found this:
    Enable MAD and VORBIS supports (Scummvm) by JanBaunooo · Pull Request #35 · recalbox/recalbox-buildroot · GitHub


    --enable-gles-rpi --disable-debug --enable-release --enable-optimizations --disable-mt32emu --enable-flac --enable-mad --enable-vorbis --disable-tremor \

    Analyzing your retroarch and vice, I modified the scummvm-libretro like this:

    I can compile and generate the .so file.
    The core starts on my Raspberry (I can see the ScummVM GUI), but it doesn't work.
    No Vorbis audio support.
    So I made a bullshit

    I tried to move

    PKG_CONFIGURE_OPTS_TARGET="--enable-flac \
                               --enable-mad \

    up and down in the code and recompiled again. But nothing...

    EDIT: I tried also with

    make_target() {
      cd $ROOT/$PKG_BUILD
      ./$BUILD/scummvm*/configure --enable-flac --enable-mad --enable-vorbis
      make -C backends/platform/libretro/build/

    but I can't compile the .so file.

    Please.... help me with one of your precious suggestions.
    Thx again...

    Last thing: for the future, do you think that it's possible to include Quake 3 in your package?
    Raspberry Pi • View topic - Building Quake 3 in Raspbian (RaspbianQuake3 - Raspbian)
    Quake III bounty: we have a winner! - Raspberry Pi

    External Content
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    Edited once, last by lollo78 ().

  • Thank you for a great build. 2 Questions.

    Black/Blank screen
    I have a black screen when selecting roms but can hear all is working. Is there a workaround on Nvidia ION or should I post a debug log.

    Pair Xbox360 Gamepad
    I figured out to delete the input.cfg file in emulation station to pair my xbox360 gamepad. Is this correct.