Im Geiste der vollständigen Offenlegung habe ich diese Frage gerade in den Ubuntu-Foren gepostet , aber ich glaube, mehr Köpfe, die daran arbeiten, können nicht schaden.
Ich habe ein Multi-Seat-Setup, das recht gut funktioniert. Das Hot-Plugging von Eingabegeräten funktioniert wie erwartet und so weiter. Das einzige Problem, das ich immer noch nicht lösen kann, ist das Abrufen der Audiodaten für jeden Sitzplatz.
Hier ist eine Zusammenfassung meiner Versuche, Audio zum Laufen zu bringen:
Stellen Sie ~ / .pulse / default.pa dynamisch ein, basierend auf dem $ DISPLAY, unter dem sich der Benutzer anmeldet.
- Einzelheiten finden Sie in diesem Pastebin .
Laden Sie pulseaudio als systemweite Instanz.
- Konnte das nicht zum Laufen bringen. Keine der Audio-Hardware war für die Benutzer zugänglich.
Verwenden Sie udev-Regeln, um Plätze in ConsoleKit zu markieren. Die folgenden udev-Richtlinien finden Sie hier: http://www.freedesktop.org/wiki/Software/systemd/multiseat
- Ich dachte nicht, dass dies funktionieren würde, obwohl es "garantiert" von jemandem in irc.freenode #pulseaudio funktioniert
Keiner dieser Versuche war erfolgreich. Deshalb wende ich mich jetzt an die Community, um Hilfe zu erhalten. Es ist durchaus möglich, dass die vorgeschlagenen Methoden funktionieren, und ich habe nur einen Teil davon durcheinander gebracht, Idk. Dies ist der letzte Teil des Puzzles, der benötigt wird, bevor ich die MultiseatX-Seite mit Anweisungen für Ubuntu 12.04 aktualisieren kann.
Mein Verständnis zur Situation: Der Zugriff auf pulseaudio ist auf die aktive Sitzung beschränkt, die durch ConsoleKit gekennzeichnet ist (etwas über eine ACL). CK kann jeweils nur eine Sitzung als aktiv markieren. Diese einfache kleine Tatsache lässt mich glauben, dass die Lösung darin bestehen sollte, dass pulseaudio als systemweite Instanz ausgeführt wird. Jeder Benutzer sollte eine Verbindung zum Pulsserver herstellen und sich auf eine Teilmenge der gesamten Hardware beschränken. Möglicherweise verbindet sich jeder Benutzer über localhost, idk mit dem Pulsserver. Ich weiß, dass ich unabhängig von meinen Versuchen und den fehlgeschlagenen Ergebnissen immer sudo aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Center.wav
etwas auf der Hardware abspielen konnte .
Ich greife nach Strohhalmen und bin jetzt bis zu den letzten Haaren, die ich mir aus dem Kopf ziehen kann. Bitte helfen Sie mir, das herauszufinden, damit wir den Reichtum teilen können. Alle zusätzlichen Informationen werden auf Ihre Anfrage bereitgestellt.
quelle
/etc/pulse
und nicht in HOME sein.Antworten:
Ich habe viele Stunden online recherchiert, verschiedene Setups getestet und mit Pulseaudio-Entwicklern gesprochen. Das Fazit ist, dass beim Ausführen von pulseaudio im normalen Benutzermodus nur die von ConsoleKit markierte aktive Sitzung auf die Audio-Hardware zugreifen kann. Da das aktuelle ConsoleKit immer nur eine Sitzung als aktiv markieren kann, müssen wir eine systemweite Instanz von pulseaudio ausführen. Der Vorteil: Jeder Sitzplatz kann individuell ausgestattet werden. Der Nachteil: ALLE Audio-Hardware steht jedem Benutzer zur Verfügung und kann nach Belieben manipuliert werden. Dies ist keine ideale Situation für ein Internetcafé oder eine andere öffentliche Umgebung, in der Sicherheit ein echtes Problem darstellt. Beachten Sie dies, wenn Sie Ihre Site-Sicherheitsrichtlinie erstellen. Es kann ratsam sein, die Ausführung von Pavucontrol nur auf Administratoren zu beschränken.
Erstellen Sie wie immer eine Sicherungskopie aller Ihrer Standardkonfigurationsdateien. Wenn Sie mit Ihren Konfigurationen gearbeitet haben, ohne eine Sicherungskopie zu erstellen, können Sie das pulseaudio-Paket mit apt-get -d install pulseaudio abrufen. Dadurch wird nur das Paket (nach / var / cache / archives / apt) heruntergeladen, und Sie können den Inhalt extrahieren, um die Standardkonfigurationen abzurufen. Beachten Sie, dass client.conf dort nicht enthalten ist.
Um pulseaudio als systemweiten Daemon auszuführen, müssen einige Dateien bearbeitet werden.
1.) / etc / default / pulseaudio
2.) /etc/pulse/daemon.conf - Weitere Informationen finden Sie unter man pulse-daemon.conf.
3.) /etc/pulse/client.conf
Wir müssen auch Benutzer zur Pulszugriffsgruppe hinzufügen.
Nachdem alle Benutzer auf die Audio-Hardware zugreifen können, müssen wir die Hardware auswählen, die jeder Benutzer verwenden soll. Dies kann mit pavucontrol erfolgen. Bitte beachten Sie, dass die Einstellungen PRO BENUTZER gespeichert werden und nicht dem Sitzplatz folgen. Wenn Benutzer die Plätze wechseln, müssen Sie die gewünschte Audio-Hardware erneut auswählen.
Zusätzliche Kommentare zu Pulseaudio
Ich hatte gehofft, dass es eine elegantere Lösung geben würde, um die Audiowiedergabe pro Sitz zu optimieren. Die Verwendung eines systemweiten Pulseaudio in Multiseat hat viele Nachteile und ist zwischen Neustarts nicht ganz stabil. Ich hatte versucht, eine systemweite Instanz zu starten und Benutzerinstanzen über localhost als Server mit ihr zu verbinden. Das scheint nicht zu funktionieren, da beim Ausführen von pulseaudio --start die daemon.conf-Quelle verwendet wird.
In Bezug auf ConsolKit
Das Problem, das wir sehen, wenn ein normales Pro-Benutzer-Pulseaudio ausgeführt wird, ist, dass ein Sitz Zugriff auf die Hardware hat und alle anderen über eine Dummy-Ausgabe verfügen. Dies liegt daran, dass ConsoleKit den Sitz nicht vollständig erkennt. CK betrachtet alle unsere Plätze als Sitzungen von Platz 1 und kann nur eine Sitzung als aktiv markieren. Diese Tatsache kann durch Ausführen von getfacl / dev / snd / * festgestellt werden. Mir kam der Gedanke, dass wir möglicherweise die ACL der entsprechenden / dev / snd / -Dateien bearbeiten können, basierend darauf, welches $ DISPLAY ein bestimmter Benutzer verwendet. Dies ist eine Option, die ich nicht untersucht habe. Bitte erwägen Sie, einen Beitrag zur Multiseat-Ursache zu leisten, indem Sie diese Hypothese untersuchen und das Dokument mit Ihren Ergebnissen bearbeiten.
Es gibt Multiseat-Zweige für ConsoleKit , GDM-2.3 und GDM-3.x , die eine automatische Multiseat-Funktionalität bieten sollen.
Zusätzliche Bemerkungen
1.) Es ist ratsam, Benutzern auch das Laden von Modulen zu verbieten. DISALLOW_MODULE_LOADING = 1.
2.) autospawn = no ist nicht unbedingt notwendig, wie in meiner Beispieldatei zu sehen. Es verursacht keine Probleme.
quelle
ConsoleKit enthält einen Patch, mit dem Multiseat-Unterstützung hinzugefügt werden kann. Auf diese Weise können alle aktiven Sitze als aktiv gemeldet werden. Vielleicht behebt dies Ihr Problem. Es muss mit dem Display Manager zusammengearbeitet werden, und es gibt einen Patch für alte Versionen von GDM , der diese Unterstützung hinzufügt.
Ich habe Multiseat in Natty (11.04) mit modifizierten ConsoleKit- und GDM-Paketen von einem PPA zum Laufen gebracht . Ich habe noch kein Upgrade von Natty durchgeführt - es dauerte lange, bis ich herausgefunden hatte, wie es funktioniert, und ich befürchte, dass LightDM mit dem gepatchten ConsoleKit nicht funktioniert.
EDIT: Ich sollte beachten, dass Fedora 17 einige beeindruckende Multiseat-Funktionen hat, von denen einige in Quantal sein werden. Sie haben eine Wiki-Seite, die ihre Vorgehensweise beschreibt . Ubuntu kann Fedoras Ansatz nicht einfach kopieren, da dies erhebliche Änderungen erforderlich machen würde. Fedora verwendet systemd und GDM, während Ubuntu upstart und LightDM verwendet.
quelle
Ich habe kürzlich versucht, das Problem mit PulseAudio und Multiseat zu lösen. Da es keine elegante Lösung gab, bestand meine Problemumgehung darin, das Netzwerk zu verwenden.
Diese Lösung passt zu meinem Szenario, da ich der Benutzer bin, der sich am häufigsten in der Maschine aufhält, und mein Sitz am häufigsten angemeldet ist. Mein Sitz ist für Linkshänder konfiguriert und wird von niemand anderem verwendet.
In my habe
~/.config/pulse/default.pa
ich die Systemkonfiguration von kopiert/etc/pulse/default.pa
und folgende Zeile hinzugefügt:Fügen Sie in den pulseaudio-Einstellungen anderer Benutzer einen Tunnel hinzu - oder mehrere, falls erforderlich - und fügen Sie Folgendes hinzu:
Ändern Sie den Namen der Spüle so, dass er mit dem Namen in Ihrem Computer übereinstimmt. Sie können sich dafür entscheiden, einen freundlicheren Namen zu konfigurieren - was bedeutet, dass Sie diesen in Ihrer pulseaudio-Einstellungsdatei konfigurieren sollten -, aber ich habe nur den angegebenen Namen verwendet, indem ich ihn mit angesehen habe
pacmd list-sinks
.Es ist keine elegante Lösung, ich werde wahrscheinlich versuchen, eine systemweite Konfiguration wie von @Anthony vorgeschlagen in meinem nächsten Rig zu verwenden, aber wenn Sie viele Karten haben und nur eine oder wenige Senken / Quellen teilen möchten, ist dies eine mehr "chirurgische" Lösung.
quelle