Filing a KPhone Bug Report
Since writing the article "Building a Call Center with LTSP and Soft Phones", which appears in the September 2005 issue of Linux Journal, there have been a few new happenings regarding KPhone. This article presents those new observations and hopefully gives enough direction that others may continue this work and post their findings for the benefit of the Open Source community.
The majority of development I did on this project was with KPhone version 4.0.5. It worked fairly well but suffered occasional application crashes that were rather annoying. Looking ahead to this article when the original article went to print, I had hoped to test thoroughly a new version of KPhone that would have fixed the problem, so we would have a bullet-proof LTSP/soft-phone solution. However, that is not the case.
No bug-tracking or reporting system appears to exist for KPhone, so I contacted Wirlab and mentioned our experiences. The response I received basically was: "We haven't had such problems, but there are many changes since that version. Try upgrading and see if that helps." Unfortunately, my access to the system has been waning since I wrote the original article, and I have been able to do only limited testing since that time.
We had some success with using v4.1.1, and it appeared to snap shut less frequently. However, the DTMF tones it generated were not all correct--# was sent as a *, for example--and it still did not have a keep-alive feature to help when traversing a NAT.
KPhone 4.2 now is available, and the Changelog does not say anything about fixing DTMF. However, mail I received from Wirlab prior to the release of 4.2 indicated that the DTMF fix already was in CVS head. Below is the KPhone 4.2 package.def file for LBE, which builds KPhone.
# # package.def file for building a package in the the LTSP build environment # # Copyright (c) 2003 by James A. McQuillan (McQuillan Systems, LLC) # # This software is licensed under the Gnu General Public License. # The full text of which can be found at http://www.LTSP.org/license.txt # # NOTE: for some reason "-I /usr/X11R6/include" has to be put into # kphone/kphone/kphone/Makefile to get trayicons to build. VERSION = 4.2 RELEASE = 0 PKG1 = kphone-4.2.tar.gz MD5SUM1 = 632abebc16d4f40bf03d191892e00e22 SOURCE1 = http://www.wirlab.net/kphone/${PKG1} UNPACK1 = gunzip < ${TARBALL} | tar xf - #BUILDDIR = kphone-build BUILDDIR = kphone SOURCEDIR = kphone CONFIGURE = export CFLAGS="-march=i386" && \ export PREFIX=/opt/ltsp/i386 && \ export QTDIR=/usr/qt/3 && \ export PATH=$QTDIR/bin:$PATH && \ export MANPATH=$QTDIR/doc/man:$MANPATH && \ export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH && \ ../${SOURCEDIR}/configure --prefix $PREFIX --x-includes=/usr/X11R6/ include BUILD = export CFLAGS="-march=i386" && \ export PREFIX=/opt/ltsp/i386 && \ export QTDIR=/usr/qt/3 && \ export PATH=$QTDIR/bin:$PATH && \ export MANPATH=$QTDIR/doc/man:$MANPATH && \ export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH && \ make INSTALL = export CFLAGS="-march=i386" && \ export PREFIX=/opt/ltsp/i386 && \ export QTDIR=/usr/qt/3 && \ export PATH=$QTDIR/bin:$PATH && \ export MANPATH=$QTDIR/doc/man:$MANPATH && \ export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH && \ make install CLEAN = export CFLAGS="-march=i386" && \ export PREFIX=/opt/ltsp/i386 && \ export QTDIR=/usr/qt/3 && \ export PATH=$QTDIR/bin:$PATH && \ export MANPATH=$QTDIR/doc/man:$MANPATH && \ export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH && \ make clean
You still must follow the instructions in the print article in order to build KPhone 4.0.5, as the change to CFLAGS in kphone/kphone/kphone/Makefile still is required for a successful build.
Another unfortunate bit of news is that due to resource shortages, Wirlab is looking for a new home for KPhone. Mid-June of this year, I got the impression that there were no plans for another release, but 4.2 came out on July 4th. If anyone would be interested in picking up this project, you can contact kphone@wirlab.net; I am sure they would be happy to talk to you.
Hopefully, KPhone will continue to be supported. However, as often is the case in the open-source realm, there are alternatives. One possibility is Twinkle. Although fairly early in its development, it does have a nice interface. It also requires the Qt library, as well as two other main libraries: ccRTP, a C++ library that implements RTP, the real-time transport protocol from IETF; and commoncpp2, a portable class framework for writing C++ applications. Both of these packages are available for SuSE Linux systems, as ccRTP and CommonC++, respectively, and I am sure for all of the other major package-based distributions as well. Gentoo has commoncpp2 in its portage tree, but I found no ccRTP port. You always can install it from source, though.
I mention the libraries required for these packages, because it is quite likely that the LTSP Build Environment not only needs package definitions for the application, but also any necessary libraries. That means, the more atypical libraries required by an application, the more difficult it will be to install and get running in the LTSP environment.
SIP VoIP phones, both hard and soft, are the most common in the field today, and they are fine for internal network systems, as described in my print article. However, when it comes to VoIP phones accessing a server outside of a NAT, the IAX2 protocol is much easier to deal with. In that arena, Kiax is available and it requires only Qt and iaxclient libraries. IAXComm also is available and requires the WxWindows GUI library. For ease of building, I recommend trying Kiax. A check of the digium.com mailing lists shows little commentary about Kiax, which might not be all bad. At least there are not many people decrying its bugs.
Given the superiority of IAX2 for traversing NATs and the light library requirements of Kiax, that will be the next Linux softphone I use with LTSP. One notable feature Kiax has that KPhone does not is allowing the selection of separate audio devices for Input Output and Ring. This is particularly useful if you want your main audio I/O to be through a headset, but you want the ringtone to be audible even if the headset isn't being worn. All in all, Kiax looks quite promising.
For the time being, I have no more information on our economical phone installation. I have plans to give Kiax a try in the near future, and perhaps there will be enough good news to share in another Linux Journal Web site article.
Michael earned his degrees in Computer Science from Michigan Technological University and Purdue University more years ago than he likes to admit. He now lives in rural Michigan with his wife and five children. He has been using Linux since 1994 and now works with Ideal Solution, finding new and creative ways to put open-source software, including LTSP and Asterisk, to work for clients. He can be reached at george@idealso.com.