En el espíritu de la divulgación completa, acabo de publicar esta pregunta en los foros de ubuntu, pero creo que más cabezas trabajando en eso no podrían doler.
Tengo una configuración de varios asientos que funciona bastante bien. Los dispositivos de entrada de conexión en caliente funcionan como se espera y tal. El único problema que aún no puedo resolver es obtener el audio para cada asiento.
Aquí hay un resumen de mis intentos de hacer que el audio funcione:
Haga ~ / .pulse / default.pa configurado dinámicamente en función de $ DISPLAY en el que el usuario inicia sesión.
- Vea este pastebin para los detalles.
Cargue pulseaudio como una instancia de todo el sistema.
- No se pudo lograr que esto funcione. Ninguno de los equipos de audio era accesible para los usuarios.
Use las reglas de udev para marcar asientos en ConsoleKit. Siguiendo las pautas de udev que se encuentran aquí: http://www.freedesktop.org/wiki/Software/systemd/multiseat
- No pensé que esto funcionaría, aunque estaba "garantizado" para trabajar en irc.freenode #pulseaudio
Ninguno de esos intentos tuvo éxito, por eso ahora recurro a la comunidad en busca de ayuda. Es muy posible que los métodos sugeridos funcionen y simplemente estropeé algún aspecto, idk. Esta es la última pieza del rompecabezas que se necesita antes de que pueda ir y actualizar la página MultiseatX para incluir instrucciones para Ubuntu 12.04.
Comprendo la situación: el acceso a pulseaudio está restringido a la sesión activa marcada por ConsoleKit (algo sobre una ACL). CK solo puede marcar una sesión como activa a la vez. Este simple hecho de la vida me lleva a creer que la solución debería implicar que pulseaudio se ejecute como una instancia de todo el sistema. Cada usuario debe conectarse al servidor de impulsos y limitarse a un subconjunto de todo el hardware. Tal vez cada usuario se conecta al servidor de impulsos a través de localhost, idk. Sé que, independientemente de mis intentos y sus resultados fallidos, siempre pude usar sudo aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Center.wav
para reproducir algo en cualquier hardware.
Me aferro a las pajitas y ahora estoy en los últimos pelos que puedo sacar de mi cabeza. Por favor, ayúdame a resolver esto para que podamos compartir la riqueza. Cualquier información adicional necesaria se proporcionará a su solicitud.
fuente
/etc/pulse
, no en INICIO.Respuestas:
He pasado muchas horas investigando en línea, probando varias configuraciones y hablando con los desarrolladores de Pulseaudio. La conclusión es que ejecutar pulseaudio en modo de usuario normal permitirá que solo la sesión activa marcada por ConsoleKit acceda al hardware de audio. Dado que ConsoleKit actual solo puede marcar una sesión como activa a la vez, esto significa que debemos ejecutar una instancia de pulseaudio en todo el sistema. La ventaja: cada asiento puede tener audio individual. La desventaja: TODO el hardware de audio está disponible para cualquier usuario y puede manipularse A TU VOLUNTAD. Esta no es una situación ideal para un cibercafé u otro entorno público donde la seguridad es una preocupación real. Tenga esto en cuenta al crear la política de seguridad de su sitio. Puede ser prudente restringir la ejecución de pavucontrol solo a administradores.
Como siempre, haga una copia de seguridad de todos sus archivos de configuración predeterminados. Si ha manipulado sus configuraciones sin hacer una copia de seguridad, puede recuperar el paquete pulseaudio con apt-get -d install pulseaudio. Esto descargará el paquete (a / var / cache / archives / apt) solamente y puede extraer el contenido para recuperar las configuraciones predeterminadas. Tenga en cuenta que client.conf no está incluido allí.
Para ejecutar pulseaudio como un demonio en todo el sistema, necesitamos editar algunos archivos.
1.) / etc / default / pulseaudio
2.) /etc/pulse/daemon.conf - Vea man pulse-daemon.conf para más información.
3.) /etc/pulse/client.conf
También necesitamos agregar usuarios al grupo de acceso por pulsos.
Ahora que todos los usuarios pueden acceder al hardware de audio, debemos seleccionar el hardware que usará cada usuario. Esto se puede hacer usando pavucontrol. Tenga en cuenta que la configuración se almacena POR USUARIO y no seguirá el asiento. Si los usuarios cambian de asiento, deberá volver a seleccionar el hardware de audio deseado.
Comentarios adicionales sobre Pulseaudio
Esperaba que hubiera una solución más elegante para que el audio por asiento funcionara. El uso de Pulseaudio en todo el sistema en varios asientos tiene muchos inconvenientes y no es completamente estable entre reinicios. Intenté iniciar una instancia de todo el sistema y hacer que las instancias de usuario se conectaran a ella como un servidor a través de localhost. Eso no parece funcionar, ya que cuando pulseaudio --start se ejecuta, genera daemon.conf.
Sobre ConsolKit
El problema que vemos al ejecutar un pulseaudio normal por usuario es que un asiento tiene acceso al hardware y todos los demás tienen salida ficticia. Esto se debe a que ConsoleKit no es completamente consciente del asiento. CK considera todos nuestros asientos como sesiones de seat1 y solo puede marcar una sesión como activa. Este hecho se puede ver ejecutando getfacl / dev / snd / *. Se me ocurrió pensar que podríamos editar el archivo acl de los archivos / dev / snd / apropiados en función de qué $ DISPLAY está utilizando un usuario en particular. Esta es una opción que no he explorado. Considere contribuir a la causa de los múltiples asientos explorando esta hipótesis y editando el documento con sus hallazgos.
Existen ramificaciones de asientos múltiples para ConsoleKit , GDM-2.3 y GDM-3.x que deberían proporcionar la funcionalidad automática de asientos múltiples .
Notas adicionales
1.) Sería conveniente no permitir que los usuarios carguen módulos DISALLOW_MODULE_LOADING = 1.
2.) autospawn = no no es completamente necesario como se ve en mi archivo de ejemplo. No causa problemas.
fuente
Hay un parche en ConsoleKit para agregar soporte multiseat; esto le permitirá informar todos los asientos activos como activos. Quizás esto solucione su problema. Necesita cooperación con el administrador de pantalla, y hay un parche para versiones antiguas de GDM que agrega este soporte.
Obtuve varios asientos trabajando en Natty (11.04) usando paquetes modificados ConsoleKit y GDM de un PPA . Todavía no me he actualizado de Natty: me llevó mucho tiempo descubrir cómo hacerlo funcionar, y me preocupa que LightDM no funcione con el Kit de consola parcheado.
EDITAR: Debo señalar que Fedora 17 tiene algunas características impresionantes de varios asientos, algunas de las cuales estarán en Quantal. Tienen una página wiki que describe su enfoque . Ubuntu no puede simplemente copiar el enfoque de Fedora porque requeriría cambios significativos; Fedora usa systemd y GDM, mientras que Ubuntu usa upstart y LightDM.
fuente
Recientemente estuve tratando de resolver el problema con PulseAudio y Multiseat. Al ver que no había una solución elegante, mi solución era usar la red.
Esta solución se adapta a mi situación porque soy el usuario que con mayor frecuencia está en la máquina y mi asiento se conecta con mayor frecuencia. Y mi asiento está configurado para zurdos y nadie más lo usa.
En mi
~/.config/pulse/default.pa
copié la configuración del sistema/etc/pulse/default.pa
y agregué la siguiente línea:En la configuración de pulseaudio de otros usuarios, agregue un túnel, o varios, si eso es lo que necesita, con algo junto:
Cambie el nombre del fregadero para que coincida con el de su máquina. Puede decidir configurar un nombre más amigable, lo que significa que debe configurarlo en su archivo de configuración de pulseaudio, pero acabo de usar el nombre dado al mirarlo
pacmd list-sinks
.No es una solución elegante, probablemente intentaré usar una configuración de todo el sistema como lo sugirió @Anthony en mi próximo equipo, pero si tienes muchas tarjetas y solo quieres compartir una o pocas sumidero / fuente, esta es una más solución "quirúrgica".
fuente