LibreELEC Kodi - Tastenbelegung einer Fernbedienung (HDMI CEC) anpassen

Ich möchte die kleine LibreELEC Serie fortsetzen und heute zeigen, wie sich eine Fernbedienung für die Steuerung von Kodi anpassen lässt.

In unserem Szenario wird LibreELEC über den TV verwendet und somit über die normale TV Fernbedienung angesteuert.

Was ist eine Keymap

Jede Kodi Variante hat sogenannte Keymaps auf dem System hinterlegt. Dabei handelt es sich um XML Dateien in denen Tastenbelegungen verschiedener Eingabegeräte hinterlegt sind.

Diese lassen sich auf das eigene Setup anpassen. (In meinem Fall vermisse ich auf den meisten Fernbedienungen beispielsweise den Rechtsklick bzw. das Kontextmenü, welches ich auf einer extra Taste einrichte.)

Übersicht der Keymap Pfade auf den einzelnen Systemen

Android Android/data/org.xbmc.kodi/files/.kodi/userdata/ (see note)
iOS /private/var/mobile/Library/Preferences/Kodi/userdata/
Linux ~/.kodi/userdata/
Mac /Users/<your_user_name>/Library/Application Support/Kodi/userdata/ (see note)
LibreELEC /storage/.kodi/userdata/keymaps/
Windows Start - type %APPDATA%\kodi\userdata - press <Enter>
   

 

 

 

 

 

 

Unter LibreELEC befinden sich die original Keymaps unter /usr/share/kodi/system/keymaps

Weitere Informationen finden sich hier.

Keymap manuell anpassen

Eine angepasste Keymap würde in unserem Szenario unter /storage/.kodi/userdata/keymaps/gen.xml abgelegt werden.

Ein Eintrag für das Kontextmenü kann ungefähr wie folgt aussehen, wobei der Aufbau immer gleich ist:

<keymap>
    <virtualkeyboard>
        <keyboard>
            <key id="221">contextmenu</key>
        </keyboard>
    </virtualkeyboard>
    <global>
        <keyboard>
            <key id="221">contextmenu</key>
        </keyboard>
    </global>
</keymap>

Hier stellt sich recht schnell die Frage wie man auf die IDs kommt. Diese lassen sich beispielweise über das debug.log herausfinden, was aber Aufwand darstellt, daher würde ich beim Anpassen einer Fernbedienung den Weg über den Keymap Editor wählen.

Keymap mit dem Keymap Editor anpassen

Um sich Arbeit zu sparen, für Schritte wie Tastenbelegung erkunden und XML File anlegen wurde bereits ein einfaches Addon programmiert.

Installation Keymap Editor

Der Keymap Editor erlaubt es mit wenigen Schritten eine CEC Fernbedienung nach euren Wünschen zu programmieren. Praktischerweise ist dieser auch im System bereits vorhanden.

kodi-keymap-editor

Sollte unter den Programm-Addons kein Keymap Editor zu finden sein, dann installiert das Addon manuell über den Download Button weiter unten.

kodi-keymap-editor

Nach der Installation lassen sich Tasten einfach anpassen oder zusätzliche Funktionen auf freie Tasten legen.

kodi-keymap-editor

Fazit

Wie ihr seht ist es relativ einfach sich sein eigenes Bedienkonzept zu erstellen. Wobei die Variante über den Keymap Editor sicherlich die schnellste und einfachste dafür darstellt.

Download Keymap edito

 

LibreELEC Kodi - Screenshot via SSH erstellen und System steuern

LibreELEC oder auch OpenELEC dürfte Fans von freien Medienplayern ein Begriff sein. Ich selbst habe LibreELEC im Einsatz und bin recht zufrieden damit.

Da ich LibreELEC direkt am Fernseher betreibe und lediglich über die Fernbedienung steuere, vermisse ich manchmal Funktionen die über die Tastatur kein Problem darstellen. Allerdings führen viele Wege nach Rom. Dieses gilt zum Beispiel für das Erstellen eines Bildschirm Fotos.

Screenshot via SSH erstellen

Normalerweise kann ein Screenshot mit Strg+s über die Tastatur erstellt werden. Ist allerdings keine vorhanden, geht dies auch fix via SSH.

Dazu muss der Dienst natürlich aktiv sein.

kodi-sshSobald SSH aktiv ist, kann auf der Konsole gearbeitet werden. Kodi bringt dazu den Befehl kodi-send mit. Dieser erlaubt es verschiedene Befehle an das System zu senden unter anderem auch den Bildschirm abzufotografieren:

kodi-send --host=127.0.0.1 -a "TakeScreenshot"

Der Host muss auf dem lokalen Prompt nicht zwingend angegeben werden. Ich habe es der Vollständigkeit mit angegeben.

