Dans un esprit de divulgation complète, je viens de poster cette question sur les forums ubuntu, mais je pense que plus de têtes qui y travaillent ne pourraient pas faire de mal.
J'ai une configuration multi-sièges qui fonctionne assez bien. Les périphériques d'entrée enfichables à chaud fonctionnent comme prévu et autres. Le seul problème que je ne parviens toujours pas à résoudre est d'obtenir l'audio pour chaque siège.
Voici un résumé de mes tentatives pour faire fonctionner l'audio:
Configurez dynamiquement ~ / .pulse / default.pa en fonction de $ DISPLAY auquel l'utilisateur se connecte.
Chargez pulseaudio comme une instance à l'échelle du système.
- Impossible de faire fonctionner cela. Aucun matériel audio n'était accessible aux utilisateurs.
Utilisez les règles udev pour marquer les sièges dans ConsoleKit. Suivez les directives udev trouvées ici: http://www.freedesktop.org/wiki/Software/systemd/multiseat
- Je ne pensais pas que cela fonctionnerait, bien qu'il soit "garanti" de fonctionner par quelqu'un dans irc.freenode #pulseaudio
Aucune de ces tentatives n'a abouti, c'est pourquoi je me tourne maintenant vers la communauté pour obtenir de l'aide. Il est tout à fait possible que les méthodes suggérées fonctionnent et je viens de gâcher un aspect, idk. C'est la dernière pièce du puzzle qui est nécessaire avant de pouvoir mettre à jour la page MultiseatX pour inclure des instructions pour Ubuntu 12.04.
Ma compréhension de la situation: l'accès à pulseaudio est limité à la session active comme indiqué par ConsoleKit (quelque chose sur une ACL). CK ne peut marquer qu'une session comme active à la fois. Ce simple petit fait m'amène à penser que la solution devrait impliquer que pulseaudio soit exécuté comme une instance à l'échelle du système. Chaque utilisateur doit se connecter au serveur d'impulsions et être limité à un sous-ensemble de tout le matériel. Peut-être que chaque utilisateur se connecte au serveur d'impulsions via localhost, idk. Je sais que quelles que soient mes tentatives et leurs résultats infructueux, j'ai toujours pu utiliser sudo aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Center.wav
pour jouer quelque chose à n'importe quel matériel.
Je saisis les pailles et je suis maintenant aux derniers poils que je peux tirer de ma tête. S'il vous plaît, aidez-moi à comprendre cela afin que nous puissions partager la richesse. Toute information supplémentaire nécessaire sera fournie à votre demande.
la source
/etc/pulse
, pas dans HOME.Réponses:
J'ai passé de nombreuses heures à rechercher en ligne, à tester différentes configurations et à parler aux développeurs de Pulseaudio. L'essentiel est que l'exécution de pulseaudio en mode utilisateur normal permettra uniquement à la session active marquée par ConsoleKit d'accéder au matériel audio. Étant donné que ConsoleKit actuel ne peut marquer qu'une session comme active à la fois, cela signifie que nous devons exécuter une instance de pulseaudio à l'échelle du système. L'avantage: chaque siège peut avoir un son individuel. L'inconvénient: TOUT le matériel audio est disponible pour tout utilisateur et peut être manipulé à volonté. Ce n'est pas une situation idéale pour un cybercafé ou tout autre lieu public où la sécurité est une préoccupation réelle. Gardez cela à l'esprit lorsque vous créez votre politique de sécurité de site. Il pourrait être prudent de limiter l'exécution de pavucontrol aux administrateurs uniquement.
Comme toujours, effectuez une sauvegarde de tous vos fichiers de configuration par défaut. Si vous avez bricolé vos configurations sans sauvegarder, vous pouvez récupérer le paquet pulseaudio avec apt-get -d install pulseaudio. Cela téléchargera le package (vers / var / cache / archives / apt) uniquement et vous pourrez extraire le contenu pour récupérer les configurations par défaut. Sachez que client.conf n'y est pas inclus.
Pour exécuter pulseaudio en tant que démon à l'échelle du système, nous devons modifier quelques fichiers.
1.) / etc / default / pulseaudio
2.) /etc/pulse/daemon.conf - Voir man pulse-daemon.conf pour plus d'informations.
3.) /etc/pulse/client.conf
Nous devons également ajouter des utilisateurs au groupe d'accès par impulsions.
Maintenant que tous les utilisateurs peuvent accéder au matériel audio, nous devons sélectionner le matériel que chaque utilisateur utilisera. Cela peut être fait en utilisant pavucontrol. Veuillez noter que les paramètres sont stockés PAR UTILISATEUR et ne suivront pas le siège. Si les utilisateurs changent de siège, vous devrez resélectionner le matériel audio souhaité.
Commentaires supplémentaires sur Pulseaudio
J'avais espéré qu'il y aurait une solution plus élégante pour faire fonctionner l'audio par siège. L'utilisation d'un Pulseaudio à l'échelle du système en multisiège présente de nombreux inconvénients et n'est pas entièrement stable entre les redémarrages. J'avais tenté de démarrer une instance à l'échelle du système et de faire en sorte que les instances utilisateur s'y connectent en tant que serveur via localhost. Cela ne semble pas fonctionner puisque lorsque pulseaudio --start est exécuté, il source daemon.conf.
Concernant ConsolKit
Le problème que nous voyons lors de l'exécution d'un son pulseaudio normal par utilisateur est qu'un siège a accès au matériel et que tous les autres ont une sortie factice. Cela est dû au fait que ConsoleKit n'est pas entièrement conscient du siège. CK considère tous nos sièges comme des sessions de siège1 et ne peut marquer qu'une session comme active. Ce fait peut être vu en exécutant getfacl / dev / snd / *. L'idée m'est venue à l'esprit que nous pourrions être en mesure de modifier l'acl des fichiers / dev / snd / appropriés en fonction de $ DISPLAY qu'un utilisateur particulier utilise. C'est une option que je n'ai pas explorée. Veuillez envisager de contribuer à la cause multi-sièges en explorant cette hypothèse et en éditant le document avec vos résultats.
Il existe des branches multisièges pour ConsoleKit , GDM-2.3 et GDM-3.x qui devraient prévoir une fonctionnalité multisièges automatique.
Notes complémentaires
1.) Il serait sage d'interdire également aux utilisateurs de charger les modules DISALLOW_MODULE_LOADING = 1.
2.) Autospawn = no n'est pas entièrement nécessaire comme le montre mon exemple de fichier. Cela ne pose aucun problème.
la source
Il y a un patch à ConsoleKit pour ajouter un support multi-sièges; cela lui permettra de signaler tous les sièges actifs comme actifs. Cela résoudra peut-être votre problème. Il a besoin de coopération avec le gestionnaire d'affichage, et il existe un correctif pour les anciennes versions de GDM qui ajoute ce support.
J'ai travaillé sur plusieurs sièges dans Natty (11.04) en utilisant des packages ConsoleKit et GDM modifiés à partir d'un PPA . Je n'ai pas encore mis à niveau depuis Natty - il m'a fallu beaucoup de temps pour comprendre comment le faire fonctionner, et je crains que LightDM ne fonctionne pas avec le ConsoleKit patché.
EDIT: Je dois noter que Fedora 17 a des fonctionnalités multisièges impressionnantes, dont certaines seront en Quantal. Ils ont une page wiki décrivant leur approche . Ubuntu ne peut pas simplement copier l'approche de Fedora car cela nécessiterait des changements importants; Fedora utilise systemd et GDM tandis qu'Ubuntu utilise upstart et LightDM.
la source
J'essayais récemment de résoudre le problème avec PulseAudio et Multiseat. Voyant qu'il n'y avait pas de solution élégante, ma solution était d'utiliser le réseau.
Cette solution convient à mon scénario car je suis l'utilisateur le plus souvent dans la machine et mon siège est le plus souvent connecté. Et mon siège est configuré pour gaucher et personne d'autre ne l'utilise.
Dans mon
~/.config/pulse/default.pa
j'ai copié la configuration système de/etc/pulse/default.pa
et ajouté la ligne suivante:Dans les paramètres pulseaudio des autres utilisateurs, ajoutez un tunnel - ou plusieurs, si c'est ce dont vous avez besoin - avec quelque chose le long:
Modifiez le nom du récepteur pour qu'il corresponde à celui de votre machine. Vous pouvez décider de configurer un nom plus convivial - ce qui signifie que vous devez le configurer dans votre fichier de paramètres pulseaudio - mais je viens d'utiliser le nom donné en le regardant avec
pacmd list-sinks
.Ce n'est pas une solution élégante, j'essaierai probablement d'utiliser une configuration à l'échelle du système comme suggéré par @Anthony dans mon prochain rig, mais si vous avez beaucoup de cartes et que vous voulez juste partager un ou quelques puits / source, c'est un solution plus "chirurgicale".
la source