We are trying to output audio with Labview 8.6.1 installed on RHEL6 - 64 bit.
We are using the Vis of the Output Sound palette. Our application is working on an old custom RedHat 5 with the following packages installed :
This same application is not working on RHEL6, with the following packages (both in x86_64 and i686):
There is an error on Sound Output Configure.vi : "LabVIEW: (Hex 0x12C0) Selected Device is Invalid"
We checked the following points :
1) I've read in the help that Output Sound Vis need to have the Open Sound System (OSS) driver installed. => Should be OK since alsa-oss and alsa-oss-libs are installed ?
2) Sound Output Configure.vi calls the library lvsound2.so, so we tried :
ldd lvsound.so => libstdc++.so.5 was not found.
So we replaced our libstdc++.so.6 package with libstdc++.so.5, but no improvements...
Note that our application also outputs sound using directly alsa library, and this is working OK on RHEL6.
Someone has any idea about the packages needed or what is missing ?
Thanks for your help,
I wonder if it has something to do with the increased SELinux that RHEL 6 has. Try turning that off and run and see what happens. We made some changes in LabVIEW 2011 for RHEL 6 to get around some SELinux items that popped up. That is why I bring this up.
Other idea :
lvsound.so was compiled with a previous version of gcc.
Maybe you could try with the compat-libstdc++ package for RHEL6 (find it on rpmsearch)
Thank you guys for your answers :
1) disabled SELinux => no improvement
2) compat-libstdc++ was already installed. We reinstalled libstdc++.so.6 just in case => no improvements
LabVIEW uses the older OSS sound driver. We discover devices by attempting to open /dev/dsp followed by /dev/dsp1 - /dev/dsp9 (or 0-15 for the newer LV sound API). Some newer distributions have moved the location of those OSS device files to places like /dev/sound. Check if you have a /dev/dsp* file, and if not try to figure out where it is and create a symlink to it at /dev/dsp.
If you don't have one at all then make sure that the OSS kernel module is loaded
Also, I'm confused about which sound API you are using. You mentioned both lvsound.so and lvsound2.so. If you are using the newer API (the one on the palettes, in vi.lib/sound2/lvsound2.llb) then you should be looking at lvsound2.so. However, if we were having trouble loading that library then the VIs would be broken rather than just returning errors at runtime. I suspect the real issue is a missing dsp device file.
Oss is no more supported in Rhel6 (=> no dsp* file to link).
Pulseaudio is used instead.
By using /etc/modprobe.d/dist-oss.conf it could be possible to activate oss but it's difficult to make it work.
Maybe we missing something ?
This feature requires OSS*. You either need to find a way to install the OSS emulation on RHEL 6 or you won't be able to use the feature.
*The reason we used OSS in the newer API is because at the time that we were porting this feature to Linux some of our officially supported distributions still did not ship with the ALSA driver. OSS was the only driver we could use that was guaranteed to be supported on each distribution at that time.
<rant>It is unfortunate that Linux distributions routinely make changes like this which break third party applications. The result is that we just can't keep up with all the different ways that things can break in different Linux distributions, and unfortunately customers like you are stuck in the middle. If you ever find yourself asking why our support for Linux isn't better then this is the real reason.</rant>
It seems indeed that it does not work because /dev/dsp* does not exist on the system.
I managed to create some by using the command "./MAKEDEV audio" but the /dev/dsp* does not appear after a reboot. And that does not solve the problem.
I also checked if OSS was loaded :
snd_seq_dummy 1750 0
snd_seq_oss 30764 0
snd_seq_midi_event 7235 1 snd_seq_oss
snd_seq 56557 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_event
snd_seq_device 6626 3 snd_seq_dummy,snd_seq_oss,snd_seq
snd_hda_codec_analog 79931 1
snd_hda_intel 25194 0
snd_hda_codec 82097 2 snd_hda_codec_analog,snd_hda_intel
snd_hwdep 6746 1 snd_hda_codec
snd_pcm 84700 2 snd_hda_intel,snd_hda_codec
snd_timer 23087 2 snd_seq,snd_pcm
snd 70021 9 snd_seq_oss,snd_seq,snd_seq_device,snd_hda_codec_analog,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer
soundcore 8052 1 snd
snd_page_alloc 8628 2 snd_hda_intel,snd_pcm
I expected to see snd_pcm_oss and snd_mixer_oss but not found !
I'm trying to load them but it seems a bit complex...