Kodi via SSH steuern

Dieser wird erst relevant, wenn der Befehl über Netzwerk versendet wird, Beispiel:

ssh root@192.168.10.19 'kodi-send --action="PlayerControl(Stop)"'

SSH sollte somit zwingend mit einem neuen Passwort versehen werden, wenn es aktiv ist. Das Default Passwort wäre übrigens "libreelec"

Das Kommando erlaubt weitere Funktionen. Die Hilfe kann mit --help aufgerufen werden.

kodi-send

Weitere Kommandos wären beispielsweise:

Laufende Wiedergabe anhalten

kodi-send --action="PlayerControl(Start)"

System ausschalten

kodi-send --action="Quit"

Plugin installieren (Zuständiges Repository sollte aktiv sein)

kodi-send --action="InstallAddon(plugin.video.kikamediathek)"

Eine Liste aller möglichen Befehle findet ihr hier.

 

Viel Spaß beim Probieren

checkrestart vs. needrestart - alte Prozesse nach Paketupdates erkennen

Wie sich Linux Systeme aktualisieren lassen war auf ITrig bereits zu lesen. Doch nur mit Aktualisieren ist es nicht getan, hin und wieder sollten Prozesse neu gestartet werden deren Installationspakete aktualisiert wurden. Dazu bietet Ubuntu neben dem neuen Kernel Live Patching verschiedene Möglichkeiten.

checkrestart

Um Systeme auf anstehende Neustarts zu kontrollieren gibt es verschiedene Tools, eines altbekanntes ist checkrestart. Dieses ist im debian-goodies Paket enthalten.

Das Programm macht Nichts anderes als nach veralteten Libraries bei noch aktiven Prozessen zu suchen.

Findet es welche schlägt es den Neustart mit dem dazugehörigen Befehl vor.

sudo apt-get install debian-goodies
sudo checkrestart
Found 7 processes using old versions of upgraded files
(7 distinct programs)
(5 distinct packages)

Of these, 5 seem to contain systemd service definitions or init scripts which can be used to restart them.
The following packages seem to have definitions that could be used
to restart their services:
lvm2:
        447     /sbin/lvmetad
openssh-server:
        1160    /usr/sbin/sshd
dbus:
        863     /usr/bin/dbus-daemon
accountsservice:
        945     /usr/lib/accountsservice/accounts-daemon
policykit-1:
        1001    /usr/lib/policykit-1/polkitd

These are the systemd services:
systemctl restart accounts-daemon.service
systemctl restart polkitd.service

These are the initd scripts:
service lvm2-lvmpolld restart
service lvm2 restart
service lvm2-lvmetad restart
service ssh restart
service dbus restart

checkrestart

check-enhancements

Ebenfalls praktischer Teil des debian-goodies Pakets ist check-enhancements.

Damit lassen sich Erweiterungen für bereits installierte Pakete finden.

 

check-enhancements postgresql
postgresql => check-postgres:     Installed: (none)       Candidate: 2.24.0-3.pgdg18.04+1
postgresql => pgpool2:    Installed: (none)       Candidate: 3.7.5-2.pgdg18.04+1
postgresql => pgtop:      Installed: (none)       Candidate: 3.7.0-18-gbbf1f12-2.pgdg18.04+1

needrestart

Das debian-goodies Paket hat schon ein paar Jahre auf dem Buckel, daher gibt es inzwischen neuere Varianten, um anstehende Neustarts zu prüfen. 

Eines davon ist needrestart, es funktioniert ähnlich wie checkrestart, wird aber aktiv weiterentwickelt und unterstützt Docker oder LXC. Zusätzlich ist es nicht an Debian gebunden, sondern auch für andere Distributionen verfügbar.

Needrestart wird von Thomas Liske entwickelt und aktuell in der Version 3.1.x ausgeliefert. Es hat eine Unterstützung für systemd an Bord, läuft aber auch unter System V init.

sudo apt install needrestart
sudo needrestart
Scanning processes...
Scanning processor microcode...
Scanning linux images...

Running kernel seems to be up-to-date.

The processor microcode seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.

needrestart

Wie es sich für aktuelle Tools gehört, hat das Tool auch eine Nagios/CheckMK bzw. Icinga Ausgabe.

sudo needrestart -p -l
OK - Kernel: 4.15.0-36-generic, Microcode: CURRENT, Services: none, Containers: none, Sessions: none|Kernel=0;0;;0;2 Microcode=0;0;;0;1 Services=0;;0;0 Containers=0;;0;0 Sessions=0;0;;0

Konfiguration und Einstellungen können bei Bedarf unter /etc/needrestart/needrestart.conf vorgenommen werden.

