Linux-Befehle für das HQPlayer OS

Einführung

Vorab etwas zur Beruhigung: für den Betrieb des HQPLayer Betriebssystems benötigst du keine Linux-Befehle. Wenn du aber etwas unter der Haube schrauben möchtest, wollen wir dir einige Tipps geben. Das HQPlayer OS wurde extrem auf die Bedürfnisse des HQPlayers zugeschnitten und hat daher einen sehr eingeschränkten Fuktionsumfang. Der übliche Linux-Befehl sudoentfällt zum Beispiel. Alle Tipps erfolgen unter Ausschluss jeglicher Gewährleistung.

Tastaturbelegung

Bevor du remote (SSH) gehen kannst, musst du Bildschirm und mindestens eine Tastatur anschließen. Wenn du eine deutsche Tastatur verwendest, sind die Tasten anders belegt als bei einer US amerikanischen Tastatur. Damit du nicht ewig suchen musst haben wir eine kleine Liste erstellt.

US "/" = DE "-"
Lesebeispiel: um „Slash /“ einzugeben klickst du auf der deutschen Tastatur auf die Taste mit dem „Trennzeichen –„.
US "_" = DE "?"
US "Y" = DE "Z"

Hier ist die US-Tastaturbelegung:

Root

Um wirksam die Codierung zu ändern oder systemrelevante Abfragen zu tätigen musst du Root-Rechte haben. Nach dem Booten gibst du einfach im HQPlayer OS ein: root. Schon arbeitest du in der Root-Shell.

SSH Zugang

Das HQPlayer Betriebssystem ist eigentlich nur mit Bildschirm und Tastatur auf deinem Audio PC zugänglich. Wäre es nicht schön einen Fernzugriff zu haben? Mittels SSH (Secure Shell) kannst du eine verschlüsselte Verbindung zur Kommandozeile (Shell) des HQPlayer OS herstellen. Wir beschreiben hier nur den Weg über einen Apple Mac Computer. Ähnliches gilt auch für Windows.

SSH mit dem Nano Editor einrichten

Als erstes musst du dir noch die Mühe machen dich direkt über den Audio PC einzuloggen. Nach dem Booten gibst du wie oben beschrieben root in die Befehlszeile ein. Scheibe dann: nano /etc/ssh/sshd_config. Nano ist ein umfangreicher Editor und die Datei sshd_config enthält die Konfigurationseinstellungen für den SSH Zugang.

Um den SSH Zugang freizuschalten gehe mit dem Cursor zu PermitRootLogin und entferne die Auskommentierung „#“ und ändere die Zeile auf PermitRootLogin yes. Anschließend speicherst du das ab: ^X (Exit). Du wirst vorher noch gefragt ob du das sichern möchtest. Beantworte das mit yes.

Danach erstellst du einen neuen Benutzer mit useradd NEWUSER. Ersetze „NEWUSER“ mit dem gewählten Benutzernamen. Zum neuen User erstellst du ein Passwort für die Root-Shell. Tippe passwd NEWUSER . Ersetze „NEWUSER“ mit dem gewählten Benutzernamen. Anschließend wirst du gebeten ein Passwort einzugeben, welches du nochmal bestätigen musst. In der Konfigurationsoberfläche des HQPlayers kannst du dann das System neu booten. Die Web-Konfigurationsoberfläche wird im Browser mit http://hqplayer.local:8088/ aufgerufen.

Nun kannst du an deinem Mac verproben, ob der SSH Zugang funktioniert. Öffne dafür das Terminal (Befehlszeilen-Interface) und tippe: ssh NEWUSER@ip-address-of-hqplayer. Eingabebeispiel: „ssh user@192.178.188.10“. Der User ist dein neuer Benutzername und die IP-Adresse ist natürlich die von deinem HQPlayer! Dann wird nach deinem Passwort gefragt, welches du dir hoffentlich gemerkt hast. Bei der ersten Anmeldung wird noch ein RSA Fingerprint angelegt, bestätige das mit yes .

