Hallo, wollte in meinem Linux Mint den Sound auf HDMI bringen wenn ein Kabel gesteckt wird.
Eine Regel hab ich erstellt: SUBSYSTEM=="drm", ACTION=="change", RUN+="/home/user/bin/sound"
Das wird getriggert aber der Nachteil ist schon mal klar: ich kann nicht erkennen ob an oder abgesteckt wird.
Aber leider ist das nocht nicht alles. Scheinbar wird nicht alles in diesem sound-script ausgeführt. Weder "HDMI=$(pactl list short sinks)" noch "pactl set-card-profile 0 output:hdmi-stereo" beispielsweise. Ein "date >> /home/user/myrule.log" aber schon !?!
Ich hab noch den Hinweis gefunden: udev führt diese Programme auf keinem aktiven Terminal aus und führt sie nicht im Kontext einer Shell aus. Ähm wie dann? Und wie mach ich das nun richtig?
Gruß, Arno
On Thu, Oct 14, 2021 at 04:58:51PM +0200, Arno wrote:
Hallo, wollte in meinem Linux Mint den Sound auf HDMI bringen wenn ein Kabel gesteckt wird.
Eine Regel hab ich erstellt: SUBSYSTEM=="drm", ACTION=="change", RUN+="/home/user/bin/sound"
Das wird getriggert aber der Nachteil ist schon mal klar: ich kann nicht erkennen ob an oder abgesteckt wird.
Aber leider ist das nocht nicht alles. Scheinbar wird nicht alles in diesem sound-script ausgeführt. Weder "HDMI=$(pactl list short sinks)" noch "pactl set-card-profile 0 output:hdmi-stereo" beispielsweise. Ein "date >> /home/user/myrule.log" aber schon !?!
Ich hab noch den Hinweis gefunden: udev führt diese Programme auf keinem aktiven Terminal aus und führt sie nicht im Kontext einer Shell aus. Ähm wie dann? Und wie mach ich das nun richtig?
Ich würde als erstes `pactl' mit kompletten Pfad angeben. Alternativ, und wenn Du sehen willst, ob's das ist, ein
echo "pactl: '$(which pactl)'" >> /home/user/myrule.log"
(Das ganze Verpackungsmaterial um which ist da, weil which ziemlich schweigsam ist, wenn's nichts findet).
lg - t
Am 14.10.21 um 17:36 schrieb tomas@tuxteam.de:
On Thu, Oct 14, 2021 at 04:58:51PM +0200, Arno wrote:
Hallo, wollte in meinem Linux Mint den Sound auf HDMI bringen wenn ein Kabel gesteckt wird.
Eine Regel hab ich erstellt: SUBSYSTEM=="drm", ACTION=="change", RUN+="/home/user/bin/sound"
Das wird getriggert aber der Nachteil ist schon mal klar: ich kann nicht erkennen ob an oder abgesteckt wird.
Aber leider ist das nocht nicht alles. Scheinbar wird nicht alles in diesem sound-script ausgeführt. Weder "HDMI=$(pactl list short sinks)" noch "pactl set-card-profile 0 output:hdmi-stereo" beispielsweise. Ein "date >> /home/user/myrule.log" aber schon !?!
Ich hab noch den Hinweis gefunden: udev führt diese Programme auf keinem aktiven Terminal aus und führt sie nicht im Kontext einer Shell aus. Ähm wie dann? Und wie mach ich das nun richtig?
Ich würde als erstes `pactl' mit kompletten Pfad angeben. Alternativ, und wenn Du sehen willst, ob's das ist, ein
echo "pactl: '$(which pactl)'" >> /home/user/myrule.log"
(Das ganze Verpackungsmaterial um which ist da, weil which ziemlich schweigsam ist, wenn's nichts findet).
lg
- t
Das war ein vielversprechender Ansatz. Tatsächlich findet er auch pactl: '/usr/bin/pactl'
Aber auch eine Änderung in
HDMI=$(/usr/bin/pactl list short sinks) echo $HDMI >> /home/user/myrule.log gibt immer nur eine leere Zeile aus!?!
Gruß, Arno
On Thu, Oct 14, 2021 at 06:18:56PM +0200, Arno wrote:
[...]
Das war ein vielversprechender Ansatz. Tatsächlich findet er auch pactl: '/usr/bin/pactl'
Aber auch eine Änderung in
HDMI=$(/usr/bin/pactl list short sinks) echo $HDMI >> /home/user/myrule.log gibt immer nur eine leere Zeile aus!?!
Nächster Ansatz: diese Bande (also pactl mit seinem PulseAudio) unterhält sich wahrscheinlich per DBUS oder ähnlich schreckliche Dinge. Vermutlich ist es "Dein" PulseAudio, also unter Deiner User-Session gestartet?
(a) dem pactl fehlen irgendwelche wichtige Umgebungsvariablen, um seinen Einstieg in den richtigen Bus zu finden (b) der unter root gestartete pactl darf gar nicht mit "Deinem" PulseAudio reden (diese DBUS-Programme gucken immer, wer am anderen Ende ist, das hat in den Kernel-Mailinglisten bereits Heiterkeit ausgelöst, meine ich mich zu erinnern (c) mit Vorsicht zu geniessen: ich kenne diese Dinge nur vom Hörensagen. Bin zwar ein Fan von öffentlichen Verkehrsmitteln, aber DBUS kommt mir nicht ins Haus ;-)
Vielleicht hat pactl ein --debug-Schalter, der ein bisschen mehr darüber erzählt, wo ihm der Schuh drückt.
lg -- t
Am 14.10.21 um 19:01 schrieb tomas@tuxteam.de:
On Thu, Oct 14, 2021 at 06:18:56PM +0200, Arno wrote:
[...]
Das war ein vielversprechender Ansatz. Tatsächlich findet er auch pactl: '/usr/bin/pactl'
Aber auch eine Änderung in
HDMI=$(/usr/bin/pactl list short sinks) echo $HDMI >> /home/user/myrule.log gibt immer nur eine leere Zeile aus!?!
Nächster Ansatz: diese Bande (also pactl mit seinem PulseAudio) unterhält sich wahrscheinlich per DBUS oder ähnlich schreckliche Dinge. Vermutlich ist es "Dein" PulseAudio, also unter Deiner User-Session gestartet?
(a) dem pactl fehlen irgendwelche wichtige Umgebungsvariablen, um seinen Einstieg in den richtigen Bus zu finden (b) der unter root gestartete pactl darf gar nicht mit "Deinem" PulseAudio reden (diese DBUS-Programme gucken immer, wer am anderen Ende ist, das hat in den Kernel-Mailinglisten bereits Heiterkeit ausgelöst, meine ich mich zu erinnern (c) mit Vorsicht zu geniessen: ich kenne diese Dinge nur vom Hörensagen. Bin zwar ein Fan von öffentlichen Verkehrsmitteln, aber DBUS kommt mir nicht ins Haus ;-)
Vielleicht hat pactl ein --debug-Schalter, der ein bisschen mehr darüber erzählt, wo ihm der Schuh drückt.
lg -- t
ja, in der Tat brint ein sudo pactl list Verbindungsfehler: Verbindung verweigert pa_context_new() fehlgeschlagen: Verbindung verweigert
Naja, vielleicht mache ich es mir doch einfach und lege das Toogle-Script auf eine Taste und verzichte auf den vollen Luxus.
Keine Ahnung warum der Ton bei Andreas automatisch durchflutscht und bei mir nicht. Vielleicht weil ich kein Clonen sondern Erweiterung des Screens machen?
Gruß, Arno
Hi Arno,
wollte in meinem Linux Mint den Sound auf HDMI bringen wenn ein Kabel gesteckt wird.
Öhm.. ich hab einen wenige Jahre alten 4K-HDMI-Monitor mit Sound über HDMI und aktuelles Linux Mint auf einem Intel NUC 8. Generation und Sound hat da immer funktioniert - was mach ich falsch? ;-) "Treiberverwaltung" ist leer, nix extra installiert! Man bekommt wohl auch mal was geschenkt :)
On 10/14/21 4:58 PM, Arno wrote:
Hallo, wollte in meinem Linux Mint den Sound auf HDMI bringen wenn ein Kabel gesteckt wird.
Eine Regel hab ich erstellt: SUBSYSTEM=="drm", ACTION=="change", RUN+="/home/user/bin/sound"
Das wird getriggert aber der Nachteil ist schon mal klar: ich kann nicht erkennen ob an oder abgesteckt wird.
Aber leider ist das nocht nicht alles. Scheinbar wird nicht alles in diesem sound-script ausgeführt. Weder "HDMI=$(pactl list short sinks)" noch "pactl set-card-profile 0 output:hdmi-stereo" beispielsweise.
pactl führt das für root aus (und für den läuft gerade kein pulseaudio) und deswegen zieht das nicht füë deinen User?
Nur so ein Verdacht ...
Liebe Grüße Uwe
Am 14.10.21 um 23:05 schrieb Uwe Kleine-König:
On 10/14/21 4:58 PM, Arno wrote:
Hallo, wollte in meinem Linux Mint den Sound auf HDMI bringen wenn ein Kabel gesteckt wird.
Eine Regel hab ich erstellt: SUBSYSTEM=="drm", ACTION=="change", RUN+="/home/user/bin/sound"
Das wird getriggert aber der Nachteil ist schon mal klar: ich kann nicht erkennen ob an oder abgesteckt wird.
Aber leider ist das nocht nicht alles. Scheinbar wird nicht alles in diesem sound-script ausgeführt. Weder "HDMI=$(pactl list short sinks)" noch "pactl set-card-profile 0 output:hdmi-stereo" beispielsweise.
pactl führt das für root aus (und für den läuft gerade kein pulseaudio) und deswegen zieht das nicht füë deinen User?
Nur so ein Verdacht ...
Liebe Grüße Uwe
Ja, genau. Deswegen kommt auch das pactl mit sudo ausgeführt eine Fehlermeldung.
Das verrückte ist: Als ich gestern das HDMI abzog wechselte der Sound tatächlich. Und beim Anstecken wieder zurück! WTF!!! Die udev-Rule war noch aktiv aber das Action-Script war inactiv (exit 0). Und das nachdem ich sicher ein halbes Jahr das immer manuell über die Klangeinstellung machen musste. Es lebt. Na mal sehen wie nachhaltig das ist. Wie gesagt, Plan B ist ein simples toogle script auf eine Taste (ALT-H) zu legen.
Zumindest wieder dazugelernt.
Grüße, Arno
Am 14.10.21 um 23:05 schrieb Uwe Kleine-König:
On 10/14/21 4:58 PM, Arno wrote:
Hallo, wollte in meinem Linux Mint den Sound auf HDMI bringen wenn ein Kabel gesteckt wird.
Eine Regel hab ich erstellt: SUBSYSTEM=="drm", ACTION=="change", RUN+="/home/user/bin/sound"
Das wird getriggert aber der Nachteil ist schon mal klar: ich kann nicht erkennen ob an oder abgesteckt wird.
Aber leider ist das nocht nicht alles. Scheinbar wird nicht alles in diesem sound-script ausgeführt. Weder "HDMI=$(pactl list short sinks)" noch "pactl set-card-profile 0 output:hdmi-stereo" beispielsweise.
pactl führt das für root aus (und für den läuft gerade kein pulseaudio) und deswegen zieht das nicht füë deinen User?
Nur so ein Verdacht ...
Liebe Grüße Uwe
Andere Idee: Kann man denn umgekehrt zu sudo das pactl im script auch unter "user" ausführen? Ist ein Single-user Laptop ;)
Grüße, Arno
On Fri, Oct 15, 2021 at 08:13:08AM +0200, Arno wrote:
[...]
Andere Idee: Kann man denn umgekehrt zu sudo das pactl im script auch unter "user" ausführen? Ist ein Single-user Laptop ;)
Das hängt davon ab, wie pactl herausfindet, für wen es unterwegs ist. Vielleicht will es eine Umgebungsvariable, die ihm das sagt (vgl. ssh-agent oder gpg-agent). Vielleicht hat es einen viel barockeren Mechanismus (im Dunstkreis des Freedesktops würde ich zweites befürchten: die neigen dazu Dinge in diesem [1] Stil neu zu erfinden, ein Grund für mich, denen aus dem Weg zu gehen ;-)
lg
[1] https://upload.wikimedia.org/wikipedia/commons/a/a9/Rube_Goldberg%27s_%22Sel...
-- t
On 10/15/21 8:13 AM, Arno wrote:
Andere Idee: Kann man denn umgekehrt zu sudo das pactl im script auch unter "user" ausführen? Ist ein Single-user Laptop ;)
Da systemd-Units auch durch cgroups isoliert werden, musst Du Dir vielleicht systemd-run mal anschauen.
Liebe Grüße Uwe