Fedora: Falscher Port bei Pulseaudio gesetzt

Wer beim Wechsel zu Fedora 34 auch plötzlich seine oder ihre Musik aus dem Kopfhörer hören mußte, dem kann wohl doch helfen.

Fedora: Falscher Port bei Pulseaudio gesetzt

Die Ursache habe ich zwar nicht finden können, aber es gibt eine automatische Lösung das Problem: Den Port beim Desktopstart umstellen.

Wir brauchen:

  1. Eine Desktopdatei für den Autostart
  2. ein kleines Bashscript
  3. eine dynamische Anpassung an sich verändernde PulseAudio Sinks.

~/.config/autostart/fixpipewire.desktop
[Desktop Entry]
Version=1.0
Name=Fixpipewire
GenericName=Fixpipewire
Comment=fixes audio port selection
Exec=/home/<username>/.local/bin/fixpipewire
Icon=pva
Terminal=false
Type=Application
StartupNotify=false
Categories=extras
Keywords=tools
X-Desktop-File-Install-Version=0.21
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=5

Das hier angegebene Script sieht dann so aus:

~/.local/bin/fixpipewire

#!/bin/bash

pactl list sinks | grep -B2 „Name: alsa_output.pci-0000_0a_00.4.analog-stereo“ | grep Ziel | sed -e „s/^.* #//g“ | awk ‚{print „pactl set-sink-port „$1″ analog-output-lineout“;}’| bash

Wie man an die Details kommt

Mehrere Details müssen wir erwähnen. Mit

$ pactl list sinks | less

bekommen wir eine Liste mit allen Sinks. Auf Deutsch heißen die Sinks leider „Ziel“.. keine Ahnung welches Genie da eine Übersetzung angebracht hat 🙁

Wir schauen nach folgenden Angaben:  Sink #, Name und .. Portid

Beispiel:

Ziel #48

Name: alsa_output.pci-0000_0a_00.4.analog-stereo
Beschreibung: Starship/Matisse HD Audio Controller Analog Stereo

Ports:
analog-output-lineout: Line-Ausgang (type: Line, priority: 9000, availability group: Legacy 4, not available)
analog-output-headphones: Kopfhörer (type: Kopfhörer, priority: 9900, availability group: Legacy 5, availability unknown)
Aktiver Port: analog-output-headphones

Der aktive Port ist die Stellung, die das Ausgabegeräte gerade hat. Im Beispiel oben ist das z.Z. „analog-output-headphones“, also wird der Ton auf den Kopfhörern ausgegeben. Das beheben wir so:

$ pactl set-sink-port 48 analog-output-lineout

Da wir das Script per Desktopdatei in den Autostart gebracht haben, mit einer Verzögerung von 5 Sekunden, wird der Port jetzt bei Desktoplogin umgestellt, egal wie oft man ein- und ausloggt.

CoronaChroniken: Januar Update 2022

Es ist mal wieder Zeit für eine neue Zwischengrafik.

CoronaChroniken: Januar Update 2022

Stand: 28.Januar 2022

Dies sind die aktuellen Zahlen(Grafiken) von heute morgen.

Ich muß leider was loswerden, was einigen der Leser nicht gefallen wird:

Ich höre mir gerade die Bundespressekonferenz mit Herrn Wiehler und Herrn Lauterbach an und muß leider feststellen, daß wenn jemand in dieser Republik als Schwurbler bezeichnet werden sollte, dann Herr L. . Da kam inhaltlich nicht ein gedankenvollständiger Satz raus.

Wenn ich diese Sätze jemanden vorlege und am Ende fragen würde, was der Mann denn gesagt hat, würde mir niemand die richtige Antwort geben können. Sätze fingen mit einem Versuch einer Erklärung an, dann lenkten min. zwei Nebensätze völlig vom Thema ab, welches am Ende dann nicht beantwortet wurde.

