T38modem SIP configuration with Callcentric

Callcentric is a popular USA-based SIP provider. In addition to a free fax-to-Web receiving-only service, they also support the T.38 protocol for transmitting and receiving faxes. However, Callcentric does not provide detailed support for this feature. This article will document the steps taken to successfully use this service, as tested on a system with Ubuntu Linux 9.10 “Karmic Koala”, the latest version of the t38modem software, and the efax-gtk faxing software.


This guide assumes that you are running Ubuntu Linux 9.10 “Karmic Koala”. You must already be comfortable with compiling Linux software, and have the build-essential package installed. You will also need to have the libopal3.6.4 and libpt2.6.4 packages installed, or newer versions of these packages if they become available.


Unfortunately, there are no pre-built packages available for versions of t38modem newer than 0.8.2, and SIP support was not introduced until version 1.0.0. As of writing, the most recent version of t38modem available from the project homepage was 1.2.0. Download this package from Sourceforge. You will also need to download the source for OPAL that matches the version of libopal installed on your computer. These can be found from the Opal project homepage.

First, you will need to configure and compile the OPAL sources. Unfortunately, the Opal project uses DOS line endings in its text files, which will cause your call to ./configure to fail cryptically. Run this command in the root OPAL source directory to fix this problem:

find . -type f | xargs dos2unix

After this, you should be able to run ./configure and make. You should not run make install, since you already have this installed through your package manager. The OPAL package only had to be manually compiled because t38modem‘s subsequent compilation depends on several files that are generated during this build process.

Next, compile t38modem. Change into the directory where you extracted the source package, and issue the following command:

OPALDIR=/path/to/your/opalfiles PTLIBDIR=/usr/share/ptlib make USE_OPAL=1 USE_UNIX98_PTY=1

If OPALDIR is left unset, the compiler will look for your OPAL files in the directory ~/opal. PTLIBDIR is required. I have entered the working location for a Ubuntu system. This command should complete successfully, and you will find your new t38modem executable in the obj_linux_x86_64_opal subdirectory (if you are running on an x86-64 system). You may run it from this directory without installing it systemwide.


I found that it was necessary to run as root; hence this command begins with sudo. This is run from the obj_linux_x86_64_opal subdirectory. Be sure to replace your ID and password as required, and note that this configuration is for sending faxes only. More advanced configurations are beyond the scope of this article.

sudo ./t38modem --sip-proxy YOUR_CALLCENTRIC_ID:YOUR_CALLCENTRIC_PASSWORD@callcentric.com \
--no-h323 --sip-no-listen -p +/dev/ttyx0 --route 'modem:.*=sip:<dn>@callcentric.com' \
-u YOUR_CALLCENTRIC_ID --stun stun.ekiga.net

Note that, although Callcentric claims that a STUN server is unnecessary for their service, I could not get this command to work without using one.

After a few seconds, you should be able to send faxes using your application of choice. Instruct it to send on the device ttyx0; I otherwise made essentially no changes to my application. You will most likely have to run this application as root; I used efax-gtk as provided in Ubuntu, and started it with the command sudo efax-gtk. Any advice on how to accomplish this without root privileges would be appreciated.


t38modem provides a lot of debugging information when the -t command-line switch is used. -tt, -ttt, and so on will give more detail. t38modem --help appears to have the best and most up-to-date documentation at the moment.

Callcentric also seems to require that calling a USA number follow eleven-digit format, e.g. 1-703-555-5555, or full international-call format, e.g. 011-1-703-555-5555.