Linux am Dienstag: Nachlese 8.6.2021

Linux am Dienstag Nachlese vom 8.6.2021 zum Nachlesen. Hoffentlich komme ich für das Wortspiel nicht in die Humoristenhölle 🙂

Linux am Dienstag: Nachlese 8.6.2021

Es ging mal nicht um das Pinephone 😀

LPD 2021.2 – „Land of Confusion“

Nach dem LPD ist vor dem LPD 🙂 Um im Land der Konfusion Klarheit zu schaffen, planen wir den nächsten LPD Event schon einmal in Gedanken vor. Zur Zeit ist aber noch kreative Sommerpause 🙂 Mit ca. 8 Wochen Vorlauf werden die Beiträge für November im September produziert und dann rechtzeitig fertig vorliegen. Wer bei uns mitmachen möchte, kann sich einfach bei mir oder im Linux am Dienstag Raum auf Matrix melden.

Einführung in Blender

Eine ab jetzt regelmäßig stattfindende Einführung in das 3D-Rendersystem Blender präsentierte uns Rüdiger. Die nächsten Lektionen gestalten sich in einem kleinen botanischen Projekt:

Modellieren: Ein Baum
Farbe am Baum: Material Grundlagen
Wolken: Duplizieren
Hügellandschaft: Proportionales Bearbeiten
Eine Tür im Baum: Inset

Die kleine, einstündige Einführung gestern Abend hat echt Spaß gemacht 🙂

Alternatives am Beispiel Java

Mit Alternatives kann man verschiedene Versionen einer Softwareanwendung parallel auf dem Rechner liegen haben. Den Mechnismus gibt es nicht nur bei Fedora, RHEL oder Ex-CentOS. Die beiden richtigsten

Anweisungen hier im Beispiel: (gekürzte Fassung)

# alternatives –list

whois auto /usr/bin/jwhois
mailx auto /usr/bin/mailx.mailx
mta manual /usr/sbin/sendmail.sendmail
wine auto /usr/bin/wine32
go auto /usr/lib/golang/bin/go
java manual /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-3.fc33.x86_64/jre/bin/java

Damit man sehen kann, was man überhaupt konfigurieren kann. Die erste Spalte enthält das „Schlagwort“ hier „java“ oder „wine“.

# alternatives –config java

Es gibt 3 Programme, welche »java« zur Verfügung stellen.

Auswahl Befehl
———————————————–
+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-3.fc33.x86_64/jre/bin/java)
2 java-9-openjdk.x86_64 (/usr/lib/jvm/java-9-openjdk-9.0.4.11-6.fc28.x86_64/bin/java)
* 3 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-2.fc33.x86_64/bin/java)

Eingabe um die vorgegebene Auswahl[+] zu behalten, oder geben Sie die Nummer an:

Durch Eingabe der Zahlen kann man als Root bestimmen, was systemweit als Java-Default benutzt werden soll. Das ist wichtig, wenn man noch Anwendungen hat, die z.b. mit Java 8 laufen und auch welche hat, die Java >8 benötigen.

qv4l2 crasht beim Start – Das hilft

Das Video-For-Linux-2 System wird von sehr vielen bilderzeugenden Endgeräten wie Webcams, Scannern und Videoadaptern unterstützt. Wer die Geräte gut konfigurieren möchte braucht die Anwendung qv4l2 dafür. nur leider startet die derzeit auf Fedora 33 nicht. Hier der Fix: „qv4l2 -R“

Mit Windows Freigaben arbeiten

GVFS-SMB ist der Weg, wenn man mit Nemo oder Nautilus eine Windows Freigabe einbinden möchte. Wo Nemo eine komfortable Eingabemaske präsentiert, möchte Nautilus die Angaben vom Endnutzer wissen:

smb://MYGROUP;BENUTZERNAME@HOSTNAME/SHARENAME/

Das gleiche Format kann man für SMB-Get benutzen, mit sich direkt von Freigaben Dateien kopiert werden können, so man denn den Namen und Pfad schon kennt:

smbget smb://linux-am-dienstagde@linux-am-dienstag.de/Linux-Freigabename/video-js-7.11.4.zip

Klappt das mit dem GVFS oder Samba nicht direkt, gibt es noch eine dritte Option:

