Linux Soft Phone Roundup
Disclosure: This post may contain affiliate links. As an Amazon Associate, I earn from qualifying purchases.
I’ve been working heavily with VoIP for the last couple of years, and every few months I find myself looking at SIP soft phones again. I haven’t really used them at all under Linux in a long time because none of them quite fit my needs or are as good as the ones available under Windows. Because of this, and the fact that I do 99% of my work under Linux, I’ve got 8 SIP phones, 3 ATA’s and 2 regular phones sitting on my desk right now. This makes for quite a bit of clutter.
As I said, every few months I look again to see how the various soft phones have progressed. The projects I’ve been working on the for the last few weeks would have gone much easier if I had a soft phone that would have suited my needs. Make a minor software tweak, dial from one phone on my desk to another, wait 10 seconds, repeat 30 or 40 times in the average day depending on what I was testing.
This is a rather big posting, so it has been split into multiple pages. Click the Read More link below to get to the actual roundup.
I’ve got my faithful X-Lite running on the Windows machine, but that, too is a bit of a pain because its not running on my primary machine and I have to shift focus just like I do with a hard phone. So that doesn’t really give me much of an advantage. I know that there is a version for Linux, but its interface doesn’t really fit in well under my Gnome or XFCE desktop environments. I’m currently running 64-bit Ubuntu 10.10, so it needs to run there as well.
So this week I decided to look again at what was available under Linux. Here are the requirements I had:
- Must work reliably in my environment. I know this seems like a no-brainer, but its important. When I call it, it needs to ring. When I answer, I need to have two way audio through my firewall. When I make a call, it needs to go through. I don’t need to chase down problems with my SIP system if the problem really lies with the soft phone
- A usable interface
- Able to support multiple SIP accounts
- Stay out of my way when its not active and not take up 1/3rd of my screen when it is active
- Easy to access and make or answer calls
- Multiple audio profiles, at least two – one for “speaker phone” and one for “handset or headset”
- Ability to assign global hot keys to answer calls
- Video support would be nice, but not required
Doesn’t sound like too much, right? Unfortunately it seems that it is. So here are the packages I looked at:
This list is by no means exhaustive of all the soft phones that are available, but these are probably the most used and most well developed of them all. The notable exception to that being Empathy. Its relatively new as far as soft phones go, but it is now the default messenger and communications client in Ubuntu and Gnome so I thought I would include it in the list.
There isn’t a single of them that fits my needs perfectly. I’ll list each of them individually and hopefully cover some of the strengths and weaknesses of each of them and why I chose to use one over the other.
Ekiga
Ekiga is probably one of the older and more stable soft phone available on Linux. It meets most of my criteria pretty well. Where it falls somewhat short is the user interface.
The Call Panel (where the Ekiga log and “Standby” text is) area is where you would see video during a call, or the current status of an active call, number, volume controls, the selected codec.
It does support multiple accounts, and it is quite stable.
Ekiga is actually quite good in most aspects. Its missing a few of my key feature requirements though. Most notably, it doesn’t deal well with NAT. There is no where in the configuration to setup a STUN server or enable or disable any of the more advanced NAT handling features. Because of this, I wasn’t able to receive any calls with Ekiga, only make them. I could have jumped through hoops and done port forwarding in my router, etc., but thats not an acceptable requirement for a SIP client to have.
It also doesn’t let me define any hot keys for anything. I have to use my mouse to do everything. Its default window is a bit bigger than it needs to be, but that can be adjusted easily by disabling the Call Panel.
Its also rather annoying that even though you can see the buttons, merely having the window focused is not enough to let you dial with the numeric keypad or number keys. You have to actually be focused in the text box or click on the buttons with your mouse to dial a number.
As I noted, Ekiga has support for Video as well, but it seems mostly only useful for connecting with others running Ekiga since it supports only H.261 and Theora video codecs. Most conference calling works with H.263 or H.264.
Ekiga Conclusions
So, with Ekiga I got most of what I wanted, with the biggest exception being that I couldn’t actually use it to receive inbound calls. So much for Ekiga, moving on to the next one.
Twinkle
As you can see by this screenshot, Twinkle immediately fails one of my criteria. Its default configuration is huge on the screen. You can make it smaller by disabling the Line Status Display and the Buddy List, but in order to see the control buttons on the top, it is still very very large.
The icons are another issue. They’re old Yahoo Messenger icons. Not exactly the best or most accurate for a phone. So they really need to have the text under them just so you know what you’re clicking on. And you do have to click since are no global hot keys for Twinkle. It does have hot keys available when the application is in the foreground. It does stay out of the way when you minimize it to the notification area. A bit too much, though. When an incoming call comes in it rings phone and the notification area changes to let you know there is a call coming in. It doesn’t pop up any other windows or other notifications. That means if your speakers are off, as mine are often, you may never know a call is coming in. Since I use a USB headset for VoIP, I don’t need the speakers on to be on the phone, but I do need to know that a call is coming in.
When minimized into the notification area, Twinkle does let you click on its icon and have access to most calling functions, answer, reject, hold, etc. So you don’t need to have the window up. Still, its not quite finished enough.
Twinkle also only seems to support one active profile at a time, which means only a single SIP account can be active. You do get two sessions to do three way calling, but still only one active account.
Twinkle does have very good NAT support and supports STUN. It had no problems making or receiving calls sent to it.
Twinkle Conclusions
Twinkle is very stable and very capable. It has good NAT and is more than capable for day to day use if you have only one SIP account. It will probably take you some time getting used to its huge and somewhat unpolished interface, however. For me, it wasn’t quite there yet, missing global hot keys, a polished and usable interface, and supporting multiple accounts.
Perhaps Empathy will be better?
Empathy
Empathy is a relative newcomer to the VoIP/SIP scene. As part of the Telepathy communications suite, it shows a great deal of promise in providing a seamless online presence. It fits in perfectly with Gnome and supports many different instant messaging protocols and could be a Grand Unified Messenger. It could be, but it probably won’t.
Its very minimalistic in its design though. It is intended to work with the Indicator Applet and Indicator Applet Session in the Gnome Desktop. Thats got a whole slew of different issues that are the subject of a totally different rant.
Empathy sort of meets some of my critera, in a round about way. It supports NAT and has video. It also supports multiple accounts, and is quite stable.
Whats missing is a way to choose the audio device you want to use (you have to use PulseAudio tools to do that, which is a complete nightmare), what codecs are available and in what order, a dialpad, hot keys, etc. The list goes on about all of its strange issues and is well discussed in other forums.
The biggest problem with Empathy is that it hides too much from the user and doesn’t give them any control at all over how it operates. It only allows the most basic configuration options.
So, Empathy is still a long way from being a usable soft phone except for the most basic of users (who probably wouldn’t be running Linux to begin with). The concept is pretty good, though, but the developers have steadfastly decided to ignore requests to give more options and control over the behavior of the application. Its a pity, too. Of all various messaging systems I use on a daily basis, Empathy shows the most promise, but it will likely never be fulfilled because they’re not allowing users any flexibility or providing the features to replace their existing programs.
Empathy Conclusions
Not usable except for the most basic of needs. Making a phone call takes a minimum of 5 mouse clicks before you can even get to the dialer. Receiving calls is great, but with focus stealing prevention, the notification window pops up behind the windows you’re running. Empathy is a solid bit of software that is barely usable.
Perhaps SFLphone?
SFLphone
I had never heard of SFLphone until earlier this week. It is in part what prompted me to write this roundup.
Let me start off by stating that my first impressions of it were not at all positive. The version in Ubuntu’s repository is not very stable and would crash often. The latest release version from Launchpad (v0.9.10) was also not stable, it would crash when I minimized it to the system tray. The version that released a few days ago, v0.9.11, would also crash when minimized. The rest of the application showed enough promise, though, that I installed the latest snapshot repository and got a daily build. I’m glad I didn’t dismiss it out of hand. The snapshot that I’m running now from November 10th doesn’t crash and seems to work pretty well.
As you can see from the screenshot, it meets my requirement of being compact when active, and can even be just a bit smaller. Just about any keystroke in this mode will take the phone “off the hook” and initiate dialing, which means that I can use my numeric keypad to dial numbers without having to click into a text box first.
SFLphone also has the ability to use global hot keys. So far, its the only one of the soft phones that allows this. Hot keys can be assigned globally for: pickUp, hangUp, togglePickupHangup, popupWindow, toggleHold. Not an extensive list, but far better than the rest gave.
It has two options for audio also, Pulseaudio or ALSA. I used ALSA, and used the dmix/snoop plugin, which hooks into Pulseaudio. Using Pulseaudio tools to pick the sound device per application is a royal pain, so using this plugin gives me the ability to ring the main speakers on an inbound call, but use the headset for microphone and phone output. Best of both worlds there.
It (and all the others) are missing multiple audio profiles, however. As far as audio goes, soft phones should have the ability to have at least two profiles, Speakerphone and Handset. In my environment Speakerphone would be the main sound card’s speakers and microphone (or the microphone on my webcam) and Handset would be my USB headset. A different global hot key could then be used for answering a call with the speakerphone or handset, much like hard SIP phones do now.
It doesn’t yet support video, but that is the short term goal of the SFLphone project right now. They claim there will be a video release within the next few months. I must say I’m looking forward to it. I don’t make too many video calls, but it would be nice to complete the feature set.
SFLphone also stays out the of way when its not in use. It sits in the tray and when a call comes in it changes the icon. It also sends a Gnome notification message telling me that there is an inbound call, from what number and on which account. The notification messages don’t steal focus, but are enough visually to get my attention beyond a status icon change. With the global hotkeys, I can pick up a call using only the keyboard, in my case, I’ve assigned togglePickupHangup to Ctrl-F12 which is far easier than using the mouse, all while not stealing the focus of the application I’m in. This feature alone is a huge plus for SFLphone.
SFLphone also has pretty good NAT support and does support STUN on a per SIP account basis. It also has a good range of codecs to choose from including PCMU/A, GSM, G722, speex and celt. I hope their video codec selection is as complete.
Now, SFLphone is not all great. In fact there are a few major problems with it. First is its not that stable. I’ve only been using it for a few days now and have the UI freeze up on me at least five times. The call is still maintained via the daemon process it uses to handle it, but once the call is done, I have to manually kill off both the daemon and the UI processes and restart them.
It claims to integrate with the Evolution address book as well, but since I don’t use Evolution I’ve not been able to test that aspect of it. I do know that when I had that option enabled, it crashed on me regularly because it wasn’t able to do the lookup. It would just vanish from my system tray.
It also doesn’t display Caller ID information if it is provided, just the phone number. While not a deal breaker for me, it should be able to display names from the SIP header and not just an Evolution address book.
SFLphone Conclusions
If the stability issues are resolved, SFLphone could be a great soft phone for daily use, both for average users and power users. It has the right “minimalist” design but still gives enough ability to customize its behavior through global hot keys and multiple accounts to satisfy more demanding users such as myself. If it adds video support with H.263/H.264, multiple audio profiles and a few more global hot key options it would far outshine the others. Its good enough now that I’ll be using it daily.
With that said, how about Linphone or CuteCom?
Linphone
Linphone is actually a pretty good soft phone. It supports multiple accounts, has a good codec selection (for both audio and video including H.263), a fairly decent UI and is fairly stable.
I wasn’t thrilled with the interface though. Hiding it in the task bar requires you to close the window, and when bringing the window back up, it always defaults to your contact list, not the dialpad. It also requires you to click on the “SIP address” text entry box in order to dial unless you double click from a contact.
It also has the annoying habit of displaying video in a separate dialog style window that you can’t close on its own. There are also no global hot key selections to allow you to answer a call without using the mouse.
It does have good NAT support and supports STUN and never failed once to make or receive a call. It is quite stable and I have not had it crash on me yet.
The UI is what really turned me off of Linphone, though. It seems more like “business application” than a soft phone, if that makes any sense. Its functional, and things are logically organized, but it doesn’t feel like a phone. The extra mouse clicks to get to the point where you dial are also quite annoying.
Beyond the above, it functions well. I was not able to establish a video call between Linphone and anything other than another Linphone, though.
Linphone Conclusions
While its a solid soft phone, it just doesn’t feel right to me. The UI is a bit to big and the use of tabs seems out of place, especially when the default tab is the contact list and not the dialpad. It has no global hotkeys but does still manage to integrate fairly well with the Gnome desktop. It will be worth it for me to revisit Linphone in the future to see how it has progressed.
Finally I also looked at QuteCom.
QuteCom
QuteCom is the only one of the soft phones I looked at that wasn’t built using GTK+ or Gnome, rather it was built with Qt. I actually love Qt. I’ve written a whole lot of code using the Qt toolkit, including the soon to be released to the GPL TACC billing system. QuteCom is also quite a solid soft phone, but didn’t quite pass my tests. The UI is about the only place where this app failed for me.
The use of tabs on the main window is off putting for me. It does have a quick box at the bottom for you to dial a number with. The window will just about double in width as soon as you make or receive a call, though.
It also supports video (though only V4L, not V4L2) and instant messaging accounts. It is undoubtedly one of the more polished soft phones that I have tried.
So why am I using SFLphone instead of QuteCom? The UI mostly. QuteCom has a very well thought out UI, but it still requires a lot of mouse clicks to do anything. It functions very well as a SIP phone, but then takes things further and tries to be an instant messaging client and address book and a video phone (which I was never able to get working). The lack of global hot keys was a pretty big factor for me.
QuteCom Conclusions
QuteCom deserves an honorable mention from me. Its a good soft phone, but in my opinion it tries to do a bit too much. I’m positive that there are a lot of people who would really like it, but for me it comes down to personal preference here and not functionality. QuteCom has most of the functionality, just not for me.
Final Conclusions
So, thats my current take on the current state of Linux Soft Phones. Its not exhaustive, and it wasn’t meant to be. Hopefully I’ve helped someone to make a decision or perhaps point them to a phone that they haven’t tried yet that may suit their needs better (like SFLphone in my case).
All of the soft phones I’ve listed here have their own strengths and weaknesses. They are all quite usable and the authors and other contributors deserve recognition for the effort they have put into them. To them I would like to say thank you for providing me with so many choices. Its one of the many reasons I’ve been running Linux for the last 15 years.
Myself, I’ll probably stick with SFLphone for a while. If the stability issues are resolved, and they get video in there, it will be a great balance of minimalist design with the functionality I need to do my daily tasks.
This post is archived, comments are disabled.