Run miniSIPServer on Debian 12 (bookworm)

Run miniSIPServer on Debian 12 (bookworm)

Debian 12 (bookworm) was released. It is the latest stable version and will be widely deployed in business environment absolutely. So we run and test the latest miniSIPServer on this system as usual. Of course, the result is perfect.

Please refer to the figure below.

Run miniSIPServer on Debian 12 system.

If you want to build a VoIP system on Linux system, Debian 12 is a good choice.

Please refer to our online document for more details about how to install and run miniSIPServer on Debian systems. And I’m sure you’ll like the combination of Debian and miniSIPServer.

New web UI for miniSIPServer

New web UI for miniSIPServer

We upgrade web UI for miniSIPServer, including cloud miniSIPServer and local miniSIPServer. The new web UI is quite like GUI of local miniSIPServer. Please refer to the figure below.

We hope users who are familiar with local miniSIPServers can enjoy it and experience the cloud miniSIPServer system quickly.

Security problem

Security problem

OpenSSL released new versions to fix several serious security problems. miniSIPServer uses the OpenSSL library to provide the SIP over TLS feature and we upgrade miniSIPServer to V40 (20230221) versions which use the latest OpenSSL library.

If you have deployed “SIP over TLS” in your VoIP network, we strongly recommend that you upgrade miniSIPServer to the latest versions.

Additional parameter of Request-URI

Additional parameter of Request-URI

By default SIP network always uses SIP URI to carry information, such as From, To, and so on. For example:

sip:+8613901088888@ims.bj.chinamobile.com

But for traditional telecommunication networks, they always use E.164 telephone numbers which are different with SIP URI. So ETSI (or 3GPP) defines a new URI, that is TEL URL. For example:

tel:+8613901088888

So when working with IMS networks, there could have two URI formats, SIP URI and TEL URI. miniSIPServer can support both formats, it can process TEL URI of incoming calls automatically, but all outgoing calls always use SIP URI formats.

It could be a problem. Fortunately IMS networks consider it very carefully. For example, China Mobile can accept TEL URI and SIP URI with special parameter ‘user=phone‘ which is described below.

sip:+8613901088888@ims.bj.chinamobile.com;user=phone

If we configure external lines of miniSIPServer to work with China Mobile networks, it can be no problem because miniSIPServer will automatically add ‘user=phone’ to Request-URI. But in some markets, China Mobile requires to establish SIP trunk connections, then it could be a problem. miniSIPServer will not add ‘user=phone’ in Request-URI since we think it is a ‘server to server’ scenario.

To fix that, we add a ‘additional parameter of Request-URI’ parameter in SIP trunk outgoing call configuration. Please refer to the figure below.

Additional parameter configuration
Additional parameter configuration

Reliability of Provisional Responses

Reliability of Provisional Responses

As we know, RFC3262 defines SIP reliability of provisional responses. It is an old feature and miniSIPServer ( both local versions and cloud versions) can support it for a long time. When working with traditional telcom carriers, this feature is mandatory, that means carriers will reject all incoming calls if they cannot support reliability of provisional responses.

RFC3262 defines a “100rel” parameter to indicate reliability of provisional responses, so we call it “100rel” capability. In normal, when invoking a call, the caller should make itself clearly that it can support “100rel” capability, and of course, the callee side should also make itself clearly that it requires to use “100rel” capability.

Basic call flow with 100rel
Basic call flow with 100rel

In the RFC3262, we can get following details:

…… the initial request contained a Supported or Require header field listing 100rel, and that there is a provisional response to be sent reliably. ……

UAS core … MUST contain a Require header field containing the option tag 100rel, and MUST include an RSeq header field.

Then both sides can establish reliability of provisional responses. Above figure describes the basic call flow. When UAC receives a 18x message which is a provisional response, UAC should send a PRACK message back to tell UAS that UAC has received its 18x message.

This is not a complex call procedure. We thought it wasn’t until several days ago. One of our cloud miniSIPServer customers reported he cannot make calls out. Then we traced his calls and get following call flow described below.

405 error in a 100rel procedure
405 error in a 100rel procedure

Unbelievable …… this voip provider requires “100rel” in its 183 messages, but once miniSIPServer sends PRACK messages to confirm that, it returns “405 method not allowed” to reject them, and it causes every call failed.

Why?! If it cannot accept or support PRACK messages, why does it require “100rel” in its provisional responses?

It is quite easy to fix that. Just remove its “require 100rel” from 18x messages, miniSIPServer will not send PRACK messages back. But unfortunately, the team of this voip provider doesn’t know how to do that.

Our customer is blocked and his service has to be stopped. In another way, I personally think some VoIP providers use public open source servers, such as Asterisk, FreeSwitch, and so on, to build their solutions, maybe they don’t have enough experts to understand what they built.

So we update miniSIPServer to add an option in external lines configuration to disable reliability of provisional responses. Please refer to the figure below.

Disable 100rel capability
disable reliability of provisional responses