Das Tool bietet ebenfalls einen interaktiven Modus. Nach einer Installation prüft das Tool nach jedem apt upgrade automatisch auf Neustarts von Prozessen und liestet diese auf, ohne sie neu zu starten.

needrestart-kernel


Bordmittel

Die einfachste Variante einen nötigen Neustart des Systems zu erkennen besteht im Auslesen des Wertes cat /var/run/reboot-required .

Den Wert *** System restart required *** zeigt Ubuntu im Loginprompt an, wenn ihr über einen SSH Konsole zugreift.

Werden auch die betroffenen Pakete benötigt kann in /var/run/reboot-required.pkgs geschaut werden

cat /var/run/reboot-required                                                                                                                                                                            *** System restart required ***
cat /var/run/reboot-required.pkgs


 

Raspberry Pi 3 Kiosk - Autologin unter Raspbian Jessie, Stretch oder Buster

Nachdem der Artikel über den Chromium Kiosk Modus für rege Diskussionen sorgt, möchte ich noch mal kurz auf den Autologin von Raspbian hinweisen.

Dieser funktioniert unter allen aktuellen Versionen, sowohl unter stable als auch beta mit dem Befehl 

sudo raspi-config

Danach muss im Menü unter Bootoptionen

Raspbian-desktop-autologin

der Bootmodus ausgewählt werden. In diesem Fall Desktop / CLI.

raspbian-autologin

Nun kann B4 Autologoin aktiviert werden und Raspbian meldet den User Pi automatisch an.

raspbian_autologinIch empfehle dringend das Standardpasswort des Pi Nutzers mit passwd zu ändern.

Update von Jessie auf Stretch

Falls auf ein neues System umgestellt werden soll, ist ein Update auf das aktuelle System Stretch (Buster ist noch Beta) möglich. Eine Neuinstallation ist aber meist der bessere Weg.

sudo apt-get update
sudo apt-get -y dist-upgrade
sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list
sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list.d/raspi.list
sudo apt-get update
sudo apt-get -y dist-upgrade

 

Raspberry Pi 3 Kiosk - Chromium Autostart im Vollbildmodus einrichten

Raspberry Pi und Raspbian bieten viele Einsatzmöglichkeiten. Eine davon ist der Betrieb in einem Kiosk Modus, Voraussetzung dafür ist der Start im Vollbildmodus. Das Thema hatte ich bereits auf dem Blog (siehe unten), somit seht das als einen aktualisierten Artikel an. In diesem Beispiel soll ein Browser eine Webseite oder Webapp automatisch im Vollbildmodus aufrufen 

Die hier verwendeten Einstellungen wurden auf einem RaspberryPi 3 mit Raspbian (Debian Jessie) getestet.

raspberrypi

Installation der benötigten Pakete

sudo apt-get install chromium-browser
sudo apt-get install unclutter

Letzteres Paket erlaubt es die Maus auzublenden.

Aktivieren des Vollbildmodus

Dieser lässt sich mit wenigen Anpassungen und einem Installalierten Chromium Browser realisieren.

sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
# Bildschirmschoner deaktivieren
#@xscreensaver -no-splash  
@xset s off
@xset -dpms
@xset s noblank

# lädt Chromium im Vollbild bei einem Neustart
@chromium-browser --incognito --kiosk https://itrig.de/kiosk  


Mauszeiger ausblenden

Die bestehende Datei muss lediglich um einen weiteren Befehl erweitert werden.

sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart

#ab Raspbian Buster/Raspberry Pi 4 befindet sich der Pfad hier.

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
@unclutter
@xset s off
@xset -dpms
@xset s noblank
@chromium-browser --incognito --kiosk https://itrig.de/kiosk 

Fazit

Die hier dargestellte Methode stellt eine von vielen dar, jedoch eine die relativ schnell zum Ziel führt. Weitere Methoden und Möglichkeiten hatte ich bereits im Artikel Kiosksysteme für Alle erwähnt.

[Update] Autostart verzögern

Eine Startverzögerung würde über ein Skript chromium_start.sh realisiert werden.

    #!/bin/bash
    #Chromium Startverzoegerung
    sleep 15
    chromium-browser --incognito --kiosk https://itrig.de/kiosk

und unter /home/pi/.config/lxsession/LXDE-pi/autostart aufrufen.

@/home/pi/chromium_start.sh

PS: Berechtigung chmod +x nicht vergessen

 

[Update2] Neuer Autostart Pfad unter Raspbian Buster

Das neue Raspbian, welches auf Debian Buster basiert und Raspberry Pi 4 unterstützt, hat neue Pfade.

So müssen die Chromium Einstellungen unter

/etc/xdg/lxsession/LXDE-pi/autostart 

gesetzt werden und nicht mehr im Home Ordner des Pi Nutzers wie ursprünglich beschrieben.