PulseAudio ve Multiseat ile sesi nasıl yapılandırabilirim?


12

Tam açıklama ruhu içinde, bu soruyu ubuntu forumlarına gönderdim , ancak üzerinde çalışan daha fazla kafaya zarar veremedim.

Oldukça iyi çalışan çok koltuklu bir kurulumum var. Çalışırken takılabilen giriş aygıtları beklendiği gibi çalışır. Hala çözemediğim tek sorun her koltuk için ses almak.

İşte ses çıkarmaya çalışmamın bir özeti:

  1. ~ / .Pulse / default.pa dosyasını kullanıcının hangi DISPLAY'de oturum açtığına göre dinamik olarak yapılandırın.

    • Ayrıntılar için bu macuna bakın.
  2. Sistem genelinde bir örnek olarak pulseaudio'yu yükleyin.

    • Bu işe yaramadı. Ses donanımının hiçbirine kullanıcılar erişemedi.
  3. ConsoleKit'te koltukları işaretlemek için udev kurallarını kullanın. Burada bulunan udev yönergeleri aşağıdadır: http://www.freedesktop.org/wiki/Software/systemd/multiseat

    • Her ne kadar irc.freenode #pulseaudio'da çalışmak için "garantili" olmasına rağmen bunun işe yarayacağını düşünmedim.

Bu girişimlerin hiçbiri başarı getirmedi, bu yüzden şimdi yardım için topluma dönüyorum. Önerilen yöntemlerin işe yaraması oldukça mümkündür ve bunun bazı yönlerini berbat ettim, idk. Bu, Ubuntu 12.04 için talimatları içerecek şekilde MultiseatX sayfasını güncelleyebilmem için gereken bulmacanın son parçası.

Durumla ilgili anlayışlarım: Pulseaudio'ya erişim, ConsoleKit (ACL ile ilgili bir şey) tarafından işaret edildiği şekilde aktif oturumla sınırlıdır. CK bir seferde yalnızca bir oturumu etkin olarak işaretleyebilir. Bu basit yaşam gerçeği beni çözümün pulseaudio'nun sistem çapında bir örnek olarak çalıştırılmasını gerektirdiğine inanmamı sağlıyor. Her kullanıcı darbe sunucusuna bağlanmalı ve tüm donanımın bir alt kümesiyle sınırlı olmalıdır. Belki her kullanıcı darbe sunucusuna localhost, idk ile bağlanır. Girişimlerimden ve başarısız sonuçlarından bağımsız olarak, her zaman sudo aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Center.wavherhangi bir donanımda bir şey oynamak için kullanabildiğimi biliyorum.

Payetten tutuyorum ve şimdi kafamdan çekebileceğim son birkaç kıldan aşağıyım. Lütfen serveti paylaşabilmemiz için bunu anlamama yardım et. Gerekli tüm ek bilgiler isteğiniz üzerine sağlanacaktır.


Doğru anladım mı? 2 koltuk 2 ses kartı mı? Default.pa dosyasını küçük özel dosyalarla değiştirdiniz mi yoksa özel satırları başka türlü değiştirilmemiş default.pa dosyasına mı eklediniz ?
Takkat

Keşke burada yorum fark olurdu ... Yani evet, 2 ses kartları. Biri yerleşik ses, diğeri gpu'daki HDMI'dan gelen ses. Küçük özel dosyalar ~ / .pulse içindedir, ancak /etc/pulse/default.pa'ya dokunulmaz. Bu durumda, anladığım kadarıyla, ~ / .pulse / default.pa /etc/pulse/default.pa yerine geçmez, onunla birleşir.
Anthony

Mevcut iki dosyadaki farklı aygıt bölümünün eklendiği (birleştirilmemeleri durumunda) default.pa dosyasının tam içeriğine sahip iki özel .pa dosyasıyla deneyin.
Takkat

Ayrıca, pulseaudio tarafından sistem genelinde modda okunan default.pa /etc/pulse, HOME'da değil, olmalıdır .
Takkat

i sahip çok atm çalışma. Her ţeyi ütülediđimde rapor vereceđim.
Anthony

Yanıtlar:


7