Die einzigen klaren Sätze waren die, die zum Themakomplex „Wußten Sie, wann das RKI den Genesenzeitraum ändert?“. Ich hätte es nie gedacht, daß ich mal Herrn Spahn vermissen würde, aber der konnte wenigsten klare und verständliche Sätze von sich geben. Die präsentieren Meinungen zur Lage der Schutzwirkung durch Infektion weichen deutlich von dem ab, was andere Fachleute und vor allem die Zahlen aus anderen Ländern, die epidemisch schon weiter sind als wir, sagen.

Wer sich etwas neutraler informieren möchte, dem empfehle ich die täglichen Videopodcasts von Dr. John Campell aus England, der wertungsfrei und für jedermann verständlich die Zahlen und Fakten präsentiert. Seine Aussagen beziehen sich hauptsächlich auf England, aber die können wir so auch für Deutschland zeitverzögert übernehmen. Den kruden Eintrag in der Wikipedia könnt Ihr übrigens vergessen, da sich die Lage laufend ändert und das gilt auch für etwaige Medikamentenempfehlungen.

Die Engländer sind Anfang Dezember schon dagewesen, wo wir derzeit sind.

Quelle: https://ourworldindata.org/

Wenn man sich diese Grafiken ansieht und dann mitbekommt, daß Dänemark, Holland, England, Irland und Italien Ihre Maßnahmen ganz oder größtenteils aufheben, fragt man sich, was uns da in der Pressekonferenz für ein Blödsinn aufgetischt wurde.

Natürlich wird der Herbst nicht mehr von Omikron, sondern von Omikron BA.2 oder einer anderen Version beherrscht, aber die haben Ihre Gefährlichkeit eben verloren. Wir müssen jetzt endlich mal zu Potte kommen und mit dem Virus leben. Der ist da und wird auch nicht mehr so schnell verschwinden. Wir haben wirksame Medikamente dagegen, wir wissen was man tun kann um seinem Körper eine bessere Ausgangslage zu verschaffen und jeder der will kann sich impfen lassen. Let’s go.

 

neue Features für PVA Carola

Erst war es nur eine Idee, dann wurde es doch Realität: MP3 Metadaten 😉

neue Features für PVA Carola

Als ich in 2021 angefangen habe mit Carola einfachste Anweisungen umzusetzen, kamen schnell möglich Anwendungsfelder ins Spiel z.b. ein naheliegender Gedanke: auf Zuruf Musik abspielen können. Also schaute ich mir meinen Lieblingsplayer QMMP genauer an und der konnte alles per Kommandozeile mitgeteilt bekommen, was für ein Programm, daß eigentlich nur Bashbefehle absetzt naheliegend ist.

Natürlich reicht das nicht, weil man Musik ja auch suchen muß. Wer wie ich jetzt Spotify in Klein zu hause hat, der macht aus der kleinen Aufgabe, mal eben das ~/Musik Verzeichnis zu durchsuchen eine abendfüllende Angelegenheit, weil trotz M2.SSD der Suchvorgang recht lange braucht. Also cacht man trotzdem alles, was man so cachen kann, in diesem Fall alle Pfade und Dateinamen, damit man nur noch eine Datei laden und durchsuchen muß, was nicht mehr Minuten, sondern nur (Bruchteile von) Sekunden dauert.

Jetzt kann man mit einer vernünftigen Benennungsstrategie, recht gute Treffer für Begriffe wie „Queen“, „Elton John“ oder „Alles nur geklaut“ erzielen, aber grundlegende Suchen nach dem Genre fallen weg, weil man das üblicherweise nicht in den Dateinamen schreibt. Da andere Sachen wichtiger waren, blieb es also erst einmal bei dieser simplen Methode.

com.mpatric.mp3agic hat das geändert

Da es noch keine Methode gab, die Musiksammlung durch Metadaten nach Genres abspielen zu lassen, ohne dabei auf andere Audioplayer zu setzen, die nicht das Look&Feel von QMMP hatten, gab es auch keinen Grund die Musiksammlung dahin gehend zu indizieren und die Tags in die MP3-Dateien zu überführen. Wir hatten also ein Henne-Ei-Problem 😉

