Bagaimana cara mengkonfigurasi suara dengan PulseAudio dan Multiseat?


12

Dalam semangat pengungkapan penuh, saya hanya memposting pertanyaan ini ke forum ubuntu, tetapi saya pikir lebih banyak kepala yang mengerjakannya tidak ada salahnya.

Saya memiliki pengaturan multi-kursi yang bekerja dengan cukup baik. Perangkat input plugging panas berfungsi seperti yang diharapkan dan semacamnya. Satu-satunya masalah yang saya masih belum dapat menyelesaikannya adalah mendapatkan audio untuk setiap kursi.

Berikut ini ringkasan upaya saya untuk membuat audio berfungsi:

  1. Buat ~ / .pulse / default.pa dikonfigurasikan secara dinamis berdasarkan $ DISPLAY tempat pengguna login.

  2. Memuat pulseaudio sebagai instance seluruh sistem.

    • Tidak bisa menjalankan ini. Tidak ada perangkat keras audio yang dapat diakses oleh pengguna.
  3. Gunakan aturan udev untuk menandai kursi di ConsoleKit. Pedoman udev berikut ditemukan di sini: http://www.freedesktop.org/wiki/Software/systemd/multiseat

    • Saya tidak berpikir ini akan berhasil, meskipun "dijamin" bekerja oleh seseorang di irc.freenode #pulseaudio

Tak satu pun dari upaya itu menghasilkan kesuksesan, itulah sebabnya saya sekarang meminta bantuan kepada komunitas. Sangat mungkin bahwa metode yang disarankan berfungsi dan saya hanya mengacaukan beberapa aspek, idk. Ini adalah bagian terakhir dari teka-teki yang diperlukan sebelum saya bisa pergi dan memperbarui halaman MultiseatX untuk memasukkan instruksi untuk Ubuntu 12.04.

Pemahaman saya tentang situasi ini: Akses ke pulseaudio terbatas pada sesi aktif yang ditandai oleh ConsoleKit (sesuatu tentang ACL). CK hanya dapat menandai satu sesi sebagai aktif pada suatu waktu. Fakta kecil kehidupan yang sederhana ini membuat saya percaya bahwa solusinya harus melibatkan pulseaudio yang dijalankan sebagai turunan sistem. Setiap pengguna harus terhubung ke server pulsa dan dibatasi untuk subset dari semua perangkat keras. Mungkin setiap pengguna terhubung ke server pulsa melalui localhost, idk. Saya tahu bahwa terlepas dari usaha saya dan hasil yang gagal, saya selalu dapat menggunakan sudo aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Center.wavuntuk memainkan sesuatu ke salah satu perangkat keras.

Aku mencengkeram sedotan dan sekarang turun ke beberapa helai rambut terakhir yang bisa aku tarik keluar dari kepalaku. Tolong, bantu saya mencari tahu ini sehingga kami dapat berbagi kekayaan. Setiap informasi tambahan yang diperlukan akan diberikan atas permintaan Anda.


Apakah saya mengerti dengan benar: kartu suara 2 kursi 2? Apakah Anda mengganti default.pa dengan file khusus yang kecil atau menambahkan baris khusus ke default.pa yang tidak berubah?
Takkat

Saya berharap saya akan memperhatikan komentar di sini ... Jadi ya, ini adalah 2 kartu suara. Satu adalah audio onboard, yang lain adalah audio dari HDMI di GPU. File-file kustom kecil di ~ / .pulse tetapi /etc/pulse/default.pa tidak tersentuh. Jadi dalam kasus itu, sejauh yang saya mengerti, ~ / .pulse / default.pa tidak akan menggantikan /etc/pulse/default.pa, melainkan bergabung dengan itu.
Anthony

Coba dengan dua file .pa khusus dengan konten lengkap dari default.pa di mana bagian perangkat yang berbeda seperti dalam dua file yang ada ditambahkan (jika mereka tidak digabung).
Takkat

Juga, default.pa dibaca oleh pulseaudio dijalankan dalam mode sistem-lebar harus dalam /etc/pulse, bukan di HOME.
Takkat

Saya memilikinya atm sebagian besar bekerja. Saya akan melaporkan kembali ketika semuanya telah disetrika.
Anthony

Jawaban:


7