Çevrimiçi araştırma yaparak, çeşitli kurulumları test ederek ve Pulseaudio geliştiricileriyle konuşarak uzun saatler geçirdim. En önemlisi, pulseaudio'yu normal kullanıcı modunda çalıştırmanın yalnızca ConsoleKit tarafından işaretlenen aktif oturumun ses donanımına erişmesine izin vermesidir. Geçerli ConsoleKit bir seferde yalnızca bir oturumu etkin olarak işaretleyebildiğinden, sistem genelinde pulseaudio örneğini çalıştırmamız gerektiği anlamına gelir. Üst taraf: Her koltukta ayrı ses olabilir. Dezavantajı: TÜM ses donanımı herhangi bir kullanıcı tarafından kullanılabilir ve AT WILL'de değiştirilebilir. Bu, bir internet kafe veya güvenliğin gerçek bir endişe kaynağı olduğu diğer bir kamu ortamı için ideal bir durum değildir. Site güvenlik politikanızı oluştururken bunu unutmayın. Pavucontrol uygulamasının yalnızca yöneticilerle sınırlandırılması ihtiyatlı olabilir.

Her zaman olduğu gibi, tüm varsayılan yapılandırma dosyalarınızın yedeğini alın. Yedeklemeden yapılandırmalarınızla uğraştıysanız, pulseaudio paketini apt-get -d install pulseaudio ile alabilirsiniz. Bu, yalnızca paketi (/ var / cache / archives / apt) indirir ve varsayılan yapılandırmaları almak için içeriği çıkarabilirsiniz. Client.conf dosyasının oraya dahil olmadığını unutmayın.

Pulseaudio'yu sistem çapında bir arka plan programı olarak çalıştırmak için birkaç dosyayı düzenlememiz gerekir.

1.) / etc / default / pulseaudio

    PULSEAUDIO_SYSTEM_START=1

2.) /etc/pulse/daemon.conf - Daha fazla bilgi için man pulse-daemon.conf dosyasına bakın.

    daemonize = yes
    local-server-type = system

3.) /etc/pulse/client.conf

    autospawn = no

Ayrıca, darbe erişim grubuna kullanıcı eklememiz gerekir.

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

Artık tüm kullanıcılar ses donanımına erişebildiğine göre, her kullanıcının kullanacağı donanımı seçmemiz gerekiyor. Bu pavucontrol kullanılarak yapılabilir. Ayarların KULLANICI BAŞINA saklandığını ve koltuğa uymayacağını lütfen unutmayın. Kullanıcılar koltuk değiştirirse, istenen ses donanımını yeniden seçmeniz gerekecektir.

Pulseaudio hakkında ek yorumlar

Koltuk başına ses çalışma için daha zarif bir çözüm olacağını ummuştum. Sistem genelinde Pulseaudio'nun çoklu koltukta kullanılmasının birçok dezavantajı vardır ve yeniden başlatmalar arasında tamamen kararlı değildir. Sistem çapında bir örnek başlatmaya çalıştım ve kullanıcı örneklerini localhost üzerinden sunucu olarak bağladım. Pulseaudio --start çalıştırıldığında daemon.conf kaynağını kullandığından bu işe yaramaz.

ConsolKit Hakkında

Kullanıcı başına normal bir pulseaudio çalıştırırken gördüğümüz sorun, bir koltuğun donanıma ve diğerlerinin Kukla Çıktıya sahip olmasıdır. Bunun nedeni ConsoleKit'in tamamen koltuk farkında olmamasıdır. CK tüm koltuklarımızı seat1 oturumları olarak görür ve yalnızca bir oturumu aktif olarak işaretleyebilir. Bu gerçek getfacl / dev / snd / * çalıştırılarak görülebilir. Belirli bir kullanıcının kullandığı $ DISPLAY'a göre uygun / dev / snd / dosyalarının acl'sini düzenleyebileceğimiz düşüncesi oluştu. Bu, keşfetmediğim bir seçenektir. Lütfen bu hipotezi inceleyerek ve belgeyi bulgularınızla düzenleyerek çok koltuklu nedene katkıda bulunmayı düşünün.

ConsoleKit , GDM-2.3 ve GDM-3.x için otomatik çoklu koltuk işlevselliği sağlayacak çok koltuklu dallar mevcuttur.

ek Notlar

