Posts by escalade

    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


    btn_donate_SM.gif



    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.


    AutoFS


    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.


    RetroArch


    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


    Services


    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

    shairport

    librespot

    snapserver

    [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

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


    Run Docker ARM containers on x86_64

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


    How to build through Docker


    Code
    # 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 https://github.com/escalade/LibreELEC.tv.git
    # cd LibreELEC.tv && PROJECT=Generic ARCH=x86_64 make


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

    Here's how I start transmission in my base/archlinux container:



    I find it easier/cleaner to use the containers like virtual machines. Pull an image of your favorite distro, install the packages you need and commit the image. Then you can set up systemd units to launch your applications from the new image. To get persistent storage you'll need to investigate how to get the application to store the configuration on a mounted volume.


    Hope that helps.

    This works on my NUC after pairing my iPhone:

    Code
    pactl load-module module-udev-detect                                       
    pactl set-card-profile alsa_card.pci-0000_00_03.0 output:hdmi-stereo-extra1
    pactl set-default-sink alsa_output.pci-0000_00_03.0.hdmi-stereo-extra1



    Unfortunately it occupies the output so Kodi can't use it. Is it possible to have Pulseaudio release it when there's no audio?

    More success! Xorg doesn't detect input devices because udev isn't working inside Docker. Solved by adding manual configuration in /etc/X11/xorg.conf.d/10-inputs.conf:



    Chromium segfaults for me both in Debian and in Arch, not sure what's up with that, but I got Firefox up and running so I'm happy :)

    Yes it's possible, I can run Xorg server fine in a container on Generic. With Docker you can do anything that you can do in other distributions as long as your kernel supports it. The problem is with the RPi, Xorg is not displaying anything on the framebuffer. Some piece of the puzzle is missing, either a kernel option or perhaps in the device tree overlay.


    I'm unable to get a regular TTY displaying on the framebuffer as well under LibreELEC/OpenELEC. This is something that should definitely be possible.


    Looks like the kernel is bound to the dummy console:

    Code
    OpenELEC:~ # cat /sys/class/vtconsole/vtcon0/name 
    (S) dummy device
    OpenELEC:~ # cat /sys/class/vtconsole/vtcon1/name 
    (M) frame buffer device
    OpenELEC:~ # cat /sys/class/vtconsole/vtcon0/bind 
    1


    Trying to bind the console to the framebuffer like this:

    Code
    OpenELEC:~ # echo 1 > /sys/class/vtconsole/vtcon1/bind


    Results in a kernel crash:


    What I don't get is that during boot the Raspberry Pi framebuffer seems to work fine, as the boot logo is showing. During an update text is displayed on the console as well. If I boot with "debugging break=mount_storage" I get a debugging shell displayed on the framebuffer, and when I run fbset there it says the mode is "1824x984-0", but after a regular boot to Kodi and stopping Kodi, it says 1x1.


    It seems like when the Kodi target is reached, the console framebuffer is disabled somehow, and I believe this to be the reason. Hoping that someone has some insight on this.
    [hr]


    EDIT:


    I'm happy to report success, the problem was because of the fbset.service:


    Which reduces the size to 1x1 pixels. After a "fbset -g 1920 1080 1920 1080 32" I can start an X server and start Chromium. There is one remaining issue, I can't seem to use mouse/keyboard inside X. Will investigate further

    Thanks to Irusak's awesome Docker addon we are now closer to running web browsers and other X11 apps on the Raspberry Pi. However, I'm having problems getting Xorg to work inside a container. Specifically, there is no output. I can launch Xorg just fine and it correctly chooses the framebuffer driver.


    Here's how I start my container:


    Code
    # docker run -it --privileged --name ubuntu -v /var/media:
    /media -v /var/run/dbus:/run/dbus armhf/ubuntu


    Here's the relevant Xorg log:



    It runs fine and I can launch Xorg apps, but the screen remains blank. This leads me to believe it's related to the fact that the Raspberry Pi does not have any virtual terminals enabled under LibreELEC/OpenELEC. In fact, if you boot with "tty" on the kernel command line, you can see debug-shell spawning a shell, but there is nothing displayed on the screen when doing "chvt 3".


    I've tried the same on Generic, and it works great. I can spawn X11 apps and have them display on the local X server, or run an X server in the container.


    Any ideas?