Saya telah menghabiskan banyak waktu untuk meneliti online, menguji berbagai pengaturan dan berbicara dengan pengembang Pulseaudio. Intinya, menjalankan pulseaudio dalam mode pengguna normal hanya akan memungkinkan sesi aktif yang ditandai oleh ConsoleKit untuk mengakses perangkat keras audio. Karena ConsoleKit saat ini hanya dapat menandai satu sesi sebagai aktif pada suatu waktu, ini berarti bahwa kita harus menjalankan instance pulseaudio di seluruh sistem. Sisi baiknya: Setiap kursi dapat memiliki audio tersendiri. Kelemahannya: SEMUA perangkat keras audio tersedia untuk semua pengguna dan dapat dimanipulasi SAAT. Ini bukan situasi yang ideal untuk warnet atau pengaturan publik lainnya di mana keamanan adalah masalah nyata. Ingatlah ini ketika membuat kebijakan keamanan situs Anda. Mungkin bijaksana untuk membatasi eksekusi pavucontrol hanya untuk admin.

Seperti biasa, buat cadangan semua file konfigurasi default Anda. Jika Anda telah mengotak-atik konfigurasi Anda tanpa membuat cadangan, Anda dapat mengambil paket pulseaudio dengan apt-get -d install pulseaudio. Ini hanya akan mengunduh paket (ke / var / cache / arsip / apt) dan Anda dapat mengekstrak konten untuk mengambil konfigurasi default. Ketahuilah bahwa client.conf tidak termasuk di sana.

Untuk menjalankan pulseaudio sebagai daemon sistem, kita perlu mengedit beberapa file.

1.) / etc / default / pulseaudio

    PULSEAUDIO_SYSTEM_START=1

2.) /etc/pulse/daemon.conf - Lihat man pulse-daemon.conf untuk informasi lebih lanjut.

    daemonize = yes
    local-server-type = system

3.) /etc/pulse/client.conf

    autospawn = no

Kami juga perlu menambahkan pengguna ke grup akses-pulsa.

sudo usermod -a -G pulse-access <username>

Sekarang semua pengguna dapat mengakses perangkat keras audio, kita harus memilih perangkat keras yang akan digunakan setiap pengguna. Ini dapat dilakukan dengan menggunakan pavucontrol. Perlu diketahui bahwa pengaturan disimpan PER PENGGUNA dan tidak akan mengikuti kursi. Jika pengguna berganti tempat duduk, Anda harus memilih kembali perangkat keras audio yang diinginkan.

Komentar Tambahan tentang Pulseaudio

Saya berharap akan ada solusi yang lebih elegan untuk membuat audio per kursi bekerja. Menggunakan Pulseaudio di seluruh sistem dalam multiseat memiliki banyak kelemahan dan tidak sepenuhnya stabil di antara reboot. Saya telah mencoba untuk memulai instance sistemwide dan memiliki contoh pengguna terhubung ke server sebagai via localhost. Itu tampaknya tidak berfungsi sejak ketika pulseaudio --start dijalankan, sumber daemon.conf.

Mengenai ConsolKit

Masalah yang kita lihat ketika menjalankan pulseaudio normal per pengguna adalah bahwa satu kursi memiliki akses ke perangkat keras dan yang lainnya memiliki Dummy Output. Ini karena ConsoleKit tidak sepenuhnya sadar akan kursi. CK menganggap semua kursi kami sebagai sesi seat1 dan hanya dapat menandai satu sesi sebagai aktif. Fakta ini dapat dilihat dengan menjalankan getfacl / dev / snd / *. Saya berpikir bahwa kita mungkin dapat mengedit acl dari file / dev / snd / yang sesuai berdasarkan $ DISPLAY yang digunakan oleh pengguna tertentu. Ini adalah opsi yang belum saya jelajahi. Silakan pertimbangkan berkontribusi pada penyebab multiseat dengan menjelajahi hipotesis ini dan mengedit dokumen dengan temuan Anda.

Cabang multiseat untuk ConsoleKit , GDM-2.3 dan GDM-3.x memang ada yang seharusnya menyediakan fungsionalitas multiseat otomatis.

catatan tambahan

1.) Sebaiknya larang juga pengguna tidak memuat modul DISALLOW_MODULE_LOADING = 1.

2.) autospawn = tidak tidak sepenuhnya diperlukan seperti yang terlihat pada file contoh saya. Itu tidak menyebabkan masalah.