1.) Kullanıcıların DISALLOW_MODULE_LOADING = 1 modüllerini yüklemelerine izin vermemek de akıllıca olur.

2.) autospawn = no , örnek dosyamda görüldüğü gibi tamamen gerekli değildir. Hiçbir soruna neden olmaz.


1
Anthony, mesajınız için teşekkürler yardımcı oldu! Aynı sorunla karşılaştım ve Sistem Modunda Pulseaudio'yu çalıştırmadan istenen sonuca nasıl ulaşacağımı öğrendim. Bir göz atın: unix.stackexchange.com/a/104344/34581 . Umarım faydalı olacaktır.
Ilia Rostovtsev

1

Durumla ilgili anlayışlarım: Pulseaudio'ya erişim, ConsoleKit (ACL ile ilgili bir şey) ile işaretlenen etkin oturumla sınırlıdır. CK bir seferde yalnızca bir oturumu etkin olarak işaretleyebilir.

Birden çok koltuk desteği eklemek için ConsoleKit için bir yama vardır ; bu, tüm aktif koltukları aktif olarak rapor etmesini sağlayacaktır. Belki bu sorununuzu çözecektir. Ekran yöneticisi ile işbirliğine ihtiyaç duyuyor ve GDM'nin eski sürümlerinde bu desteği ekleyen bir yama var .

Bir PPA modifiye ConsoleKit ve GDM paketleri kullanarak Natty (11.04) çalışan çoklu koltuk var . Henüz Natty'den yükseltme yapmadım - nasıl çalışacağını anlamak uzun zaman aldı ve LightDM'nin yamalı ConsoleKit ile çalışmayacağından endişeliyim.

DÜZENLEME: Fedora 17'nin bazıları Quantal'da olacak etkileyici çok koltuklu özelliklere sahip olduğunu belirtmeliyim. Yaklaşımlarını açıklayan bir wiki sayfası var . Ubuntu, Fedora'nın yaklaşımını kopyalayamaz çünkü önemli değişiklikler gerektirir; Fedora sistemd ve GDM kullanırken Ubuntu upstart ve LightDM kullanıyor.


Lol. Çok koltuklu ConsoleKit ve GDM dalları hakkında bilgi sahibi oldum. Güncelleme aşamasında olduğum Ubuntu MultiseatX sayfasında onlara bağlandığımı fark edeceksiniz . Aslında, ck dalı gdm dalına bağlıdır. Oracle'dan aynı kişi tarafından korunuyorlar. Başvuruda bulunduğunuz PPA da bildiğim bir şey ve 12.04 için değil. Bunu standart depoların dışına çıkmayı içermeyen bir şekilde yapmaya çalışıyorum. Fedora ve systemd ile ilgili ... systemd çoklu koltuk yaklaşımı nvidia ikili ile ÇALIŞMAZ.
Anthony

0

Son zamanlarda PulseAudio ve Multiseat ile sorunu çözmeye çalışıyordum. Zarif bir çözüm olmadığını görünce benim çözüm ağ kullanmaktı.

Bu çözüm benim senaryom için uygundur, çünkü en sık makinede olan kullanıcıyım ve koltuğum en sık oturum açmış durumda. Ve koltuğum sol elle yapılandırılmış ve başka hiç kimse kullanmıyor.

Benim ~/.config/pulse/default.pasistem yapılandırmasını kopyaladı /etc/pulse/default.pave aşağıdaki satırı ekledi:

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

Diğer kullanıcıların pulseaudio ayarlarında, bir tünel ekleyin - veya ihtiyacınız olan şeyse birkaçını - bir şey ekleyin:

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

Lavabo adını makinenizdeki adla eşleşecek şekilde değiştirin. Daha dostça bir ad yapılandırmaya karar verebilirsiniz - bu, pulseaudio ayarlar dosyanızda yapılandırmanız gerektiği anlamına gelir - ancak verilen adı sadece ona bakarak kullandım pacmd list-sinks.

Zarif bir çözüm değil, muhtemelen bir sonraki teçhizatımda @Anthony tarafından önerildiği gibi sistem çapında bir yapılandırma kullanmaya çalışacağım, ancak çok fazla kartınız varsa ve sadece bir veya birkaç lavabo / kaynak paylaşmak istiyorsanız, bu bir daha "cerrahi" çözüm.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.