Unklücklicherweise kannst du dieses Einstellungen nicht bei einem HQPlayer Update übernehmen. Da fängt das Spiel leider wieder von vorne an.

Bei Fehlermeldung  RSA Fingerprints erneuern (MacOS)

Wenn einer IP-Adresse bereits ein RSA Fingerprint zugeordnet wurde, kommt es bei einer erneuten Zuordnung zur Abweisung. In desem Fall muss der gespeicherte Fingerprint gelöscht werden. Wenn du einen Mac verwendest, gibst du im Terminal (Befehlszeilen-Interface) folgendes ein: open /Users/YOURUSERNAME/.ssh/known_hosts. Ersetze YOURUSERNAME durch deinen Apple User.

Danach sollte sich der voreingestellte Texteditor mit der known_hosts Datei öffnen. Hier sind hinter verschiedenen IP-Addressen die verschlüsselten RSA Fingerprints hinterlegt. Lösche die Zeile(n) mit der betreffenden IP-Adresse, auf die vergeblich versucht wurde zuzugreifen. Speichere die Datei. Danach ist der Zugriff wieder möglich.

htop – ein interaktiver Prozessviewer

Beim HQPlayer ist es nützlich gelegentlich die Prozessauslastung zu prüfen. Das Programm öffnest du mit htop. Mit der Taste „F2“ sind individuelle Anpassungen möglich. Nützlich ist zum Beispiel das Hinzufügen der CPU Taktfrequenzen.

Musterkonfiguration

Für die oben gezeigte schlanke Anzeige kann eine Musterkonfiguration verwendet werden. Achte bitte auf die htop Version.

Download als Textdatei für htop-Version 3.2.2.

Tippe nano /home/root/.config/htop/htoprc (der Pfad kann in deinem System abweichen) und ersetze die Paramenter mit folgenden Einstellungen oder kopiere sie aus der Musterkonfiguration:

Linux Fehlermeldung

Wenn im htop Programm in der Zeile „Systemd: degraded“ steht, dann wurden beim Booten nicht alle Dienste gestartet.

Gib für die Ursachenanalyse folgenden Befehl ein:systemctl;status. Du erhältst eine Liste aller Dienste und kannst jetzt gezielt nach nicht gestarteten Diensten suchen. Im Beispiel unten ist es der Dienst „smb.mount“, also der Service, welcher zum Beispiel die Alben im Netzwerk ausliest. Dieser Fehler kommt beim HQPlayer immer dann, wenn der Netzwerkzugriff nicht möglich war. Zum Beispiel wenn du dein NAS oder deinen Musik Server später startest als den Audio PC.

Die Fehlerbehebung geht am einfachsten, wenn du den HQPLayer nochmal neu startest. Dann sollte htop so aussehen: „Systemd: running“.

CPU Temperatur

Leider ist die Temperaturanzeige kein Bestandteil von htop. Mit dem Befehl cat/sys/class/thermal/thermal_zone*/temp lässt sich nur die Gesamttemperatur aller Kerne auslesen. Wenn der Befehl mehrfach eingegeben wird, lässt sich die Bandbreite der Temperaturentwicklung ablesen. Der wichtige Wert ist beim fis Audio PC der zweite.

Im Beispiel unten liegt die niedrigste Temperatur bei 49°C und die höchste bei 65°C.

ip-Adresse anzeigen

Um schnell die ip-Adresse herauszufinden kann der Befehl ifconfig verwendet werden. Für die Ausführung des Befehls sind root Rechte erforderlich: su root.

Die ip-Adresse wird unter „inet addr.:“ angezeigt. Außerdem werden die Netzwerkadapter angezeigt. Im Beispiel unten sind es zwei SFP Ports. Der Port enp1s0f0np0 ist mit RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B) inaktiv, während beim Port enp1s0f1np1 mit „RX bytes:473767729 (451.8 MiB), TX bytes:21515175245 (20.0 GiB)“ ein reger Netzwerkverkehr ausgewiesen wird. “RX bytes” gibt die Gesamtzahl der über die Schnittstelle empfangenen Bytes an. “TX bytes” gibt die Gesamtzahl der über die Schnittstelle gesendeten Bytes an. Etwaige Paketfehler sind unter „errors“ ersichtlich.