1
Anthony, terima kasih untuk posting Anda, ini sangat membantu! Saya menghadapi masalah yang sama dan menemukan cara mencapai hasil yang diinginkan tanpa menjalankan Pulseaudio dalam Mode Sistem. Lihatlah: unix.stackexchange.com/a/104344/34581 . Semoga bermanfaat.
Ilia Rostovtsev

1

Pemahaman saya tentang situasi ini: Akses ke pulseaudio terbatas pada sesi aktif yang ditandai oleh ConsoleKit (sesuatu tentang ACL). CK hanya dapat menandai satu sesi sebagai aktif pada suatu waktu.

Ada patch untuk ConsoleKit untuk menambahkan dukungan multiseat; ini akan memungkinkannya untuk melaporkan semua kursi aktif sebagai aktif. Mungkin ini akan memperbaiki masalah Anda. Perlu kerja sama dengan manajer tampilan, dan ada tambalan ke versi lama GDM yang menambahkan dukungan ini.

Saya mendapat multiseat yang berfungsi di Natty (11.04) menggunakan paket ConsoleKit dan GDM yang dimodifikasi dari PPA . Saya belum memutakhirkan dari Natty - saya butuh waktu lama untuk mengetahui cara membuatnya bekerja, dan saya khawatir bahwa LightDM tidak akan bekerja dengan ConsoleKit yang ditambal.

EDIT: Saya harus mencatat bahwa Fedora 17 memiliki beberapa fitur multiseat yang mengesankan, beberapa di antaranya akan ada di Quantal. Mereka memiliki halaman wiki yang menggambarkan pendekatan mereka . Ubuntu tidak bisa begitu saja menyalin pendekatan Fedora karena itu akan membutuhkan perubahan signifikan; Fedora menggunakan systemd dan GDM sementara Ubuntu menggunakan pemula dan LightDM.


Lol. Saya sudah tahu tentang cabang ConsoleKit dan GDM multiseat. Anda akan melihat bahwa saya menautkannya pada halaman Ubuntu MultiseatX yang sedang saya perbarui. Sebenarnya, cabang ck tergantung pada cabang gdm. Mereka dikelola oleh orang yang sama dari Oracle. PPA yang Anda referensikan juga sesuatu yang saya ketahui dan bukan untuk 12,04. Saya mencoba melakukannya dengan cara yang tidak melibatkan keluar dari repo standar. Mengenai Fedora dan systemd ... pendekatan systemd multiseat TIDAK akan bekerja dengan nvidia binary.
Anthony

0

Saya baru-baru ini sedang mencoba untuk menyelesaikan masalah dengan PulseAudio dan Multiseat. Melihat bahwa tidak ada solusi yang elegan, solusi saya adalah menggunakan jaringan.

Solusi ini sesuai dengan skenario saya karena saya adalah pengguna yang paling sering berada di mesin dan kursi saya paling sering masuk. Dan kursi saya dikonfigurasi dengan tangan kiri dan tidak ada orang lain yang menggunakannya.

Di saya, ~/.config/pulse/default.pasaya menyalin konfigurasi sistem /etc/pulse/default.padan menambahkan baris berikut:

load-module module-native-protocol-tcp auth-anonymous=1 auth-ip-acl=127.0.0.1

Di pengaturan pulseaudio pengguna lain, tambahkan sebuah terowongan --atau beberapa yang lain, jika itu yang Anda butuhkan - dengan sesuatu:

load-module module-tunnel-sink server=127.0.0.1 sink=alsa_output.pci-0000_00_XX.X.iec958-stereo

Ubah nama wastafel agar sesuai dengan yang ada di mesin Anda. Anda dapat memutuskan untuk mengonfigurasi nama yang lebih ramah - yang artinya Anda harus mengonfigurasinya dalam file pengaturan pulseaudio Anda - tetapi saya hanya menggunakan nama yang diberikan dengan melihatnya pacmd list-sinks.

Ini bukan solusi yang elegan, saya mungkin akan mencoba menggunakan konfigurasi seluruh sistem seperti yang disarankan oleh @Anthony di rig saya berikutnya, tetapi jika Anda memiliki banyak kartu dan hanya ingin berbagi satu atau beberapa wastafel / sumber, ini adalah lebih banyak solusi "bedah".

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.