VoIPowering Your Office: Installing CallWeaver, the 'Better' Asterisk

By Carla Schroder | Mar 24, 2008 | Print this Page

Last week we introduced ourselves to CallWeaver, the open-source community-driven Asterisk fork. The nice folks behind CallWeaver and admins who use it claim it's faster, handles bigger loads, and is more reliable than Asterisk. Of course everyone thinks their own baby is the most beautiful, so let's install it and take it for a drive.


You get no sissy hand-holding for installation; you have to compile from source code just like a real guru. In fact the entire installation and configuration process is a bit bumpy and unpolished. This step is not for someone who is in a hurry, rather an undertaking for the admin or developer who wants to try a (purportedly) superior core server for their iPBX. Don't worry, I've gone ahead and marked the rough spots, so stick with me and you'll get there in no time.

With CentOS, Fedora, and other siblings in the Red Hat Linux family you can get a complete build environment in one swoop by running yum groupinstall "Development Tools". On Debian and its progeny, use aptitude install build-essential.

Next, make sure you have the libtiff development libraries installed. On Debian et al, this is either libtiff3-dev or libtiff4-dev. For the CentOS gang it's libtiff-devel.i386. You should also install the development libraries for OpenSSL, JPEG, Ncurses, libpri, readline, and Speex, which you should be able to install with your package manager.

Now you must wander farther afield and download Spandsp, which is the core digital sound processing system. The CallWeaver maintainers believe this is superior to the DSP system built into Asterisk—and it includes full T.38 fax support, which Asterisk does not. I'm all for better DSP performance, though sending faxes over VoIP doesn't seem like such a wonderful thing to me. But apparently a lot of people like it, so there you have it.

Then get yourself Vale, which handles media streaming over RTP (Real-time Transport Protocol).

Now fetch yourself the current CallWeaver release candidate. Now you should have three tarballs that look like this:

  • spandsp-0.0.4pre18.tgz
  • vale-0.0.2.tgz
  • callweaver-RC-latest.tar.gz
All three of these also offer daily snapshots, if you desire to test the bleeding edge. These are all gzip compresses tar archives, so use the same command to unpack all three:

$ tar zxvf [filename]

Next, review each directory for READMEs and installation instructions. Spandsp and Vale don't have any special requirements, so you can go ahead and install them in the same order as they are listed above. Change to your spandsp-0.0.4 directory and run these commands:

$ ./configure
$ make
# make install

You need root privileges to run make install. Then change to your toplevel Vale directory and do the same ./configure, make, make install routine.

Now you should create your CallWeaver user and group:

# useradd callweaver

This should also create a 'callweaver' group. If it doesn't, create one yourself. You never want any service running as root; always as an unprivileged user.

Now go to your CallWeaver directory and read InstallGuide.txt. I'm going to pretend I don't have any Zaptel devices for easier testing. I can always install Zaptel modules later. InstallGuide.txt names a number of other dependencies that you may need, and it recommends that you download from Subversion. That is different than the instructions I've given here, which are a bit more conservative than pulling the latest snapshots from Subversion. The callweaver-RC-latest.tar.gz includes sounds, so you don't need to fetch those separately.

First run this command from your top-level CallWeaver directory:

# ./bootstrap.sh

This is a sort of "pre-flight check" that sets up the build environment. If it finds any missing dependencies, install them and then run it again. When you get a clean run, run ./configure. This is the step with the most potential to drive you nuts—it finds missing dependencies one at a time. So you install the missing bit, run ./configure again, and then it finds a second missing dependency. Lather, rinse, repeat. Fortunately there is an end to this process—just hang in there. When it is successful, you'll see this:

   *   Configure status   *
Followed by file locations and other useful information. When you get a successful run, go ahead and do make, make install.

Now what do you do? The fun is just beginning. Try starting CallWeaver:

# callweaver
callweaver: error while loading shared libraries: libspandsp.so.0: cannot open shared object file: No such file or directory

Oops. There are at least a couple of ways to fix this. I copied the offending library into CallWeaver's lib directory:

# cd /usr/local/lib/callweaver
# cp /usr/local/lib/libspandsp.so.0 .

Don't forget the trailing dot—that means "copy the file right here." Now it should start just fine.

There is a fair bit more work to do before we have a running system, such as setting up startup files, and configuring a dialplan. Come back next time and we'll get it going to where we can actually make a phone call.