Best SIP client soft phone is GS Wave

I have tried almost every VOIP soft phone app on Google Play. Before I found GS Wave, I reckoned Zoiper app was the best soft phone, thus I paid for its premium version to get its premium feature of video call.

However I never got this feature working. I wanted to see the video from my video door phone on my mobile with Zoiper. My video door phone supports H264 video codec but Zoiper supports VP8 unless I pay Zoiper again just for H264 codec . Unlike audio codec while a VOIP server can translate audio codec between clients, video codec is said to be P2P. (There may be a way of video codec translation, but I don’t know how.)

I had video calls working between my video door phone and desktop SIP phones which are “hard phones” with H264 built in. And I had audio calls working on all devices. So I was not desperate for video on Zoiper.

Zoiper has a major defect. It cannot stay online 24/7 on latest Android version (I tested on two Huawei Mate 8 and one P9) or iOS. Many times status bar shows it is online but actually it is not reachable. Zoiper was reliable on Android 4.x.x. I guess Zoiper “forgets” to re-register itself when OS goes into sleep. For above reasons I am reluctant to pay Zoiper any more money.

Recently I visited Fanvil website and discovered Fanvil had developed a soft phone called “Vdroid” for free download. To my surprise, Vdroid integrated G729 audio codec and H264 video codec. They are premium codec as on Zoiper. (Later on I learnt G729 patent expired on 1st Jan, 2017 but Zoiper is still selling G729 for money. I knew nothing about H264.) However Vdroid has too many bugs and is not a mature software.

Then I thought other VOIP device manufacturers might have their own soft phones for public. I checked Grandstream, Yealink and Cisco but only found Grandstream generously offering GS Wave. GS Wave has both Android and iOS version, and both works reliably, and both has G729 and H264 built in for free! I cannot wait any longer to recommend GS Wave to everyone. Google Play is overwhelmed by other apps for search results of “sip” or “voip”, and GS Wave is nowhere in the ranking. But trust me, it is the best one.


Newbie’s experience in setting up an IPPBX

I classify myself as a newbie as I have been diving into Asterisk / FreePBX for only 3 months. I am not familiar with 95% parameters of my IPPBX, and I try to avoid touching those parameters. However I can proudly say I have gained enough experience in setting up an IPPBX for a commercial environment, and I want to share it with you.

Before I start, I have to make it clear what my goals are, so you know if my experience suits you.

Firstly, I do not have massive users, say less than 100. We did not use any PBX, but once we launch IPPBX, it must be working very stably.

Secondly, users should be able to pick up the calls in the office, at home or on the move. Myself is a typical user, who answer 1/3 calls in the office, 1/3 at home, 1/3 on the move.

Thirdly, I want to save every pence possible on this first IPPBX. There are many IPPBX with Asterisk preinstalled and probably optimised on the market, whose prices start from £150. However I think at £150 it is an entry level product and geared for a SOHO enviroment. If I hunt for a proper commercial Asterisk IPPBX, I should look for something above £300.  I am a fanatical DIYer and I believe business can take advantage of open source. Free open source allows business to do the same things other highly priced product can do, and sometimes does better. Of course the price of open source is the learning time. I spent £100 on the hardware (Bought from China directly. I evaluate it as £190 for similar hardware on the UK market), and 3 months in learning. A commercial Asterisk IPPBX with the equivalent capacity should be priced at £500 or so.

My 3 months’ learning only saved £400 which is a loss. Nevertheless, back to the topic – my gained experience in setting up an IPPBX.

I do not need to connect IPPBX to a physical analogue (POTS) or digital (ISDN) telephone line. If you do, and the more lines to connect, the more worthwhile to buy a commercial IPPBX with FXO or BRI ports built in. None of analogue/digital cards or ATA or ISDN gateways are cheap.

At the time of choosing a DIY IPPBX other than a commercial IPPBX, I was quite worrying about the stability. Now I can say software stability can be achieved by a newbie like me. But to make the whole system work reliably, I have to buy a decent hardware to run it on, and most importantly, a reliable network. My current ISP is horrible and due to be switched away in next month. It wasted me a lot of time debugging – barking at the wrong tree. I would not say “horrible” if I was only using their network browsing Internet. It looks like it can not afford VOIP traffic when it comes to host an IPPBX.

I set port forwarding on the NAT router where IPPBX is. I forwarded SIP bind port and RTP ports. I did not do everything at client side router. The SIP client should traverse a router not in my control.