Github ist ein Hort von Software für fast alles und die JAVA Bibliothek com.mpatric.mp3agic konnte sehr einfach MP3Files auf alles mögliche analysieren. Leider dauerte ein Scan meiner fünfstelligen Sammlung bequeme 10 Minuten. Der Wert ist natürlich für eine Direktsuche viel zu schlecht. Michael, der Autor von mp3agic, konnte die Zeit durch Tipps auf unter 5 Minuten drücken aber auch das war mir noch zu lange.

Java kann eigentlich sehr einfach Subprozesse erzeugen und koordinieren, so daß ein gemeinsamer Datensatz erzeugt werden kann. Hmm.. also was macht man, wenn ein Sequenzielles Verarbeiten von Daten zu langsam ist und genug Prozessoren zur Verfügung stehen? Genau man parallelisiert den Vorgang 😀

Load 12000 – Tendenz steigend!

Ich hatte Carola vor einigen Wochen beigebracht mir den Status des PCs in menschlicher Form mitzuteilen, also nicht einfach stumpf die Load aufsagen, sondern abhängig von der Load entsprechend immer dramatischer klingende Sätze von sich zu geben, bis hin zur Überlastung mit Rotem Alarm und Warnsirenen 🙂 Leider war Carola im ersten, zu erfolgreichem, Versuch selbst die Ursache, so daß es mir leider keinen Kommentar zur Load von 12.000!!! geben konnte 😀

Die CPU brennt? 😀

Eine Load von 12.000 habe ich selbst in 20 Jahren Linux noch nirgendwo gesehen, entsprechend ungläubig habe ich mir die Werte in Top angesehen 😉 Aber wenn man mehr als 10.000 Prozesse gleichzeitig auf 12 unschuldige CPU Kerne loslässt, dann geht die Load relativ schnell nach oben, wenn die IO-Last steigt. Wenn man Anfangs noch 300 Prozesse gleichzeitig von der SSD hat versorgt lassen können, wird das für jeden Prozess der dazu kommt und für den noch kein früherer beendet wurde, immer langsamer, selbst mit „Bis zu 1.000.000 IOPS“ lesend (Samsung Werbung) , weil gar nicht genug Daten am Stück gelesen werden, so ein MP3-File ist ja schliesslich endlich, kann die SSD das nie ausspielen. Dazu kommt noch, daß ein Teil der Daten auf langsameren SATA SSDs oder SATA HDDs gespeichert waren, was die IO-Last deutlich steigert und die Performance drastisch in den Keller zieht.

Anders als bei einem SWAP-of-Death Zustand, ist eine Load von 12.000 kein Problem. Das System läuft bequem weiter, weil die CPU zwar durch IO-Wait gebremst werden, aber alle anderen Prozesse deswegen trotzdem ausgeführt werden können. Das Starten von neuen Anwendungen wird zum Problem, aber z.b. lief die Musik auch störungsfrei durch. Abbrechen kann man die Prozesse so auch leicht.

Wie aus 10+ Minuten 1,5s wurden

Vorteilhaft ist es, die nötigen Blöcke der Dateien bereits im Filecache des OS zu haben, aber um das zu erreichen muß man, welch Wunder, genau diese Blöcke schon einmal gelesen haben. Wenn man das gemacht hat, dann braucht man den zweiten Lauf nicht mehr, weil man das Ergebnis bereits hat. Nur der Statistikfreaks wegen, hier der Benchmark für einen Ryzen 5600X mit DDR4 3200MHz RAM: (bestwert) 1,5s auf 14.000+ Files.

Um den ersten Lauf durchzuführen, braucht man mit der Methode wahnsinnig viel Zeit, fast soviel wie sequenziell, weil durch die vielen Prozesse keiner der Prozesse richtig fertig wird, weil laufend Kontextswitche in der CPU und damit im IO-Controller stattfinden müssen, was höllisch inperformant ist. In der Praxis ist es daher besser ein niedrigeres Limit für die maximale Anzahl an Prozessen zu setzen, so daß die Platten hinterher kommen und die Kerne gut ausgelastet sind. Ich habe da mal 200 als Limit angesetzt.

Ohne Limit dauerte der Vorgang (ungecacht) :

$ time java PVA ‚:“carola erzeuge metadata“‚
erzeuge metadata
found MAKEMETACACHE:

