Webex audio not working with 11.10
I can see presentations, chat, screen-share, everything in webex meeting but can't make audio work, I always get:
"The Audio Device is Unaccessible Now"
Does anyone know what is happening?
Thanks.
Solution 1:
I just posted an answer to this question over at http://ubuntuforums.org/showthread.php?p=11757928
The WebEx applet uses a proprietary native module to access the sound software. It is a 32-bit .so, so it cannot be loaded by a 64-bit JVM. The usual solution seems to be to run a 32-bit browser any time you are using WebEx. As an alternative, I have patched the nspluginwrapper utility so that you can run a 32-bit Java plugin from a 64-bit browser (I've tested with Firefox, it should also work with Chrome).
Download the latest sources for nspluginwrapper from http://nspluginwrapper.org/download/
Expand the file (tar -xvzf) in a convenient location
Apply the following patch to the file npw-viewer.c:
--- npw-viewer.c 2011-06-30 23:18:57.000000000 -0400
+++ nspluginwrapper-1.4.4/src/npw-viewer.c 2012-03-11 14:09:35.104158681 -0400
@@ -5128,6 +5128,17 @@
}
handles[n_handles++] = handle;
dlerror();
+#else
+ /* Install libstdc++ for java */
+ const char libstcpp[] = "libstdc++.so.6";
+ D(bug(" trying to open standard C++ runtime '%s'\n", libstcpp ));
+ if ((handle = dlopen(libstcpp, RTLD_LAZY|RTLD_GLOBAL)) == NULL) {
+ npw_printf("ERROR: %s\n", dlerror());
+ return 1;
+ }
+ handles[n_handles++] = handle;
+ dlerror();
+
#endif
D(bug(" %s\n", plugin_path));
if ((handle = dlopen(plugin_path, RTLD_LAZY)) == NULL) {
You may need to get some additional libraries to make things work. In particular, I installed:
sudo apt-get install libcurl4-nss-dev libxt-dev libgtk2.0-dev g++-multilib
YMMV.
After getting the dependencies, its:
./configure
make
sudo make install
Then you will need a 32-bit jre. This can be downloaded from Oracle's website and installed.
Finally, locate the file libnpjp2.so
in the lib
directory of the 32-bit Java installation. I found it in /usr/lib/jvm/ia32-java-6-sun/jre/lib/i386/
.
Execute
sudo nspluginwrapper -i /usr/lib/jvm/ia32-java-6-sun/jre/lib/i386/libnpjp2.so
(Or wherever your Java was installed.)
Then (re) start Firefox. Type "aboutlugins" in the address bar. You should see your newly installed 32-bit Java plugin.
Try joining a WebEx meeting with sound
Solution 2:
I know this thread is stale, but I just went through 2 days of getting the solution provided by Dan Menes to work (and Dan's method DOES WORK), but there were some additional steps I wanted to share so that others don't lose 12 hours worktime like I did with the tweaks. So, here we go:
First, I was not able to apply Dan's patch with the "patch" command in the usual way. When I tried to to that, I got the following error (the same error that poster "NW Tech" got, which is:
Hunk #1 FAILED at 5128
Before fixing that, I ripped out all my existing Java - ALL! I was having an issue that when I ran webex I was not sure which of the 5 or 6 installed javas, both 6 and 7, it was using, and since I do not know how to be sure, I just ripped all java out except the one to be used for webex, so that I could be sure. You can either do that, or else if you know how, be sure that firefox is using your wrapped java as described below. If you opt to rip out all your java first as I did, then I take NO RESPONSIBLITY for whatever that might break for you - I was just focused on fixing this webex problem with no audio through computer on Ubuntu Linux and I wanted to be sure I was definitely using the wrapped 32-bit java, so I ripped all other java in alternatives out to be sure.
So, proceeding on...
Also, I used the last distribution of JDK 1.6 (1.6.0_45) NOT JDK 1.7 (it might work I haven't tested it don't care I'm done with this irritating problem 1.6 64-bit wrapped java works for webex sound, so, FINE! I'm done!).
Before installing Oracle Sun Java 1.6.0_45 I completely ripped out all existing java on my Ubuntu 12.04. To do that I used these steps:
sudo apt-get update
apt-cache search java | awk '{print($1)}' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common' | xargs sudo apt-get -y remove
sudo apt-get -y autoremove
After running those steps, I installed JDK 1.6.0_45 and then I installed it in alternatives and then checked to see that alternatives had ONLY 1.6.0_45 to make sure I was definitely picking up the java-32 wrapped for 64-bit browser that I wanted.
Before I could do that, however, I had to put it into alternatives, which I did this way:
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/java-6-oracle/bin/java" 1050
(your location of your java32 jdk6 may vary - that's where I put mine).
Idk what the number 1050 means - it's the "priority" I don't know if that matters or not. My alternatives looks like this now:
gstanden@Ubuntu1204:/usr/lib/mozilla/plugins$ sudo update-alternatives --config java
[sudo] password for gstanden:
There is 1 choice for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-6-oracle/bin/java 1050 auto mode
* 1 /usr/lib/jvm/java-6-oracle/bin/java 1050 manual mode
Press enter to keep the current choice[*], or type selection number:
gstanden@Ubuntu1204:/usr/lib/mozilla/plugins$
So, after sleeping on it, on Satuday morning I took at look at the code at line 5128 and just pasted the patch in manually to the file since patch was having issue applying it automatically.
/home/gstanden/Downloads/nspluginwrapper-1.4.4/src/npw-viewer.c
Here are the before and after snippets which show how you have to place the patching code:
here's the diff of the patched npw-viewer.c vs. the non-patched npw-viewer.c :
gstanden@Ubuntu1204:~/Downloads/nspluginwrapper-1.4.4/src$ diff npw-viewer.c npw-viewer.c.bak
5129,5138c5129,5130
< #else
< /* Install libstdc++ for java */
< const char libstcpp[] = "libstdc++.so.6";
< D(bug(" trying to open standard C++ runtime '%s'\n", libstcpp ));
< if ((handle = dlopen(libstcpp, RTLD_LAZY|RTLD_GLOBAL)) == NULL) {
< npw_printf("ERROR: %s\n", dlerror());
< return 1;
< }
< handles[n_handles++] = handle;
< dlerror();
---
> handles[n_handles++] = handle;
> dlerror();
If you want to just cut to the chase, then here's the lines that are affected, line numbers shown for convenience. I just went in an applied Dan's patch by hand, since "patch" gave error, and it worked.
Starting from Line 5128 here is how it should look after the patch has been applied:
5128 }
5129 #else
5130 /* Install libstdc++ for java */
5131 const char libstcpp[] = "libstdc++.so.6";
5132 D(bug(" trying to open standard C++ runtime '%s'\n", libstcpp ));
5133 if ((handle = dlopen(libstcpp, RTLD_LAZY|RTLD_GLOBAL)) == NULL) {
5134 npw_printf("ERROR: %s\n", dlerror());
5135 return 1;
5136 }
5137 handles[n_handles++] = handle;
5138 dlerror();
5139 #endif
5140 D(bug(" %s\n", plugin_path));
5141 if ((handle = dlopen(plugin_path, RTLD_LAZY)) == NULL) {
Note the "#" characaters on line 5139 and line 5129 are supposed to be there, don't remove them, leave the # in the code. Of course, the line numbers do not go in the finished edited file, they are just shown here for convenience to help you locate where this patched code goes.
Now you can proceed on to run make from the command line:
cd /home/gstanden/Downloads/nspluginwrapper-1.4.4
make
Well, the make will give error. The poster "910Radar" figured that one out. You have to append a little snippet to the make command and run it manually. You can see "910Radar" post here: http://ubuntuforums.org/showthread.php?t=1858097
and what he did (and what I did) was run the make command manually, as follows (and it works) for it. That command is here, just paste it into the command line:
gcc -std=c99 -o npplayer npplayer-npw-player.o npplayer-debug.o npplayer-rpc.o npplayer-utils.o npplayer-glibcurl.o npplayer-gtk2xtbin.o -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0 -lglib-2.0 -lcurl -lXt -lX11 -lpthread -lgthread-2.0
and it works. Now you can run "make install" for "nspluginwrapper" and then you can run it to wrap the 32-bit java you have installed so that the 64-bit firefox can use it, that command is:
sudo nspluginwrapper -i /usr/lib/jvm/java-6-oracle/jre/lib/i386/libnpjp2.so
which should return a command prompt with no errors and no messages. Note, if your libnpjp2.so is located in a different directory, then use your path of course.
I also found that although pulseaudio was working on my Ubuntu 12.04 (youtube, video, etc) the "test audio" was not working on the "sound" panel in the Ubuntu settings. Figuring it would be a good idea to fix any issue I found with sound on my Ubuntu, I fixed that too. I found that fixing that problem requires this step:
sudo apt-get install libcanberra-pulse
and then once that is done, the "test" right and left speakers will work just great (a soft female voice speaks to you, how nice, telling you your speakers are working on each side, how lovely).
Also, if you had already been to the page that says to rip out pulseaudio, and found like I did, that ripping out pulse audio doesn't work as far as fixing the no computer sound for webex problem (at least it didnt for me) then you can put pulse audio back, and also pulseaudio's toolbar widget, back on Ubuntu 12.04 using these commands:
sudo apt-get install pulseaudio
sudo apt-get install indicator-sound
(puts pulse audio back and puts the indicator back on the widgets at top). You might want to reboot after doing that.
Now try it out and hopefully if I remembered all steps, you will be able to run webex sound from your 64-bit mozilla firefox browser on Ubuntu 12.04 64-bit and will have the built in webex sound via computer working just fine! A little applet opens up when you click on "use my computer" for sound when in webex.
Enjoy, and thanks big time Dan Menes and "910Radar" and many other "unknown posters" whose posts about basic things like how to patch src code, how to add entries to java alternatives, etc., all made it possible to finally solve this issue on my Ubuntu laptop!