For this round I have decided to work on determining the audio
stability of the two systems running together with a broad test suite
of desktop apps that a normal user might use on a daily basis.
In qjackctl l have added the command "pulseaudio -k" to the "run before
starting" config option and the command to restart "pulseaudio -D -nF
~/jackd.pa" to the "run after starting" config option.
(Since starting this round I have also run pulseaudio as a jack client
overnight with no load. It was still connected in the morning so that
is a good sign.)
The jackd.pa script was posted Thursday in round 3.
PA 0.9.16 will happily go down when told to with "pulseaudio -k"
PA will restart and load the jack-sink/source modules
I can play an audio file with totem->PA->jack while also playing
a track with alsaplayer->jack.
I have found that PA doesn't last for long while playing audio. While
playing totem it will
dropout after about 3 - 5 minutes then PA will go down. Disconnecting
alsaplayer from jack that can also bring down PA. So far no problems
with youtube/libflashplayer(64) but I haven't tested it for more than a
minute as it is the last thing I have got working through PA.
+++++++++++++++
RESULTS - Round 6
+++++++++++++++
Winners
Pulse. Managed to take out Jack and the alsa drivers and still able to
be used afterwards without a reboot.
Jack. Survived repeated possible serious threats from pulse
instability. Although eventually taken out by alsa drivers. Was able to
come back up without a reboot.
libflashplayer (64bit). After linking the three alsa-pulse libraries
from /usr/lib64/alsa-lib to /usr/lib/alsa-lib I can play flash over
pulseaudio. Would like to get libflashplayer to use /usr/lib64/ as the
path but it seems to be hardcoded to /usr/lib/.
Loosers
Firefox. Quite a long process to figure out how to get the flash plugin
working through pulse audio. No matter what I do I can't get the
realplayer plugins to play
through pulseaudio. That means if I want to look at a webpage while I
have some background music running I won't hear any sounds on it. It
also means that if I am listening to a radio stream I won't hear my
system sounds. It also means I have to kill firefox if I want to start
jack.
Skype. Still can't get it to play audio through pulse. Case made even
less likely now that I have linked the 64 bit libs to get
libflashplayer to work. What is so hard about linking to /usr/lib64/
that the adobe developers have decided not to use that method?
++++++++++++++++++++++++++++++++++++++++++++++++
TESTS
(included here as a web resource)
++++++++++++++++++++++++++++++++++++++++++++++++
- I would like to try another app instead of totem so I try to use
firefox and stream some audio off the web with a flash/realplayer based
radio (BBC - Benji B). Unfortunately this version of firefox 3.5.2
wants to use alsa directly. I try to find the firefoxrc file to add a
hook for sound playback but cannot. I decide to make my own
".mozilla/firefox/rc" and add the following line:
FIREFOX_DSP="padsp"
- Now I find that after pulse last went down it has now left a stale
connection in the jack system. I cannot restart pulseaudio. Alsaplayer
is still playing. It's been about 30 minutes of playback now. I decide
to restart jack. Now I can't restart. It looks like the drivers have
been fsckd.
I kill the alsa system. Have to run this a couple of times to get
things to fully die.
/etc/init.d/alsasound stop
Then restart with "modprobe snd-hda-intel"
Now I restart jack by pressing the start button in qjcakctl which runs
the srcipts as described above. I see only the system input channels in
the connections window. Looks like the alsa drivers have had a rough
time with the last take down.
And I see this in the messages window.
===================================================
start
poll on 5 fd's
client event poll on 14 for
qjackctl starts at 2430521278
back from client event poll
after 78 usecs
server thread back from poll
marking client PulseAudio
JACK Source with SOCKET error state = Not triggered errors = 0
trying to lock graph to
remove 1 problems
we have problem clients
(problems = 1
++ Removing failed clients ...
client alsa_pcm error status 0
client qjackctl error status 0
client PulseAudio JACK Source
error status 10000000
removing failed client
PulseAudio JACK Source state = Not triggered errors = 10000000
removing client "PulseAudio
JACK Source"
removing client "PulseAudio
JACK Source" from the processing chain
+++ deactivate PulseAudio
JACK Source
++ jack_sort_graph
++ jack_rechain_graph():
+++ client is now alsa_pcm
active ? 1
+++ client is now qjackctl
active ? 1
client qjackctl: start_fd=7,
execution_order=0.
client event poll on 14 for
qjackctl starts at 2430521834
back from client event poll
after 37 usecs
client qjackctl: wait_fd=9,
execution_order=1 (last client).
-- jack_rechain_graph()
-- jack_sort_graph
-- Removing failed clients ...
after removing clients,
problems = 0
start poll on 4 fd's
15:04:01.839 Post-startup script
terminated with exit status=256.
15:04:01.840 JACK connection change.
15:04:01.841 XRUN callback (1
skipped).
load = 3.9610 max usecs:
1672.000, spare = 19661.000
load = 2.3860 max usecs:
173.000, spare = 21160.000
load = 1.5750 max usecs:
163.000, spare = 21170.000
===================================================
Looks like a serious pulseaudio problem this time. Maybe I have to
reboot?
I stop jack and run "pulseaudio -D" instead and it works. I check the
audio input and output tabs. There is no alsa input but the output is
there.
Conflicting reports from pulse and jack about the device i/o's is not a
good thing. I kill the sound drivers again, reload the alsa driver with
"modprobe snd-hda-intel" and start pulse with "pulseaudio -D".
Things are back to normal in pulse now. Totem will play but no there's
no sound in my speakers. I start alsamixer and notice that the channel
for the headphone jack is set to zero and muted. This was not like that
before I took the alsa drivers out. Seems strange the system did not
save that setting seperately. All the other settings are the same as
previously so it must be to do with the irq for the headphone jack not
being triggered or somthing like that. I select the headphone channel,
press "m" to unmute and turn up the volume and find that the track
totem is playing can now be heard.
Still no audio from the BBC through firefox+realplayer. Bummer. I
restart firefox and can play the stream but now totem will not play so
my settings in the rc file have not worked.
- I decide to test jack again. I stop the bbc stream and close the
popup window. I start jack but it cannot start. I close totem even
though it is not playing and still cannot start. I kill firefox and now
I can start jack.
This time round the alsa i/o's are back and pulse has joined the party
again. Looks like there is a firefox issue with letting go of the sound
device after being used that is probably a major source of headaches
and frustration for a lot of people.
I would like to know how to make sure the firefox uses pulseaudio
seeing as the only suggestion I could find didn't work.
I try putting the rc file in /etc/fireforx/firefoxrc and restarting
firefox. Firefox still doesn't show up in the "Sound Preferences" panel.
- I follow the instructions on this page:
http://pulseaudio.revolutionlinux.com/PulseAudio
and this mod to the libflashsupport:
Change line 3:
from CFLAGS=-fPIC -shared -O2 -Wall -Werror
to CFLAGS=-fPIC -shared -O2 -Wall
and rerun: make ;make install;
This is supposed to fix all the pulse issues as the 64bit version uses
pulse natively as the default sound device and falls back to alsa if it
can't find pulse.
Restart firefox and open up
http://www.youtube.com/watch?v=EfSwEaeOsJE&feature=channel
No sound but video plays...
Open up the BBC radio and stream refuses to start playing. No doubt
waiting for the alsa device to become available.
try reinstalling:
yum install alsa-plugins-pulseaudio.i586
Same error messages as skype while playing youtube videos:
socket(): Address family not supported by protocol
ALSA lib pulse.c:272:(pulse_connect) PulseAudio: Unable to connect:
Connection refused
- At this point I have to concede that it is looking grim for being
able to use Pulse as the catch all for desktop software and running
Pulse through jack. So I ask on the pulseaudio list for some ideas on
how to get around it.
The answer is that I have to compile and install a 32 bit version of
pulse libs on my 64 bit system. Lovely. I try installing the 32 bit
packages from Fedora base but that procedure creates a problem with the
flash plugin as now it will only report:
ALSA lib pulse.c:272:(pulse_connect) PulseAudio: Unable to connect:
Connection refused
I'm not even sure why the the 64 bit version of libflashplayer is
looking for the 32 bit pulse libs.
As a possible fix I add this to my ~/.asoundrc
pcm.!dmix {
type pulse
}
Restart firefox. No sound from the libflashplayer-64 plugin through
pulse. Same error as above. Cannot find 32 bit library. Decide to link
the 64 bit libs to the 32 bit folder. This time I link all the pulse
libs instead of the one reported as missing.
ln /usr/lib64/alsa-lib/libasound_module_*_pulse.so /usr/lib/alsa-lib/
Restart firefox and flash is not complaining about a missing library
any more. Check "Sound Preferences" to see if teh stream is being
played through pulse and I can see the "ALSA plug-in [npviewer.bin]".
Volume is set to 100% but still cannot hear any sound.
Test alsaplayer with jack and sound is working. So must be something
wrong with the pulse connection. Check the output for pulse and it has
managed to set itself to my (HDMI) outputs for some reason. I change it
to jack-sink. Flash movie has stopped playing... Restart the video and
Viola!!!!
The libflashplayer-64 plugin sound is now working through pulse and
jack.
Full instructions have been sent for this in my previous post.
----------------
Realplayer
----------------
- I notice that this error message is being reported by firefox at
startup:
LoadPlugin: failed to initialize shared library
/opt/real/RealPlayer/mozilla/nphelix.so
[/opt/real/RealPlayer/mozilla/nphelix.so: wrong ELF class: ELFCLASS32]
That looks like it should be easy to fix. I find a 64 bit version of
the Helix nightly build. Dowload, untar (make sure it has it's own
folder though), run helix.bin and ...
./hxplay.bin: error while loading shared libraries: libstdc++.so.5:
cannot open shared object file: No such file or directory
I try the quick and dirty method...
ln -s /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.5
./hxplay.bin: /usr/lib64/libstdc++.so.5: version `CXXABI_1.2' not found
(required by ./hxplay.bin)
./hxplay.bin: /usr/lib64/libstdc++.so.5: version `GLIBCPP_3.2' not
found (required by ./hxplay.bin)
Damn. Now I need an old version of libstdc++ in order to run the
lastest 64 bit build of helix/realplayer on Fedora 11. What's even more
annoying is the the 32 bit build of realplayer can install and run on
the same machine. The plugin loads and runs in firefox even with the
32bit incompatibility error and plays audio directly to the alsa layer
but not to the pulseaudio layer. Bizzare!
Luckily I find that there is a compatibility library:
yum install compat-libstdc++-33
Now I can run the helix installer which works very well. However now
the player doesn't load in the browser popup.
I also get these errors:
================
*** NSPlugin Wrapper *** ERROR: NPP_DestroyStream() wait for reply:
Connection closed
*** NSPlugin Wrapper ***
WARNING:(../src/npw-wrapper.c:2123):invoke_NPP_URLNotify: assertion
failed: (rpc_method_invoke_possible(plugin->connection))
*** NSPlugin Wrapper ***
WARNING:(../src/npw-wrapper.c:1858):invoke_NPP_Destroy: assertion
failed: (rpc_method_invoke_possible(plugin->connection))
*** NSPlugin Wrapper *** ERROR: NPObject 0x7f9931e7d4d0 is no longer
valid!
*** NSPlugin Wrapper *** ERROR: NPP_DestroyStream() wait for reply:
Connection closed
*** NSPlugin Wrapper ***
WARNING:(../src/npw-wrapper.c:2123):invoke_NPP_URLNotify: assertion
failed: (rpc_method_invoke_possible(plugin->connection))
*** NSPlugin Wrapper ***
WARNING:(../src/npw-wrapper.c:1977):invoke_NPP_GetValue: assertion
failed: (rpc_method_invoke_possible(plugin->connection))
================
I try to uninstall and reinstall but it is very difficult to uninstall
being that there is no uninstall script and the script that is provided
if you download directly from the last entry in the helix Faq doesn't
actually work because as well as deleting the player from the system
you also need to :
rm -rf ~/.config/helix/hxplayerrc
Reinstall helix
export PATH=$PATH:/opt/real/helix
restart firefox
load up bbc player
Now I get this error from firefox.
*** NSPlugin Wrapper *** ERROR: NPP_DestroyStream() wait for reply:
Connection closed
*** NSPlugin Wrapper ***
WARNING:(../src/npw-wrapper.c:2123):invoke_NPP_URLNotify: assertion
failed: (rpc_method_invoke_possible(plugin->connection))
Patrick Shirkey
Boost Hardware Ltd