Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Elo. Piszę bo jestem u kresu wytrzymałości.
Założenie jest takie:
1. Lokalny MPD gra sobie radio z netu na wybranej przeze mnie karcie
2. Lokalny MPD jest obsługiwany przez dowolnego usera i startuje jako usługa jeszcze przed X'ami, grając sobie wg konfiguracji.
3. Pulseaudio się nie wpierdala bądź daje skonfigurować xD
Environment: debian 7.6
Zintegrowany kontroler ac97 która gra niezależnie czy PA czy ALSA i nie zamierzam się rozpisywać na jego temat.
Osobny kontroler audio na USB, jakieś gówienko za 37 pln od ruskiego, które gra j/w.
Pulseaudio konieczne z uwagi na Skype (który też jest konieczny, to nie mój komputer)
Dwoje userów o innych zainteresowaniach i profilach, że tak powiem, korzystania z komputera :P
Radio nie może intereferować z dźwiękiem 'przeznaczonym' dla AC97, dlatego dwa kontroloery
Problem:
Obecnie jest tak, że aby leciało radio, mama musi być zalogowana na swój profil, odpalony jest VLC i jest okej. Gdy tata siada przed kompa, przełącza usera i dźwięk magicznie niknie (również jak przełącza się na tty). Jak się domyślacie, sytuacja nie jest komfortowa, tymbardziej dla mnie, który ma to spiąć w całość.
Napotkałem po drodze takie problemy:
mpd zwraca te słynne 'device or resource busy' jeśli jest skonfigurowany do obsługi alsy na hw:3,0 (tu siedzi usbczka)
mpd po skonfigurowaniu pod pulseaudio dobrze odgrywa dźwięk, ale tylko na defaultowym wyjściu (czyli na integrze); jeśli określę sink, to czas leci do pierwszej sekundy, a w logach mam różne komunikaty, od failed to connect, przez failed to play: disconected.
pulseaudio skonfigurowane jest do startu 'per user' (takie info otrzymałem po service pulseaudio start z roota); jest szansa że to w ogóle ruszy podczas bootowania systemu, skoro user mpd nie loguje się i tak dalej?
rozwiązania które mnie interesują:
'odpięcie' pulseaudio od karty hw:3,0 LUB
ożenienie mpd ze wskazaną przeze mnie dźwiękówką ORAZ
mpd ma grać jeszcze nim ktokolwiek się zaloguje.
Gorąco proszę o pomoc, rly gorąco. Do wygrania czajnik od żelazka xD
W razie potrzeby slużę logami, konfigami, etc.
Offline
W opcjach PA (pavucontrol) powinna być opcja wyłączenia danej karty dźwiękowej i może wtedy nie będzie jej blokował.
Może tak banalne rozwiązanie wystarczy? Nie używam PA żeby sprawdzić.
Offline
Trzeba wyłączyć wykrywanie kart w PA - domyślnie z Udeva łapie wszystkie karty.
U mnie do Skype (/etc/pulse/default.pa):
#!/usr/bin/pulseaudio -nF load-module module-augment-properties load-module module-switch-on-port-available load-module module-alsa-sink device=hw:2,0 load-module module-alsa-source device=hw:2,0 load-module module-pipe-sink .ifexists module-esound-protocol-unix.so load-module module-esound-protocol-unix .endif load-module module-native-protocol-unix .ifexists module-gconf.so .nofail load-module module-gconf .fail .endif load-module module-intended-roles load-module module-suspend-on-idle
Tylko Skypa odpalam skryptem z takimi zmiennymi:
export PULSE_SOURCE=$(LANG=C pactl list | grep -A2 'Source #' | grep 'Name: ' | cut -d" " -f2| grep "alsa_input.hw_2_0" ) export PULSE_SINK=$(LANG=C pactl list | grep -A2 'Sink #' | grep 'Name: ' | cut -d" " -f2 | grep "alsa_output.hw_2_0" )
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2014-09-16 22:37:16)
Offline
@Jacekalex: jesteś kreatywny, ale przyznam, że Twoje rozwiązanie nie będzie mieć u mnie zastosowania; przeklejanie cudzej konfiguracji do systemu nietechnicznych userów, to moje późniejsze problemy:P.
@yossarian: No i powiem Ci kolego że Twoje prosto logiczne rozumowanie ma sens xD. Daleko, na ostatniej zakładce jest 'wyłącz'. Jednego mniej.
Teraz pozostaje mi ożenić MPD z alsą #3,0 tak, by startowało przy bootowaniu. Sam mpd wstaje, niby odtwarza, ale nie jest w stanie pogadać z mixerem, mimo podawania konkretnych nazw urządzeń.
Coś takiego mam w mpd.conf
audio_output { type "alsa" name "usb sound module" device "hw:3,0" # mixer_device "usbmixer" mixer_device "default" mixer_control "Speaker Playback Volume" mixer_index "0" # sink "alsa_output.usb-0d8c_C-Media_USB_Headphone_Set-00-Set.analog-stereo" # server "localhost" }
za to takie pierdy w logu mpd
Sep 16 22:42 : Failed to open mixer for 'usb sound module': no such mixer control: Speaker Playback Volume
chociaż
root@Optiplex330:/tmp# cat /proc/asound/card3/usbmixer
USB Mixer: usb_id=0x0d8c000c, ctrlif=0, ctlerr=0
Card: C-Media USB Headphone Set at usb-0000:00:1d.3-2, full speed
Unit: 9
Control: name="Speaker Playback Volume", index=0
Info: id=9, control=2, cmask=0x3, channels=2, type="S16"
Volume: min=-7264, max=-16, dBmin=-2837, dBmax=-6
Unit: 9
Control: name="Speaker Playback Switch", index=0
Info: id=9, control=1, cmask=0x0, channels=1, type="INV_BOOLEAN"
Volume: min=0, max=1, dBmin=0, dBmax=0
Unit: 10
Control: name="Auto Gain Control", index=0
Info: id=10, control=7, cmask=0x0, channels=1, type="BOOLEAN"
Volume: min=0, max=1, dBmin=0, dBmax=0
Unit: 10
Control: name="Mic Capture Volume", index=0
Info: id=10, control=2, cmask=0x0, channels=1, type="S16"
Volume: min=0, max=6096, dBmin=0, dBmax=2381
Unit: 10
Control: name="Mic Capture Switch", index=0
Info: id=10, control=1, cmask=0x0, channels=1, type="INV_BOOLEAN"
Volume: min=0, max=1, dBmin=0, dBmax=0
Unit: 13
Control: name="Mic Playback Volume", index=0
Info: id=13, control=2, cmask=0x0, channels=1, type="S16"
Volume: min=0, max=12240, dBmin=0, dBmax=4781
Unit: 13
Control: name="Mic Playback Switch", index=0
Info: id=13, control=1, cmask=0x0, channels=1, type="INV_BOOLEAN"
Volume: min=0, max=1, dBmin=0, dBmax=0
Offline
A masz do tej karty dostęp ze standardowego alsamixera (F6)?
Offline
Tak, oczywiście. Tam kontrolka jest nazwana po krótkiemu 'Speaker'. Jednak niezależnie od nazwy po jakiej się odwołuję do niej z poziomu mpd, problem pozostaje.
Sep 16 23:04 : Failed to open mixer for 'usb sound module': no such mixer control: Speaker
Offline
Pokaż wynik:
aplay -l
Offline
**** List of PLAYBACK Hardware Devices **** card 0: Intel [HDA Intel], device 0: AD198x Analog [AD198x Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: Intel [HDA Intel], device 1: AD198x Digital [AD198x Digital] Subdevices: 1/1 Subdevice #0: subdevice #0 card 3: Set [C-Media USB Headphone Set], device 0: USB Audio [USB Audio] Subdevices: 0/1 Subdevice #0: subdevice #0
Oto i on. Dodatkowo, mpd nadal nie startuje przy uruchamianiu komputera. Nie wiem co tam się dzieje (sugerando że pulseaudio jeszcze nim będą miały zastosowanie ustawienia per-user), pluje klasycznie 'device or resource busy'.
Offline
Podejrzewam, że problemem jest:
mixer_device "default"
Pokaż dodatkowo:
aplay -L amixer -c Set amixer -c3
Te dwa ostatnie powinny dać to samo.
Offline
root@Optiplex330:~# aplay -L null Discard all samples (playback) or generate zero samples (capture) pulse PulseAudio Sound Server default:CARD=Intel HDA Intel, AD198x Analog Default Audio Device sysdefault:CARD=Intel HDA Intel, AD198x Analog Default Audio Device front:CARD=Intel,DEV=0 HDA Intel, AD198x Analog Front speakers surround40:CARD=Intel,DEV=0 HDA Intel, AD198x Analog 4.0 Surround output to Front and Rear speakers surround41:CARD=Intel,DEV=0 HDA Intel, AD198x Analog 4.1 Surround output to Front, Rear and Subwoofer speakers surround50:CARD=Intel,DEV=0 HDA Intel, AD198x Analog 5.0 Surround output to Front, Center and Rear speakers surround51:CARD=Intel,DEV=0 HDA Intel, AD198x Analog 5.1 Surround output to Front, Center, Rear and Subwoofer speakers surround71:CARD=Intel,DEV=0 HDA Intel, AD198x Analog 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers iec958:CARD=Intel,DEV=0 HDA Intel, AD198x Digital IEC958 (S/PDIF) Digital Audio Output default:CARD=Set C-Media USB Headphone Set, USB Audio Default Audio Device sysdefault:CARD=Set C-Media USB Headphone Set, USB Audio Default Audio Device front:CARD=Set,DEV=0 C-Media USB Headphone Set, USB Audio Front speakers surround40:CARD=Set,DEV=0 C-Media USB Headphone Set, USB Audio 4.0 Surround output to Front and Rear speakers surround41:CARD=Set,DEV=0 C-Media USB Headphone Set, USB Audio 4.1 Surround output to Front, Rear and Subwoofer speakers surround50:CARD=Set,DEV=0 C-Media USB Headphone Set, USB Audio 5.0 Surround output to Front, Center and Rear speakers surround51:CARD=Set,DEV=0 C-Media USB Headphone Set, USB Audio 5.1 Surround output to Front, Center, Rear and Subwoofer speakers surround71:CARD=Set,DEV=0 C-Media USB Headphone Set, USB Audio 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers iec958:CARD=Set,DEV=0 C-Media USB Headphone Set, USB Audioroot@Optiplex330:~# amixer -c Set Simple mixer control 'Speaker',0 Capabilities: pvolume pswitch pswitch-joined penum Playback channels: Front Left - Front Right Limits: Playback 0 - 151 Mono: Front Left: Playback 151 [100%] [0.06dB] [on] Front Right: Playback 151 [100%] [0.06dB] [on] Simple mixer control 'Mic',0 Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined penum Playback channels: Mono Capture channels: Mono Limits: Playback 0 - 32 Capture 0 - 16 Mono: Playback 25 [78%] [37.35dB] [off] Capture 0 [0%] [0.00dB] [on] Simple mixer control 'Auto Gain Control',0 Capabilities: pswitch pswitch-joined penum Playback channels: Mono Mono: Playback [off]
root@Optiplex330:~# amixer -c3 root@Optiplex330:~# amixer -c 3
Przyznam, że powoli zaczyna mi to działać na nerw, wiecie jaki :P. Dawno już tak nie miałem że coś tak oczywistego jest takie niekonfigurowalne.
Przy okazji jeszcze MPD robi takie jajo, że strumień trzeba odpalać dwa razy, tzn, w rc.local mam wpis ncmpcpp play i cisza. Po zalogowaniu się trzeba zastopować i odpalić, to idzie. Przy zmianie stacji to samo, dwuklik na strumień próbuje go odpalić, ale nawet nie idzie czas, w logach ni chu chu blędu, a czas stoi, tcpdump nie widzi ruchu. Jacekalex, jesteś w stanie pokrótce omówić swoja konfigurację PA?
Offline
Zobacz czy coś się zmieni gdy zmienisz:
device "hw:3,0"
na:
device "front:CARD=Set,DEV=0"
lub
device "default:CARD=Set"
Przy okazji jeszcze MPD robi takie jajo, że strumień trzeba odpalać dwa razy, tzn, w rc.local mam wpis ncmpcpp play i cisza.
MPD to Music Player Daemon, więc dopisywanie do rc.local jest raczej bez sensu. Powinien sam zaczynać odtwarzanie przy swoim starcie.
# This setting sets the location of the file which contains information about
# most variables to get MPD back into the same general shape it was in before
# it was brought down. This setting is disabled by default and the server
# state will be reset on server start up.
#
state_file "/home/yossarian/.mpd/state"
Możesz jeszcze pokombinować z tymi ustawieniami:
# Volume control mixer ########################################################
#
# These are the global volume control settings. By default, this setting will
# be detected to the available audio output device, with preference going to
# hardware mixing. Hardware and software mixers for individual audio_output
# sections cannot yet be mixed.
#
# An example for controlling an ALSA, OSS or Pulseaudio mixer; If this
# setting is used other sound applications will be affected by the volume
# being controlled by MPD.
#
#mixer_type "hardware"
#
# An example for controlling all mixers through software. This will control
# all controls, even if the mixer is not supported by the device and will not
# affect any other sound producing applications.
#
#mixer_type "software"
#
# This example will not allow MPD to touch the mixer at all and will disable
# all volume controls.
#
#mixer_type "disabled"
#
###############################################################################
Offline
Dziękuję wszystkim zaangażowanym. Z uwagi na nieznajomość tego sk*!Q@%#*!@łego pulseaudio i wyjątkową niechęć mpd do współpracy (choć szczawik dobrze prawi o state_file, nie wpadłem) to poszedłem na wcześniej niechciane skróty:
- wyłączyłem w pavulonkontrol opiekowanie się hw3:0 dla obydu userów
- zmieniłem dla maminego usera defaultowe ao dla VLC na alsę z wcześniej opisywaną kartą
- przyproficiłem, bo mama obsługuje player jak do tej pory (ma problemy z dwuklikaniem, więc ario czy sonata nie szanujące ustawień systemowych były sporą barierą)
- tata też może jechać na słuchawkach kotki i pieski.
Zatem, jeszcze raz dziękuję i się zanurzam :)
Offline
Ech... zawsze uważałem że nauczenie elektroników podstaw nie tyle programowania, co obsługi systemu graniczy z cudem (bo to przeca lutownica się inaczej w rencach trzymie)
Jak zwykle będą robić mostek naokoło...
Nie, nie odpowiadaj. Nie uważam że nieumiejętność używania googla jest czymś, czym elektronik może się szczycić. Humanista to może tak... ale nie elektronik.
Howgh!
Offline