sudo mount -t cifs //linux-am-dienstag.de/Linux-Freigabename/ /mnt -o user=linux-am-dienstagde

Leider, oder auch „endlich“, mußten Windows 7 Benutzer ohne nötige Updates feststellen, daß aktuelle Linuxuser Ihre Freigaben nicht mehr besuchen können. Der „alte Scheiss“ wie SMB 1 ist endlich rausgeflogen 😀

Fedora: wie man Jitsi wieder starten kann

Auch Jitsi ist in die Jahre gekommen und braucht beim Start jetzt unsere Hilfe 😉

Fedora: wie man Jitsi wieder starten kann

Im Gegensatz zum Truecryptproblem, ist das Jitsi Problem recht einfach in den Griff zu bekommen.

Die Ursache ist ein Wechsel des Default-Javas auf Java 11. Jitsi braucht aber Java 1.8 zum Starten, sonst findet es eine Klasse nicht. Ingo Bauersachs, der derzeitige alleinige Autor vom Desktop Jitsi, arbeitet an solchen Problemen, aber aufgrund der geringen Zeit die er da investieren kann, kommt das alles nur langsam voran.

Wer also bei Jitsi mithelfen will, weil das u.a. auch das einzig gut funktionierende SIP-Phone auf dem Desktop ist, kann sich gern bei Ingo melden.

Nun zur Lösung

Werdet mal root auf Eurem Linux und geht das ein:

alternatives –config java

kommt so etwas:

# alternatives –config java

Es gibt 3 Programme, welche »java« zur Verfügung stellen.

Auswahl Befehl
———————————————–
+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-3.fc33.x86_64/jre/bin/java)
2 java-9-openjdk.x86_64 (/usr/lib/jvm/java-9-openjdk-9.0.4.11-6.fc28.x86_64/bin/java)
* 3 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-2.fc33.x86_64/bin/java)

Eingabe um die vorgegebene Auswahl[+] zu behalten, oder geben Sie die Nummer an:

Ich habe mein Java natürlich schon so umgestellt, deswegen zeigt er bei mir das „+“ beim Java 1.8 an. Wenn das bei Euch nicht der Fall, sonst wärt Ihr vermutlich auch nicht hier, dann gebt „1“ oder die bei Euch angezeigte Zahl an. Danach startet Ihr Jitsi neu und geht wieder.

LAHA und die Latenzfalle

Kleines Update zu LAHA, dem Multiroom Sound und PulseAudio.

Stand der Dinge

Wie man es drehen und wenden will, die fertigen Tools zum Abspielen von PCM Sound haben alle irgendeine Macke.

PAPLAY benutzt PulseAudio. Das ist praktisch ein Todesurteil für eine stabile Latenz.
APLAY   benutzt Alsa, das defaultmäßig … PulseAudio benutzt. Siehe erstens 🙂
*JACK*  nun Jack möchte gern alleine tätig sein, ohne Konkurrenz. Fällt auch aus.

Da APLAY und PAPLAY per Default einen PA Stream zum Abspielen benutzen, haben beide in der Form das gleiche Problem: Die Audiolatenz des Playstreams steigt mit der Zeit an. d.b. alle anderen Geräte müßten mitwandern. Blöd nur, das Androids gar keine Latenzwanderung haben und selbst wenn Sie es hätten, wäre das eine blödsinnige Lösung. Jetzt fragt Ihr Euch natürlich: was labbert der da? Da muß man jetzt weiiiiiit ausholen.

Also, wenn man mit PAPLAY Sound ausgibt, geht PAPLAY zum PAServer und sagt dem, das DER eine Latenz wählen soll. Das macht der dann auch, nachdem die ersten Daten geflossen sind und die pegelt sich mit 16Bit Stereo und 48000″hz“ bei rund 1,9s ein. Richtig gelesen 1,9 Sekunden. Nach 40 Minuten sind wir bei knappen 5 Sekunden, wenns dumm läuft. Wenns gut läuft bei 2,4s . Das entscheidet PA selbst, ich nehme an, nach internen Fehlberechnungen aller gestarteten, gestoppten, bewegten etc. Streams die auf dem System drauf sind. Ich hab es noch nicht im Source gefunden. Es ist eigentlich das Ziel eines Audioservers die Latenz niedrig zu halten, aus irgendeinem Grund, ist dem PA-Latenzalgorithmus das egal.

