Skip to content

Linux DRM

SKipper on Linux with DRM/Frame buffer

SKipper can run without any X/Wayland UI; all that's required is Linux DRM (recommended) or you can fallback to frame buffer if DRM isn't available. In that case SKipper will not use GPU to draw the screen, but CPU.

Debian based Linux Distributions (Raspberry PI OS Lite)

SKipper can run on Raspberry PI OS Lite, DietPi or Ubuntu like Core with a few modifications.

  • First you need to flash your SD card / flash memory with the latest Raspberry PI OS 64Bit Lite.
  • Drawing via DRM or Frame Buffer requires a few more libraries to be installed. Use terminal/SSH to install them by following instructions below.

Ready made script

You can follow instructions, step by step, or you can use ready made script:

curl -1sLf 'https://docs.skipperapp.net/install-skipper-drm.sh' | sudo -E bash

This script will install required packages, configure System D service and start SKipper as service with DRM configuration. You can later tweak SKipper service using following command:

sudo nano /etc/systemd/system/skipper.service

Install SKipper using Getting started for Linux.

Buster version

Raspberry Pi OS Buster edition is legacy, it's based on Debian 11. Please use this commands to install required dependencies to use DRM/FB mode.

sudo apt update
sudo apt upgrade
sudo apt-get install libgbm1 libgl1-mesa-dri libegl1-mesa libinput10

Trixie version

Raspberry Pi OS Trixie is Debian 12 based Linux operating system. Current version. Please use this commands to install required dependencies to use DRM/FB mode.

sudo apt update
sudo apt upgrade
sudo apt-get install libfontconfig1 libegl1 libgl1 libglx-mesa0 libinput10 libicu76

When you're done with the installation, try running SKipper from the shell with command:

/usr/local/bin/skipper/SkipperApp --drm

SKipper should be running on your screen. Now close it. You need some kind of auto start mechanism, you can use systemD service for that.

NOTE if you need to specify the card for DRM because SKipper outputs couldn't open /dev/dri/card1, just change the card using -drm {path to card} for example /usr/local/bin/skipper/SkipperApp -drm /dev/dri/card0.

Version 23 Version 23 brings better support for detecting DRM driver card when there are multiple of them in the system. For example if you have RPI4/RPI5 there is always card0 and card1, but the real number of card that allows DRM changes randomly between each boot. Now SKipper will try all cards until one of them works. You can still specify card with -drm /dev/dri/cardX, but if you use --drm with new version it will iterate all cards available to find correct one.

Open your favorite text editor to create new .service file.

For example:

sudo nano /etc/systemd/system/skipper.service

And paste the following definition:

[Unit]
Description=SKipper app service
After=network.target

[Service]
ExecStart=/usr/local/bin/skipper/SkipperApp --drm
KillMode=process
Restart=on-failure
User=pi

[Install]
WantedBy=multi-user.target
Alias=skipper.service

NOTE Please make sure the User variable contains correct user so system can start SKipper app under correct user, it won't run

Note If your system doesn't support DRM you can use frame buffer, just change argument --drm to --fb.

Also if you're running SKipper on Raspberry PI Zero 2 W, please use -drm /dev/dri/card0 as the start argument.

Great! Service definition is set. Now we need to reload daemons and enable the service.

Type the following commands to get your SKipper service ready:

sudo systemctl daemon-reload
sudo systemctl enable skipper   

Now, to start SKipper, run:

sudo systemctl start skipper

And that's it! Anytime your Raspberry PI is booted SKipper will automatically start!

SKipper on Linux with DRM is rotated on my screen

SKipper doesn't honor DRM rotation for now, but you can use a new argument -soft-rotate {degrees} to rotate UI.

NOTE This argument is available from version 23.

Software rotation

Is your display native orientation different than your real display orientation? You can rotate it by using software based rotation. Use argument -soft-rotate angle and change angle with degrees like 0, 90, 180, 270 and SKipper will start rotated.

Orientation

Is your display native orientation different than your real display orientation? You can rotate it by adding orientation in SKipper based rotation. Use argument -orientation key and change key with orientation word like Rotation0, Rotation90, Rotation180 and Rotation270.

NOTE This argument is working from version 26. Older versions doesn't support this argument.

Scaling

Do you have high DPI display and everything is soo small on screen? No issue, you can scale whole UI with -scale factor just replace factor with number like 1.5, 1.6 or 2.0.

Number factor is parsed by your local culture number formatting defined by OS culture settings.

Raspberry PI Zero 2W

Zero 2W has only 512 MB RAM, SKipper can run on the Zero, but the RAM is very limiting factor, when system is running it consumes almost 36% of RAM without anything running. You need to make sure that SKipper has at least 300 MB of free RAM, more RAM the more better.

We're working on minimal OS system for running SKipper in Raspberry PI Zero 2W, we expect to have something to share later this year. Do you want to try it, now? Please contact us and we'll share and image with you.