ethtool – ein umfangreiches Netzwerktool

Ein sehr umfangreiches Netzwerktool rufst du mit der Anwendung ethtool auf. Es würde hier zu weit führen alle Parameter zu erklären. Die Hilfe ist mit ethtool -h erreichbar. Eine gute Dokumentation mit Beispielen gibt es auf wiki.ubuntuusers.de/ethtool. Für die Ausführung des Befehls sind root Rechte erforderlich: su root.

Interruptmoderation deaktivieren

Wir empfehlen beim aktiven Netzwerkadapter die Interruptmoderation zu deaktiven, weil es die Latenzen erhöht. Wir wollen jedoch geringsmögliche Latenzen haben.

Für die Ausführung des Befehls sind root Rechte erforderlich: su root. Die aktuellen Einstellungen liest du mit diesem Befehl aus: ethtool -c eth1. Die Adapterbezeichnung (im Beispiel „eth1“) hinter dem „-c“ hast du vorher mit ifconfig ausgelesen. Bei „Adaptive RX: on“ ist die Interruptmoderation aktiviert.

Die Interruptmoderation deaktivierst du mit dem Befehl: ethtool -C eth1 adaptive-rx off. Achte dabei auf die richtige Adapterbezeichnung. Das „C“ muss groß geschrieben werden. Hinweis: Beim verwenden des HQPlayer OS bleibt die Einstellung leider nicht dauerhaft gespeichert und muss nach dem Neustart erneut deaktivert werden.

Flusssteuerung (flow control) aktivieren

Um Datenverluste oder Überlastungen zu vermeiden, gibt es Verfahren zur Datenflusssteuerung (engl. flow control), die den Datenstrom zwischen Sender und Empfänger anpassen. Flow control wird vor allem bei Vollduplex-Ethernet eingesetzt, das eine gleichzeitige Übertragung in beide Richtungen erlaubt. Dabei sendet der Empfänger dem Sender ein spezielles Pause-Frame, wenn sein Puffer voll ist oder er aus anderen Gründen die Übertragung unterbrechen möchte. Der Sender muss dann für eine bestimmte Zeit die Übertragung stoppen, bis er ein Resume-Frame vom Empfänger erhält.

Flow Control soll beim HQPlayer verwendet werden. Um die Einstellungen von Flow Control abzufragen, kannst du den Befehl ethtool -a eth1 verwenden (ersetze „eth1“ durch den Namen deiner Netzwerkkarte). Dabei müssen die Werte so aussehen: rx on tx on.

Falls die Werte auf „off“ stehen kannst du Flow Control mit diesem Befehl aktivieren: ethtool -A eth1 rx on tx on.

HQPlayer Systemadministration

Die Web-Konfigurationsoberfläche wird im Browser mit http://hqplayer.local:8088/ aufgerufen. Die Einstellungen werden in der Datei hqplayerd.xml gesichert. Nicht jedem dürfte bekannt sein, dass diese Datei einige verborgene Einstellungen enthält. Die Datei kann recht einfach mit einem Text Editor bearbeitet werden, indem ein „Configuration backup“ in der Web-Konfigurationsoberfläche durchgeführt wird. Nach der Bearbeitung wird sie einfach wieder mit „Configuration restore“ hochgeladen.

Die einfachere Möglichkeit steht seit der Version 5.5.0 direkt im Webbrowser zur verfügung. Dies betrifft die unten beschriebenen Einstellungen zu CPU Kerne administrieren (Multicore DSP), CPU E-Cores für die Filter nutzen (E-cores) und CPU Blocks per cycle administrieren (Blocks per cycle).

Der andere Weg ist die direkte Bearbeitung unter Linux. Für die Ausführung des Befehls sind root Rechte erforderlich: su root. Rufe die Datei mit nano /etc/hqplayer/hqplayerd.xml auf.

