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 sudo
entfä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 wurde unter HQPlayer Embedded nachgezogen, kann aber auch in der 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 24 logische Prozessoren.
Exkurs Windows
Bei Windows funktioniert die Bearbeitung der Konfigurationsdatei hqplayerd.xml nicht. Die binäre Maske ist anders herum, nämlich von rechts für die P-Cores nach links für die E-Cores. Wenn du die ersten beiden P-Cores eines Intel® Core™ i9-13900K Prozessors für den HQPlayer deaktivieren willst, dann lautet die Maske „000000000000000000000011“.
Nun muss eine Umgehungsvariable neu angelegt werden. Öffne die Systemeigenschaften mit der Suche nach „Umgebungsvariablen“ und wähle „Umgebungsvariablen für dieses Konto bearbeiten“ aus. Unter „Benutzervariablen“ auf Neu… klicken. Gib HQPLAYER_RESERVED_CORES als Namen und als Wert „000000000000000000000011“ ein. Bestätige die Eingabe und starte den Rechner neu. Danach sollte der HQPlayer die beiden P-Cores in Ruhe lassen.
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 und damit die Latenzen verringert. 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:
- 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 .
- Wenn der HQPlayer UPnP aktiviert hat, könnte es Anfragen von anderen Geräten im Netzwerk empfangen, die nach UPnP-Diensten suchen.
- 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?
HQPlayer Embedded readme.txt
HQPlayer Embedded wurde ursprünglich für Hardware Hersteller entwickelt. Die Hersteller sollen dabei den HQPlayer passend zu ihrem Gerät konfigurieren. Deshalb sind manche Einstellungen nur „unter der Haube“ zu finden. Dazu gibt es auch eine verborgene readme.txt Datei, welche interne Einstellungen erläutert.
Die Fundstelle ist: /usr/share/doc/hqplayerd/readme.txt.gz
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:
- Um in ein bestimmtes Verzeichnis zu wechseln:
cd /pfad/zum/zielverzeichnis
- Um in das übergeordnete Verzeichnis zu wechseln:
cd ..
- Um ins Home-Verzeichnis des aktuellen Benutzers zu wechseln:
cd ~
- Um direkt ins Root-Verzeichnis zu wechseln (Vorsicht, dies erfordert oft Administratorrechte):
cd /
- Um schnell zum vorherigen Verzeichnis zu wechseln:
cd -
- 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:
- Um den Inhalt des aktuellen Verzeichnisses anzuzeigen:
ls
- Um den Inhalt eines bestimmten Verzeichnisses anzuzeigen:
ls /pfad/zum/zielverzeichnis
- Um den Inhalt eines Verzeichnisses detailliert anzuzeigen (mit Berechtigungen, Eigentümer, Größe usw.):
ls -l
- Um den Inhalt eines Verzeichnisses einschließlich versteckter Dateien anzuzeigen:
ls -a
- Um den Inhalt eines Verzeichnisses detailliert und einschließlich versteckter Dateien anzuzeigen:
ls -la
- Um den Inhalt eines Verzeichnisses detailliert anzuzeigen und Dateigrößen in einem menschenlesbaren Format (z. B. KB, MB) anzuzeigen:
ls -lh
- Um den Inhalt mehrerer Verzeichnisse gleichzeitig anzuzeigen:
ls /pfad/verzeichnis1 /pfad/verzeichnis2
*ChatGPT hat mir beim Schreiben geholfen.