I put NAT in Settings >> Asterisk SIP Settings to “route”, which instantly solved a lot of audio silence between various devices, i.e. high end SIP phone, entry level SIP phone, and several soft SIP phones installed on several Android based mobiles. I still can not understand the exact logical behavior of “yes”, “no”, “never”, “router” for NAT choice, but to me, “router” is the best choice.

I totally understand many people says SIP behind NAT is a nightmare. My IPPBX is behind a NAT router in the office, and if I am at home, my extension is behind another NAT router. This is the worst scenario. With FreePBX Distro and the above simple configuration, but without help of any third party modules, proxy, stun server, SER, the most difficult problem I encountered is one way audio on some devices / soft phones. It is always the caller can not hear voice from the callee, but the callee can.

Then I find enabling stun server on SIP client does not do anything good. Actually I find enabling Rport for signaling and media helps eliminating one way audio symptom if this choice is available. If your device does not have such a choice, but you have two devices at hand, you can dial out using one of them and transfer the call to the other one. This method makes both ends callees. So tricky. Do we really to do that? No. I have better way later on.

Missing codecs may cause audio silence, but it has nothing to do with one way audio. If a required codec is missing, both ends will be silent. I have a weird SIP trunk provider supplying 2 lines. Both lines have an external number (connecting PSTN) and an internal number (extension number on his SIP server). It turned out he enables different codecs for these 2 lines. And even on the same line, he enables different codecs for external number and internal number. It took me a long time before I realised it was a codec problem.

Although Android mobiles are widely available, it is worth buying SIP phones for office and home.  SIP phones can stay online much more stable than any of soft SIP phones on Android mobile. It may not be a fault of soft phones. They are restricted by Android power management. The advantage of Android devices is you can choose SIP apps to install. To get the best of both worlds, the best buy is an SIP desktop phone with Android OS.

Among SIP apps, I recommend Zoiper (most stable, and support IAX2), CSipSimple (support video calls with CSipSimple video plugin), Samsung Galaxy built in SIP client (may be best choice in power saving), in turn.

It is time to summarise how to tackle one way audio. I mentioned IAX2. Yes, for soft phone, use it as the first choice over SIP. (Sadly as a hardware, VOIP phone with IAX protocol are not widely available.) I am using Zoiper on the move. In the office, as it in the same subnet, SIP traversing is not a problem, so any SIP phones will do the job. At home, use a SIP phone which can enable Rport, or use Zoiper.

I tried to achieve a stable IPPBX without having to periodically reboot it, but I could not. The IPPBX runs into a hanging state every a few days. For example, all trunks / extensions are disconnected. Even “amportal restart” can not solve the problem. A daily reboot is a must. Just choose a quietest time and use crontab to reboot. My IPPBX reboots in 34 seconds, which means the uptime is 99.96%. Normally the IPPBX will not hang within a day. But I set a monitoring script anyway to monitor if all trunks / extensions lose connection, reboot the IPPBX immediately. It never happened so far.

I also find IPPBX daily rebooting is a usual practice. I have monitored two of my SIP trunk providers are rebooting their servers daily. I am going to test it on a third one. Besides, I will be very glad to see a future version of FreePBX can run without rebooting for years as Nginx, etc.

FreePBX alpha-6.12.65-2 and CSipSimple

FreePBX 出了新版。我下了 “64bit ALPHA-6.12.65-2 Release Date-01-15-14 FreePBX 12, Centos 6.5 Asterisk 11 or 12” 来装,装好以后发现多了一个 PJSip,搞得我晕乎了一天。

了解了一下 PJSip,发现它并不是什么新鲜玩意,只是 FreePBX 刚把它整合进来。其他 Sip 相关软件,如 CSipSimple,已经用 PJSip 很久了。

之前的 FreePBX 只有一种 Sip,现在 Sip Settings, Sip Extensions, Sip Trunks 都分为 PJSip 和 Sip。有时显示为 Chan PJSip 和 Chan Sip,但又不一致,象我这样的新手误以为 Chan Sip 不是原来的 Sip,因此琢磨到底是该用 PJSip 还是 Sip,浪费了不少时间。

现在 FreePBX 把 PJSip 放在 Sip 前面,PJSip 沿用常用的5060 端口,Sip 则另开了 5061 端口,大有 PJSip 取代 Sip 的意思。而我一开始也没发现 Sip 改端口了,使劲注册分机都是徒劳。

FreePBX 创建了 PJSip 分机,我用 CSipSimple 去注册,CSipSimple 端显示在线,但在 FreePBX PBX Status 里看不到可用分机线。我想是 FreePBX 在应用 PJSip 时有 bug,所以不要强求,用 Sip 已然不错。