Es liegt eine kleine Tücke in diesem Modell. Wenn du irgendwann nicht mehr an diese Änderung denkst und dein gesichertes Setup bei einer neuen HQPlayer Version lädst, kann es zu Fehlfunktionen kommen. Denn es wird dann immer deine Änderung mitgeladen. Das ist nützlich, wenn die Programmlogik gleich bleibt. Aber nur dann!

CPU Kerne administrieren

In den Desktop Versionen gibt es die Möglichkeit die Kernzuordnung zu ändern. Unter „Settings > Advanced“ steht dafür das Optionsfeld „Multicore DSP“ zur Verfügung. Dieses Optionsfeld gibt es unter HQPlayer Embedded nicht, stattdessen kann die Konfigurationsdatei hqplayerd.xml konfiguriert werden:

  • Wenn das Auswahlfeld ausgegraut ist, ist die automatische Erkennung und Konfiguration aktiv und kann eine beliebige Anzahl von Kernen verwenden. Für eine optimale Leistung wird empfohlen, die automatische Erkennung zu verwenden. Das entspricht in der Konfigurationsdatei hqplayerd.xml dem Befehl: multicore=“auto“.
  • Wenn das Kästchen deaktiviert ist, wird die Verarbeitung für Fälle optimiert, in denen die Anzahl der Kerne gleich oder geringer ist als die Anzahl der Ausgabekanäle. Zum Beispiel Dual-Core-CPUs, wenn die Ausgabe in Stereo erfolgt. Das entspricht in der Konfigurationsdatei hqplayerd.xml dem Befehl: multicore=“0″.
  • Wenn das Kontrollkästchen voll aktiviert ist, wird die Verarbeitung für moderne Multi- Core-CPUs mit einer viel höheren Kernanzahl als Anzahl der Ausgabekanäle optimiert. Da diese Parallelisierung den Verarbeitungs-Overhead erhöht, steigt auch der gesamte CPU-Zeitverbrauch. Wenn bei der Einstellung „auto“ Leistungsprobleme auftreten, ist es in der Regel sinnvoll, diese Option zu verwenden. Das entspricht in der Konfigurationsdatei hqplayerd.xml dem Befehl: multicore=“1″. Diese Einstellung hat sich ab der HQPlayer Version 5 für den Intel® Core™ i9-13900K Prozessor als die Beste herausgestellt.

Im Bild unten ist diese Einstellung etwas versteckt, siehe Markierung.

CPU E-Cores für die Filter nutzen

Hochleistungs-CPUs wie der von uns verwendete Intel® Core™ i9-13900K Prozessor nutzen für rechenintensive Aufgabe die P-Cores (Power Cores) und für leichtere Aufgaben die E-Cores (Efficiency Cores). Bisher war es so, dass die E-Cores im HQPlayer OS nur für Nebentätigkeiten sehr gering in Anspruch genommen wurden. Ich hatte deshalb die E-Cores bis auf zwei alle deaktiviert. Mit der Version 5.4.1 ist es nun möglich die Filterberechnungen auf E-Cores auszulagern.

In der Konfigurationsdatei hqplayerd.xml wird dazu einfach ein neuer Wert hinter „<engine …“ eingetragen, zum Beispiel ecores=“filter“.

<engine auto_family="1" cd_drive="/dev/cdrom" channels="2" direct_sdm="0" dsd_6db="1" fft_size="512" gain_comp="0" idle_time="30000" multicore="1" ecores="filter" ...

Die erlaubten Werte sind wie folgt:

  • default : Standardmäßige (normale) Kernzuweisung
  • pool : E-Cores werden für den generischen DSP-Verarbeitungspool zugewiesen
  • filter : E-Cores werden für Ratenumwandlungsfilter zugewiesen

Die Einstellung mit Filterzuordnung zeigt eine sehr gut verteilte Last auf alle E-Cores (Nummern 17 bis 32). Die Nummern 1 bis 16 gehören den 8 P-Cores, die per Hyper-Threading auf je zwei Cores aufgeteilt wurden. Gut zu erkennen sind die Kerne 1 und 3, welche mit den Modulatoren die höchste Rechenlast stemmen müssen.