real 15m39,380s
user 0m24,000s
sys 0m9,338s

Mit Limit 200 UND Debugausgabe in Terminal wo er ist…

argument:Das Metacache wurde aktualisiert.

real 0m44,807s
user 0m3,886s
sys 0m2,852s

Mit Limit 200, MIT Filecache UND OHNE Debugausgabe in Terminal wo er ist…

$ time env java PVA ‚:“carola erzeuge metadata“‚
erzeuge metadata
found MAKEMETACACHE:

real 0m3,385s
user 0m3,351s
sys 0m1,800s

Ich denke, das ist ein guter Kompromiss zwischen den Extremen 😉 Ist das Filecache richtig gefüllt, ist es auch egal wieviele Prozesse parallel starten: ob es 200, 2.000 oder 20.000 sind spielt dann keine Rolle mehr. Im ungecachten Zustand ist aber ein wichtiger Faktor, weil die Anzahl der Prozesse die IO-Last reguliert.

Merke: Das Filecache im RAM ist extrem wichtig!

Wie kommt man die Metadaten ran?

Dazu benutzt man am besten PICARD. Ja, ich dachte auch erst an TNG 😉

Mit Picard habt Ihr ein gutes Tool, das schnell, und meisten recht einfach, die Metadaten aus der MusicBrainz Datenbank auslesen kann. Es schreibt dann die Metadaten in die Files.

die Oberfläche von Picard, Links die Dateinamen, oben die Buttonreihe.

MP3 Files oder ganze Ordner hinzufügen.

Die Dateien auswählen

Die Dateien werden mit verschiedenen Wahrscheinlichkeiten erkannt

Noch speichern und wir sind fertig.

Nachdem man mit Picard irgendwann, realistisch so Wochen später, fertig ist, dann erzeugt man einmal die Metadaten mit dem PVA Befehl „erneuere metadaten“ und danach kann man mit Carola auch nach „SmoothJazz“ suchen, oder was Raghesh sonst noch so gefällt 😉

Termine! Termine, nichts als Termine!

Das Mantra der Postmoderne lautet nicht „Können Sie mich hören?“ sondern „Nicht schon wieder ein Meeting“. Nun bei der Anzahl der Meetings kann Carola zwar nicht helfen, aber bei der Organisation könnte sie jetzt hilfreich werden:

Carola erinnere mich am Dienstag um achtzehn Uhr dreißig an Linux am Dienstag

Der obige Satz führt dazu, daß Carola „Linux am Dienstag“ in die Termindatenbank aufnimmt und einen am nächsten Dienstag um 18:30 Uhr an unseren Treff „Linux am Dienstag“ erinnert. Genauso gut kann man den Tag weglassen oder „morgen“, „Übermorgen“ usw. verwenden. Da die Woche nur 7 Tage hat, können wir so nur rund eine Woche abdecken. Die Angabe des Datums fehlt noch. Der Satz:

Carola erinnere mich um achtzehn Uhr dreißig an Linux am Dienstag

ist auch völlig valide und meint implizit HEUTE ABEND um 18:30 Uhr.

Carola meine Termine bitte“ oder etwas unhöflicher „Carola meine Termine“ führt dann zu einer sprachlichen Auflistung der Termine. Löschen kann man die Termine noch nicht, da die Analyse des Datums im Code noch fehlt.

„Computer?“

Wem Carola als Name nicht gefällt, oder jemand einfach das vollständige Star Trek Feeling haben will, der kann den PVA jetzt per Befehl umbenennen 🙂

„Carola Dein neuer Name lautet computer“

Gleich danach hört Euer PVA auf den Namen „Computer“. Auf Spielchen mit „Siri“,“ok Google“ oder „Hallo Alexa“ würde ich verzichten, das beeindruckt Besucher kein bisschen 😉

Medienplayer wie MPV oder Celluloid

Wer den Artikel über die neue Mediaplayersteuerung noch nicht gelesen hat, der finden den hier:

Carola: Netflix & Mediaplayerkontrolle

Kleiner Ausblick auf die nächsten Tage: Ihr bekommt einen Technikvortrag über Systemd,Timers und JAVA fails 😉