If you check this item, the INVITE messages sent from miniSIPServer will not have “support 100rel” parameter. Once you meet such a ridiculous VoIP provider, you can try this.

Refuse some free email systems

Refuse some free email systems

Recently lots of customers reported that they didn’t receive activation emails when they signed up miniSIPServer cloud accounts. All of them are using free email systems, such as gmail, and so on.

At first we think such systems move our emails to spam boxes, but customers still cannot find them there, so we think our emails are blocked.

We completely understand that. Since lots of email are sent from our cloud system to free email systems, including activation emails, balance notification emails, and so on, some email systems detect us to be a spammer.

It confuses us and we don’t want that, so we decide that our cloud system cannot accept customers use free email addresses to sign up miniSIPServer cloud accounts. We hope our cloud system to be treated as a serious virtual VoIP system, and we hope our custmers can understand that.

ptime=20, 30, 40

ptime=20, 30, 40

In the SIP session, we can set ‘ptime’ parameter of SDP to negotiate RTP packages between two call parties. If one side has different idea about the RTP package size, it can send its own ‘ptime’ parameter back with the value it wishs. But the world is so complex, some SIP devices don’t care ‘ptime’ paramter and they don’t tell other sides which values they like, they just send RTP packages back directly. It could cause problem.

For example, as we know, ‘call recording‘ service requires miniSIPServer to mix two audio streams from both call parties. In order to make the work easy, miniSIPServer will set ‘ptime’ to 20 which means the call parties should send their audio streams in RTP packages every 20 milliseconds, then miniSIPServer get two packages every 20 milliseconds and mix them into local audio files. Now surprised, some devices send RTP packages every 30 milliseconds, some send RTP packages every 40 milliseconds. When miniSIPServer has to mix these packages, some bytes have to been lost since the time is different and the package size is different too. It makes the audio quality of local audio files very poor.

Of course, the perfect solution is all SIP devices respect ‘ptime’ parameter, but we cannot count on it.

So miniSIPServer is upgraded to V40 (build 20220922) to fix it. The new version will try to cache RTP packages of both sides and smooth the mixing procedures. And we have to say that it will increase the workload of miniSIPServer.

Say goodbye to Windows XP/2003

Say goodbye to Windows XP/2003

We updated miniSIPServer to fit 4K screen recently, but we find that we have to upgrade our tool chains at the same time if we want to get a perfect result.

Unfortunately the new tool chains cannot support Windows XP/2003 systems, so it is time to say good bye and move on now.

The latest version (V40) is released yesterday and it requires Windows 7 or abover version if you want to deploy miniSIPServer on Windows system. V40 is also rebuilt for Debian / Ubuntu systems to fit higher DPI screens.

Please enjoy the new versions. And please update us if you have any questions or opinions. Thanks.

For the 4K screen

For the 4K screen

Our customers report a bug when running miniSIPPhone with a 4K screen. Please refer to the figure below.

miniSIPPhone main window
miniSIPPhone main window mixed up

When building GUI (including miniSIPPhone and miniSIPServer), we use absolute positions and lengths to assign components, so they are quite small or tight if the screen has hight resolution ratio, for example, a 4K screen.

To fix that, we change the absolute values to relative positions and lengths. Of course, both miniSIPServer (V39 build 20220823) and miniSIPPhone (V8.4) are updated.

In another way, we refine dialogs sizes and styles of miniSIPServer at the same time. It should be more comfortable now.

Gnome Calls

Gnome Calls

As we know, miniSIPServer can run on Linux systems. Sometimes customers ask us about SIP clients which can run on Linux systems at the same time. In fact, there are lots of choices, such as linphone, jami, and so on.

Recently there is a new SIP client released. Most important, it is a core application in Gnome project. It is “Calls”. In Debian library, its definition is “Make and receive PSTN phone calls”. In fact, the latest version can support SIP protocol. In the Gnome project, we can see the description is changed to “Make phone and SIP calls”.

It is quite easy to install “Calls”. Just input following command:

sudo apt install gnome-calls

Please refer to the figure below for more details about its main window.

Gnome calls main window
Gnome calls main window

Click menu “VoIP Accounts” to add a new SIP account. Most items are same with other SIP clients. For example, miniSIPServer is at “192.168.3.42” and the account is “100”. Please refer to the figure below.

Configure VoIP account in Calls
Configure an account

Please pay attention that (1) the default port is 0, we need to change it to 5060; (2) we need to enable the account. Calls doesn’t display its status, so we can check miniSIPServer local users’ window to check their status.

When making outgoing calls, we can dial the target number in the “Dial Pad” panel directly.

make outgoing calls
Make a call out

If there is an incoming call, just answer or reject the call.

Incoming calls
Incoming call

Obviously “Gnome Calls” is very simple at this time and it will be developed with more functions. If we are deploying a simple VoIP network and hope to build all elements on Linux, it could be a good choice.

Hope you can enjoy it.