CPU Kernzuordnung administrieren

Eine weitere Linux Einstellung steht mit einer einzelnen Kernzuordnung zur Verfügung. Hier wird einfach in der Konfigurationsdatei hqplayerd.xml eine neue Zeile hinzugefügt. Zum Beispiel: HQPLAYER_RESERVED_CORES=1001. Dies weist den HQPlayer an, die Kerne 0 und 3 (also den ersten und den vierten Kern) nicht zu verwenden. Bei einer Vierkern-CPU ist das noch übersichtlich. Bei einem Intel® Core™ i9-13900K Prozessor sind das im Zweifel 32 Threads, wenn alle Kerne und Hyper-Threading aktiviert sind.

CPU Blocks per cycle administrieren

Block pro Zyklus“ (englisch: Blocks per cycle) ist eine Metrik, welche die Leistungsfähigkeit einer CPU (Central Processing Unit) beschreibt, insbesondere in Bezug auf die parallele Verarbeitung von Befehlen. Diese Metrik bezieht sich auf die Anzahl der Befehlsblöcke (auch als Instruktionen oder Operationen bezeichnet), die eine CPU in einem einzigen Verarbeitungszyklus ausführen kann.

Mit der HQPlayer Version 5.4.0 ist eine neue Administrationsmöglichkeit hinzugekommen. Die Anzahl der Blocks wird durch die Größe des CPU Caches und der RAM Geschwindigkeit beeinflusst. Wenn die Einstellung auf „Standard“ gesetzt ist (Default), wird der Wert basierend auf der erkannten Menge an CPU-Cache usw. automatisch konfiguriert. Diese Einstellung kann in der HQPlayer Log-Datei abgefragt werden. Bei einem Intel® Core™ i9-13900K Prozessor wird „Large cache, using large block size“ dokumentiert.

Die Verarbeitung von mehr Blöcken auf einmal reduziert den Overhead, insbesondere wenn eine GPU verwendet wird. Während die Verarbeitung von weniger Blöcken auf einmal hilft, die meisten Daten im CPU-Cache zu halten. Höhere Werte eignen sich besser für Prozessoren mit großem Cache, wie die AMD 3D-Serie und einige Intel Xeon-Modelle, oder Systeme mit Hochgeschwindigkeits-RAM. Während kleinere Werte besser für CPUs mit kleinem Cache oder Systeme mit langsamerem RAM geeignet sind.

In der Konfigurationsdatei hqplayerd.xml wird dazu einfach ein neuer Wert hinter „<engine …“ eingetragen, zum Beispiel nblocks=“4″. Erlaubt sind Werte zwischen 1 – 16. Beispiel:

<engine auto_family="1" cd_drive="/dev/cdrom" channels="2" direct_sdm="0" dsd_6db="1" fft_size="512" gain_comp="0" idle_time="30000" multicore="1" nblocks="4" ...

UPnP abschalten

Eigentlich ist es eine schöne Sache, dass HQPlayer Embedded UPnP anbietet und HQPlayer Desktop nicht. Leider wirkt sich UPnP auf den Netzwerkverkehr aus, auch wenn es gar nicht genutzt wird. Die Gründe sind wie folgt:

  1. UPnP verwendet Broadcasts, um Geräte im Netzwerk zu finden. In einem inaktiven Zustand sendet der HQPlayer immer noch periodisch Broadcasts aus, um nach anderen UPnP-Geräten zu suchen .
  2. Wenn der HQPlayer UPnP aktiviert hat, könnte es Anfragen von anderen Geräten im Netzwerk empfangen, die nach UPnP-Diensten suchen.
  3. UPnP ist nicht sicher, weil ein Schadcode Öffnung von Ports im Router durchführen kann.

Damit du UPnP dauerhaft deaktivierst, editierst du einfach die Datei hqplayerd.xml. Im Original sieht der Interface String so aus:

<upnp freewheel="0" interface="br0"> <!-- ... Weitere Konfiguration ... --> </upnp>