Wenn man jetzt denkt, daß der Befehl ja eine OPTION für die gewünschte Latenz hat und sich schon freut, daß die dann ja als Ziel eingehalten wird .. ähm ja, also wie soll ich das Schreiben ohne verklagt zu werden??? Lieber nicht, hier ein Beispiel: 500ms angegeben, Latenz beginnt bei 320ms und wandert pö-â-pö so Richtung 500ms, durchbricht den Median, und verschwindet alsbald jenseits von Gut und Böse im Sekundenbereich.

Wenn man auf die glorreiche Idee kommt, da das anzugeben, was der Algo vorher selbst ausgerechnet hat, dann bekommt man nicht 1,9s , nö, mehr so 1s+- und dann kommt das gleiche Spiel wie vorher bei 500ms.
Ja, man könnte jetzt die PAPLAY-Routine kapern, den anderen Geräten die Latenzen mitteilen und denen somit zu einem Sync verhelfen. ABER.. die Latenz wird ja immer größer, was bedeutet, daß bei jedem neuen Sync mehr Zeit vergeht, bis man was hört. Also auch mal 5 Sekunden schwarzes nichts. Das ist hochgradig Inakzeptabel.

Bugreports sind raus, werden nicht helfen, weil (C) endet 2006 . Sieht nicht so aus, als wenn da wer dran arbeitet.

Kommen wir zu ALSA

APLAY kann ALSA-Devices direkt ansprechen. Warum nutzen wir dann nicht APLAY, statt PAPLAY ? Gesagt, getan. Versuchts mal, viel Glück dabei. Das geht mit etwas Glück genau einmal und auch nur auf einem Device, aus das PA grade nichts ausgibt. Ist auch klar, weil PA ja ALSA als Unterbau hat. Wir erinnern uns, daß PAPLAY 1,9s Latenz hatte. APLAY, wenn man ein Device findet, das geht, hat 0ms und das Startdelay ist nicht ganz so funktional, wie sich APLAY das wünscht aka. auch buggy. ABER, 0ms sind cool, weil Android auch 0ms haben kann, ohne dabei drauf zu gehen. Der Lesezugriff für Netzwerkdaten für „16 Bit Stereo 48k“ auf einem Android liegt bei 1ms. d.b. nimmt man ALSA als Player und bekommt das Device frei, hat man eine echt geile Latenz von 1-2ms und das hört man nicht!

Der Resync

Jetzt gibt es allerlei Hürden, die man umschiffen muß. Androids fliegt das eigene Multitasking um die Ohren, da fängt der Ton dann an zu stottern. Vorwarnung : keine. Gegenmaßnahmen: derzeit unbekannt.Das funktioniert auf dem Desktop etwas besser.

Bei 0ms Latenz ist der Resync instant, da könnte man versucht sein, einfach pauschal alle paar Sekunden mal helfend durch einen Socket.close();Socket.connect() einzugreifen. Könnte klappen, muß nicht.Ist aber eine Option, wenn der Wiedergabetask das nicht merkt. Geheimtip: Vorsicht vor doppelten Daten im AudioBuffer. Vergleicht mal, ob Ihr nach dem connect()+read() einen Teil davon schon habt und schmeißt den raus.

LAHA

Unser ControllCenter steuert jetzt bereits beliebig viele Devices, kann Audiostreams von laufenden Apps kapern, z.b. MPV, FireFox etc. , hat diverse Backends zum Abspielen auf dem Desktop, könnte verschiedene Musikplayer als Quelle nutzen und damit auch Last.FM, Spotify etc. realisieren. Er verschiebt Metadaten, findet neue Geräte im Netz, erlaubt Endgeräten mit Screen ihn fernzusteuern und hat bereits erfolgreich ein Handy als Drahtloskopfhörer für Videos laufen gehabt. Dank MPVs negativer Latenz und der frei einstellbaren Endgeräte Latenz, kann man alles perfekt ausrichten 🙂

Wir sind also auf dem richtigen Weg. Ob das allerdings vor Weihnachten 100% zuverlässig läuft, kann ich nicht garantieren. Trotz des ganzen Frustes mit den Bugs der Anderen, hat das Projekt endlich mal wieder Spaß beim Programmieren beschert. Und das ist doch, weswegen man es tut, oder nicht 😀