How to get webex to work on Linux?

11 Sep 2012 at 00:00:00 - 6 comment(s)

A company I work for is using webex for audio/video conferencing. Webex say they support linux and more specifically Ubuntu 10x, Red Hat (5/6), Open SuSE (11.3/11.4) and Fedora (13/14) with Firefox 3.x, 4.x, 5.x. As I am using Arch Linux and I don't want to use a virtual machine, I have been trying to get it to work on it. As we all know, any linux distributions is pretty much the same thing so if it works on 1 distribution it should be possible to get it to work on any other. So let's see how to get webex to work on Linux in general and Arch Linux in particular.


What you need to know?

This post, on top of detailing what is required to get webex to work on linux is mainly for me to fix one problem I encountered when trying to use webex on linux: The Audio Device is Unaccessible Now.

First thing to know is that webex on Linux works exclusively on 32 bits. So if you have a 64 bits distribution installed you will need to get firefox and java in 32 bits. I believe it's the case of most folks out there now.

Although webex states they support firefox 3.x, 4.x and 5.x, I have it working on Firefox 15 which is the latest at the time I write these lines.

Setup 32 bits environment within 64 bits install

Now I went for the option of setting up a 32 bits environment within my 64 bits installation, there are plenty of other ways to get firefox 32/java 32 running within your 64 bits install. The following is for arch only, I'll let you dig through google on how to do this on your distribution.

I won't put the explanation for the commands, there is an excellent page on the arch wiki where it's all explained: Install bundled 32-bit system in Arch64

mkdir /opt/arch32
sed -e 's/\$arch/i686/g' /etc/pacman.d/mirrorlist > /opt/arch32/mirrorlist
sed -e 's@/etc/pacman.d/mirrorlist@/opt/arch32/mirrorlist@g' /etc/pacman.conf > /opt/arch32/pacman.conf
mkdir -p /opt/arch32/var/{cache/pacman/pkg,lib/pacman}

You need to edit /opt/arch32/pacman.conf to have:

Architecture=i686

Then

pacman --root /opt/arch32 --cachedir /opt/arch32/var/cache/pacman/pkg --config /opt/arch32/pacman.conf -Sy
pacman --root /opt/arch32 --cachedir /opt/arch32/var/cache/pacman/pkg --config /opt/arch32/pacman.conf -S base base-devel

Uncomment some mirrors in /opt/arch32/etc/pacman.d/mirrorlist

Edit /opt/arch32/etc/pacman.conf and change Architecture=auto into Architecture=i686

Create a arch32 script in /etc/rc.d/arch32

#!/bin/bash

. /etc/rc.conf
. /etc/rc.d/functions

# Add '/var/run /var/lib/dbus' to the list to enable pulseaudio.
dirs=(/dev /dev/pts /dev/shm /tmp /home)

case $1 in
    start)
        stat_busy "Starting Arch32 chroot"
        for d in "${dirs[@]}"; do
         mount -o bind $d /opt/arch32$d
        done
        mount -t proc none /opt/arch32/proc
        mount -t sysfs none /opt/arch32/sys
        add_daemon arch32
        stat_done
        ;;
    stop)
        stat_busy "Stopping Arch32 chroot"
        for (( i = ${#dirs[@]} - 1; i >= 0; i-- )); do
         umount "/opt/arch32${dirs[i]}"
        done
        umount /opt/arch32/{proc,sys}
        rm_daemon arch32
        stat_done
        ;;
    restart)
        $0 stop
        sleep 1
        $0 start
        ;;
    *)
        echo "usage: $0 {start|stop|restart}"
esac
exit 0

Make it executable

chmod +x /etc/rc.d/arch32

Copy some files over

cd /opt/arch32/etc
cp /etc/passwd* .
cp /etc/shadow* .
cp /etc/group* .
cp /etc/rc.conf .
cp /etc/resolv.conf .
cp /etc/localtime .
cp /etc/locale.gen .
cp /etc/profile.d/locale.sh profile.d
cp /etc/vimrc .
cp /etc/mtab .

Start the arch32 script

/etc/rc.d/arch32 start

Get firefox / java / java plugin to work

Now get java, I used the latest jdk (just a note that it didn't work on java 6 for me due to class cast exception but I'll come back to that later on how to troubleshot)
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Put the downloaded file in /opt/arch32/opt/

Chroot into the arch32

chroot /opt/arch32

Setup pacman-key

pacman-key --init
pacman-key --populate archlinux

Install some required packages (it will pick up necessary dependencies as well, if you don't install this then it won't work)

pacman -S libxmu xorg-fonts-misc

Install firefox

pacman -S firefox

Install java

cd /opt/
chmod +x jdk...
./jdk...
mv jdk1... javaX

Edit /etc/profile to add java to your path with something like

PATH=$PATH:/opt/javaX/bin
export PATH

Create a user for webex

useradd -m webex
passwd webex

Add the java plugin to firefox for webex user

su - webex
cd .mozilla/plugins/
ln -s /opt/javaX/jre/lib/386/libnpjp2.so .

Now very important (and that's what took me a while to figure out), you need to export LD_LIBRARY_PATH to add the libs for java so that the webex java applet finds them.

export LD_LIBRARY_PATH="/opt/java7/jre/lib/i386"

If you want to check wether java plugin is working or not, you can visit this page: Test Java Plugin is working

Run firefox and try webex (note that you should set your default input/output audio devices before because you can't change them within webex)

firefox

If you can't run X apps from the webex user because of permission then make that you can run X app into your currently running X (from your user running the X session)

xhost +

That's it you are all done.

Troubleshot

If you still don't have webex working then don't worry, you can troubleshot, find out why it doesn't work and fix it. To do so, you will use the Java Console. Here is how.

Run jcontrol, go in the Advanced tab and choose Java Console -> Show Console. Restart firefox. Now when the webex java applet will start, the Java Console will popup and you'll be able to see all the errors and why it doesn't work.

6 comments

Notify me of follow up comments