Ändere den Interface-Wert auf einen leeren String: interface=““. Die weitere Konfiguration lässt du unverändert. Das sieht dann so aus:

<upnp freewheel="0" interface=""> <!-- ... Weitere Konfiguration ... --> </upnp>

Lade die neue Datei hqplayerd.xml unter „Restore“ wieder hoch und starte den HQPlayer neu.

Das könnte auch interessant für dich sein: Was sind bessere Alternativen zu UPnP?

date – Date mich 🙂

Mit diesem Linux Befehl kommst du zwar nicht zu Tinder, dafür kannst du die aktuelle Systemzeit auslesen: date. Zurück kommt zum Beispiel diese Anzeige: Tue Sep 13 07:25:00 UTC 2022. Das Kürzel UTC beschreibt die aktuelle Zeitzone (Koordinierte Weltzeit). Für Änderungen ergänzt du einfach das Datum und die aktuelle Uhrzeit mi folgender Syntax: date MMTThhmmJJ. Die Kürzel stehen für:
MM = Monat
TT = Tag
hh = Stunden
mm = Minuten
JJ = Jahr

Für die Ausführung des Befehls sind root Rechte erforderlich: su root. Für den 13. Sept. 2022 um 20.11 Uhr wäre das der Befehl: date 0913201122. Übernimm das auch für das Motherboard, damit es dauerhaft gespeichert bleibt: hwclock –systohc. Nun ändere deine Zeitzone. Für Europa und Berlin wäre das: ln -sf/usr/share/zoneinfo/Europe/Berlin /etc/localtime.

Verzeichnis wechseln*

Der Befehl in der Linux-Konsole, um das aktuelle Verzeichnis zu wechseln, ist cd. Hier sind einige Beispiele, wie du ihn verwenden kannst:

  1. Um in ein bestimmtes Verzeichnis zu wechseln:cd /pfad/zum/zielverzeichnis
  2. Um in das übergeordnete Verzeichnis zu wechseln:cd ..
  3. Um ins Home-Verzeichnis des aktuellen Benutzers zu wechseln:cd ~
  4. Um direkt ins Root-Verzeichnis zu wechseln (Vorsicht, dies erfordert oft Administratorrechte):cd /
  5. Um schnell zum vorherigen Verzeichnis zu wechseln:cd -
  6. Um zu einem Verzeichnis unter Angabe des Pfads relativ zum aktuellen Verzeichnis zu wechseln:cd pfad/relativ/zum/aktuellen/verzeichnis

Stelle sicher, dass du die korrekten Verzeichnispfade angibst, wenn du den cd-Befehl verwendest. Du kannst auch die Tab-Taste verwenden, um automatisch Vervollständigungen von Verzeichnisnamen einzufügen, was das Navigieren erleichtern kann.

Linux Konsolenbefehl für Verzeichnisanzeige*

Der Befehl in der Linux-Konsole, um den Inhalt eines Verzeichnisses anzuzeigen, ist ls. Hier sind einige Beispiele, wie du ihn verwenden kannst:

  1. Um den Inhalt des aktuellen Verzeichnisses anzuzeigen:ls
  2. Um den Inhalt eines bestimmten Verzeichnisses anzuzeigen:ls /pfad/zum/zielverzeichnis
  3. Um den Inhalt eines Verzeichnisses detailliert anzuzeigen (mit Berechtigungen, Eigentümer, Größe usw.):ls -l
  4. Um den Inhalt eines Verzeichnisses einschließlich versteckter Dateien anzuzeigen:ls -a
  5. Um den Inhalt eines Verzeichnisses detailliert und einschließlich versteckter Dateien anzuzeigen:ls -la
  6. Um den Inhalt eines Verzeichnisses detailliert anzuzeigen und Dateigrößen in einem menschenlesbaren Format (z. B. KB, MB) anzuzeigen:ls -lh
  7. Um den Inhalt mehrerer Verzeichnisse gleichzeitig anzuzeigen:ls /pfad/verzeichnis1 /pfad/verzeichnis2

*ChatGPT hat mir beim Schreiben geholfen.