Speziell angepasste Linux-Distributionen wie OpenELEC, XBian und OSMC bringen die Kodi Media Center Software ganz einfach auf den Raspberry Pi. Mit Linux selbst hat der Anwender dabei eigentlich nicht mehr viel zu tun. Ein Kodi Media Center kann völlig ohne Linuxkenntnisse aufgebaut werden. Zumindest wenn alles glatt läuft. Trotzdem schadet es nicht, zu wissen, wie man per SSH auf die Linuxoberfläche kommt und ein paar nützliche Kommandos absetzen kann.
SSH
In den vorhergegangenen Artikeln habe ich schon an vielen Stellen über SSH gesprochen. Trotzdem möchte ich das hier noch einmal zusammenfassen und vertiefen.
SSH, die Secure Shell, ist ein Netzwerkprotokoll und eine Client-Server Architektur, die es ermöglicht über das Netzwerk Konsoleingaben an einem entfernten Rechner zu machen.
Der entfernte Rechner ist in unserem Fall der Raspberry Pi, der von einem anderen PC (Windows, Linux, …) aus ferngesteuert wird. Dabei ist SSH ein standardisiertes und verschlüsseltes Netzwerkprotokoll. Client-Server bedeutet hier, dass es am Raspberry dafür eine eine SSH-Serverkomponente geben muss, den SSH-Server oder SSH-Daemon. Der ist in den drei hier besprochenen Kodi Linux-Distributionen (wie in den meisten Linuxversionen) bereits enthalten. Und am PC braucht man einen SSH-Client. Linux bringt den bereits von Haus aus mit, unter Windows installiert man sich am besten das freie Programm PuTTY.
Auf Authentifizierung, SFTP und SSH-Tunnelling will ich hier nicht näher eingehen, wir konzentrieren uns auf die Verwendung von SSH als Remote-Textkonsole. Mehr Informationen über SSH gibt es zum Beispiel bei Wikipedia.
Verbindung aufnehmen per SSH
Als erstes müssen wir sicherstellen, dass der SSH-Daemon am Raspberry Pi aktiv ist. Unter OSMC und XBian ist das per Standard der Fall, unter OpenELEC werden wir bei der Installation nach SSH gefragt. In jedem Fall können wir in der Kodi-Oberfläche unter den spezifischen Einstellungen zu OSMC, XBian oder OpenELEC die Aktivierung oder Deaktivierung von SSH nachträglich vornehmen.
Clientseitig – also am PC – können wir nun Verbindung mit dem SSH-Server am RasPi aufnehmen. Windowsanwender konfigurieren dazu PuTTY analog zu den Kommandozeileneingaben, die ich nachfolgend für Linux aufführe. Linuxanwender öffnen ein Konsolfenster für die folgenden Eingaben:
An OpenELEC anmelden
ssh root@openelec
Das Passwort ist „openelec“.
An XBian anmelden
ssh xbian@xbian
Das passwort ist „raspberry“.
An OSMC anmelden
ssh osmc@osmc
Das Passwort ist „osmc“.
Die generelle Logik ist hierbei:
ssh username@rechnername
wobei an Stelle des Rechnernamens auch die IP-Adresse des Raspberry Pi treten kann. Beim allerersten SSH-Aufruf erscheint folgende Mitteilung:
The authenticity of host 'xbian (192.168.0.160)' can't be established.
ECDSA key fingerprint is 6e:7e:f4:8e:52:bc:6a:09:89:62:b1:03:9e:9c:a5:e5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'xbian' (ECDSA) to the list of known hosts.
die wir mit „yes“ bestätigen. Damit haben wir die Remotekonsole des Raspberry Pi übernommen, das erkennen wir daran, dass als Eingabeprompt username@rechnername
des Raspberry eingeblendet wird. Alle nachfolgenden Kommandos werden jetzt am RasPi ausgeführt. Wir können das gleich probieren.
whoami
xbian
oder
pwd
/home/xbian
Der erste Befehl fragt den Usernamen ab unter dem wir eingeloggt sind und der zweite das aktuelle Verzeichnis im Dateisystem. Die SSH-Verbindung wird beendet mit
exit
Abgemeldet
Connection to xbian closed.
Eine kleine Sammlung nützlicher Linux-Kommandos
Nicht alle der nachfolgenden Beispiele funktionieren auf allen Linux-Distributionen. Gerade OpenELEC verfügt nur über einen sehr eingeschränkten Linux-Befehlssatz. Manche der Befehle verlangen nach Root-Rechten (also Superuser- oder Administrator-Rechte), dann wird in Linux ein „sudo“ vor den Befehl gestellt und es erfolgt die Abfrage des Passworts. Das Passwort ist das selbe, das wir zur Anmeldung verwendet haben. Bei OpenELEC wird „sudo“ nicht benötigt und kann generell weggelassen werden, denn unter OpenELEC melden wir uns bereits als Rootuser an.
ifconfig – zeigt Netzwerkinformationen an
sudo ifconfig
eth0 Link encap:Ethernet Hardware Adresse b8:27:eb:6d:82:24
inet Adresse:192.168.0.160 Bcast:192.168.0.255 Maske:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1
RX packets:9539 errors:0 dropped:0 overruns:0 frame:0
TX packets:5050 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:1000
RX bytes:10415783 (9.9 MiB) TX bytes:526157 (513.8 KiB)
lo Link encap:Lokale Schleife
inet Adresse:127.0.0.1 Maske:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metrik:1
RX packets:1991 errors:0 dropped:0 overruns:0 frame:0
TX packets:1991 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:0
RX bytes:175764 (171.6 KiB) TX bytes:175764 (171.6 KiB)
Hier sieht man die aktiven Netzwerkschnittstellen mit zugeordneter MAC-Adresse (Hardware Adresse) und IP-Adresse (inet Adresse).
dmesg – gibt den Inhalt des Kernel-Ringpuffers aus
dmesg
[ 0.000000] Booting Linux on physical CPU 0xf00
[ 0.000000] Linux version 3.18.8+ (root@vps01) (gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-12ubuntu1) ) #1 SMP PREEMPT Thu Mar 5 03:13:36 CET 2015
[ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] Machine: BCM2709
...
Die Ausgabe ist sehr lang. Die Meldungen können bei Problemen helfen, wenn Hardware, wie zum Beispiel ein DVB-Stick nicht funktioniert. Hier wird ausgegeben, welche Hardware erkannt wird und evtl. sogar welche Firmware oder Treiber geladen werden müssen.
lsusb – zeigt angeschlossene USB-Geräte an
lsusb
Bus 001 Device 005: ID 0dc6:2301 Precision Squared Technology Corp. Wireless Touchpad Keyboard
Bus 001 Device 008: ID 07ca:850a AVerMedia Technologies, Inc. AverTV Volar Black HD (A850)
Bus 001 Device 007: ID 0480:a200 Toshiba America Info. Systems, Inc.
Bus 001 Device 006: ID 0bda:8171 Realtek Semiconductor Corp. RTL8188SU 802.11n WLAN Adapter
Bus 001 Device 004: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Auch dieser Befehl ist sehr hilfreich bei der Fehlersuche. lsusb
zeigt alle Geräte an, die am USB-Bus erkannt werden. Nach den Bezeichnungen kann man dann im Internet googeln.
Änderungen an der config.txt vornehmen
Bei XBian und OSMC:
sudo nano /boot/config.txt
Bei OpenELEC muss vorher die /flash Partition schreibend gemountet werden und sudo
kann entfallen:
mount /flash -o remount,rw
nano /flash/config.txt
Nano ist der Editor. Nach dem Eintrag der Änderungen wird er mit Strg-X und der Bestätigung für das Speichern wieder verlassen. Danach muss der Raspberry Pi gebootet werden, damit die config.txt
neu eingelesen wird.
Raspberry Pi rebooten oder herunterfahren
Durchbooten erfolgt mit:
sudo reboot
Broadcast message from xbian@xbian
(/dev/pts/0) at 15:26 ...
The system is going down for reboot NOW!
Und so wird der Raspberry heruntergefahren:
sudo shutdown now
Broadcast message from xbian@xbian
(/dev/pts/5) at 15:34 ...
The system is going down for maintenance NOW!
An Stelle von now
kann auch ein Zeitwert angegeben werden.
Auslesen von Temperatur- und Takt-Werten
Zwei Möglichkeiten gibt es, um über die Commandline an aktuelle Werte zu Taktfrequenzen und CPU-Temperatur zu gelangen. Einmal kann man sie direkt mit cat
aus dem (Pseudo-)Filesystem lesen. Hier ein paar Beispiele:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
powersave ondemand performance
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
600000 900000
sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
600000
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
600000
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
900000
cat /sys/class/thermal/thermal_zone0/temp
48692
Bei den Zahlenwerten müssen die hinteren drei Stellen durch Komma abgetrennt werden um Megahertz- oder Grad-Werte zu erhalten. Alternativ oder ergänzend dazu lassen sich auch einige Abfragen mit dem Kommando vcgencmd
machen:
vcgencmd measure_clock arm
frequency(45)=899998000
vcgencmd measure_clock core
frequency(1)=333000000
vcgencmd measure_volts core
volt=1.3125V
vcgencmd measure_temp
temp=49.8'C
Hier erfolgt eine formatierte Ausgabe, die Frequenzen werden in Hertz ausgegeben. Mehr dazu gibt es auch in meinem Artikel über das Overclocking. Vcgencmd
kann aber noch mehr, wie zum Beispiel das Überprüfen von Video-Codecs oder der Speicheraufteilung zwischen CPU und GPU:
vcgencmd codec_enabled MPG2
MPG2=disabled
vcgencmd codec_enabled WVC1
WVC1=disabled
vcgencmd codec_enabled H264
H264=enabled
vcgencmd get_mem arm
arm=752M
vcgencmd get_mem gpu
gpu=256M
Mehr zu vcgencmd
gibt es in einem englischen Artikel auf elinux.org.
kodi-send – Befehle an Kodi senden
Kodi besitzt zahlreiche Programmierfunktionen, die auch von außerhalb aufgerufen werden können. Per SSH verwenden wir dazu das Kommando kodi-send
:
kodi-send --action="VolumeUp"
Sending action: VolumeUp
kodi-send --action="VolumeDown"
Sending action: VolumeDown
kodi-send --action="PlayerControl(Forward)"
Sending action: PlayerControl(Forward)
kodi-send --action="PlayerControl(Play)"
Sending action: PlayerControl(Play)
kodi-send --action="PlayerControl(Stop)"
Sending action: PlayerControl(Stop)
kodi-send --action="Notification(Liebling, Abendessen ist fertig)"
Sending action: Notification(Liebling, Abendessen ist fertig)
kodi-send --action="TakeScreenshot"
Sending action: TakeScreenshot
Die Befehle sind ziemlich selbsterklärend und das sind nur einige Beispiele. Eine sehr umfangreiche Funktionsliste gibt es im Kodi-Wiki.
Natürlich funktionieren auch andere Standard-Linuxfunktionen per SSH, wie zum Beispiel ls
oder cd
. Bei weniger gebräuchlichen Funktionen heißt es einfach ausprobieren, ob es die jeweilige Kodi-Linuxdistribution versteht. So kann man zum Beispiel problemlos unter XBian mit apt-get
Programme nachinstallieren, unter OpenELEC geht das jedoch nicht.
Weitere Artikel in dieser Kategorie:
- Raspberry Media Center – Teil 1: Vorgeschichte, Idee und Anforderungen
- Raspberry Media Center – Teil 2: Hardware Raspberry Pi 2
- Raspberry Media Center – Teil 3: Hardware Zubehör
- Raspberry Media Center – Teil 4: Softwareübersicht
- Raspberry Media Center – Teil 5: Erste Überraschungen und Enttäuschungen
- Raspberry Media Center – Teil 6: OpenELEC
- Raspberry Media Center – Teil 7: XBian
- Raspberry Media Center – Teil 8: OSMC
- Raspberry Media Center – Teil 9: Tvheadend
- Raspberry Media Center – Teil 10: Tvheadend – Alternative Installation
- Raspberry Media Center – Teil 11: VDR
- Raspberry Media Center – Teil 12: Software Vergleich
- Raspberry Media Center – Teil 13: FTP Server
- Raspberry Media Center – Teil 14: Datenübertragung
- Raspberry Media Center – Teil 15: MPEG-2 Lizenz Schlüssel
- Raspberry Media Center – Teil 16: Stromversorgung
- Raspberry Media Center – Teil 17: Übertakten
- Raspberry Media Center – Teil 18: CPU-Kühlung
- Raspberry Media Center – Teil 19: Datensicherung
- Raspberry Media Center – Teil 20: Kodi Weboberfläche
- Raspberry Media Center – Teil 21: Kodi Android Apps
- Raspberry Media Center – Teil 22: Raspberry und Kodi Mythen
- Raspberry Media Center – Teil 24: Was kostet der Spaß?
- Raspberry Media Center – Teil 25: Kodi 15 Isengard
- Raspberry Media Center – Teil 26: Update OSMC mit Kodi 16
- Raspberry Media Center – Teil 27: LibreELEC 8 mit Kodi 17 Krypton
- Raspberry Media Center – Teil 28: SSH-Zugang absichern
- Raspberry Media Center – Teil 29: Zattoo und weitere DVB-T Alternativen
Wie kann ich über SSH abfragen was gerade abgespielt wird. Ich würde das gerne irgendwie auswerten können.
Du kannst mal schauen, ob Du bei den Kodi-send-Funktionen fündig wirst: http://kodi.wiki/view/List_of_built-in_functions
Falls nicht, dann kommst Du auch per Http oder Smartphone App an Kodi: https://blog.helmutkarger.de/raspberry-media-center-teil-20-kodi-weboberflaeche/