Raspberry Media Center – Teil 23: SSH und einige nützliche Linux Befehle

livetv5Speziell 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

messageDie 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:

2 Kommentare

  1. Ralf

    Wie kann ich über SSH abfragen was gerade abgespielt wird. Ich würde das gerne irgendwie auswerten können.

    Antworten
    1. Helmut (Beitrag Autor)

      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/

      Antworten

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert