Linphone can be registered with FCSDK and used as a SIP endpoint. Calls from Linphone to an FCSDK endpoint will work with just the standard configuration, but some tweaks are needed to enable calls from FCSDK to Linphone. There is a small issues section at the end of this article if you experience any unexpected problems.
In this article FCSDK is a reference to either the Fusion Gateway machine or Trials machine depending on what you have installed.
Tested on Linphone 3.7.0 on Windows and Macintosh.
To configure Linphone for making inbound calls to FCSDK you need to:
- Go to Options -> Preferences and open the Manage SIP Accounts tab
- Click the Add button to add a new Proxy Account
- Enter the URL you are registering as under Your SIP identity, e.g. sip:email@example.com
- Enter the address of the FCSDK under SIP Proxy address, this needs to be an address in the registrars controlled domains.
Here is an example standard configuration for a FCSDK running on a machine with FQDN myhostname.com, and this address is also in the FCSDK controlled domains.
If the domain of your SIP identity resolves to your FCSDK machine then this is all you need to do make calls from Linphone to FCSDK. If however the domain does not resolve (e.g. on a Trials Environment install) then you need to ensure the FCSDK IP is entered in the Route and SIP Proxy address fields, see below for example configuration for a Trials installation on a machine with IP 192.168.30.1:
Trials Note: When using the Trials Environment you may need to move the IP address of the trials box from the TrialEnvAppRouter to the FCSDKGatewayAppRouter controlled domain.
Configuration to receive calls
Linphone's behavior means that additional configuration is needed if you want to receive call from FCSDK. The configuration depends on what transport type you have selected (see below).
Also notice the Register box is ticked, this is needed to receive calls.
Transport UDP: As Linphone seems to mandate that when an account is registered with UDP then it will only accept UDP requests, this means if an INVITE from FAS is upgraded to TCP due to it's size Linphone will ignore it. There are 2 ways to get around this:
- Increase FAS MTU: If you increase the FAS Maximum Transmission Unit (MTU) to a larger value (e.g. 10000 bytes ) then the INVITE should not be upgraded to TCP and Linphone will accept it. See the FAS Administration Guide for details of increasing the FAS MTU, it will require a FAS restart.
- Reduce SIP request size: One way to decrease the size of FCSDK requests is to ban all but the used codecs in the FCSDK Gateway configuration. If the invite size is reduced so that it is less than the MTU, then it will not be upgraded to TCP and Linphone will accept it. You would need to inspect an outbound invite to determine which codecs to ban.
Transport TCP: Linphone creates a TCP socket to the FAS Load Balancer when the SIP Register is sent and expects all incoming request to come in via that socket. However outbound TCP request from FAS are not sent via the Load Balancer so the connection to Linphone fails and a 500 Internal Server Error respond is sent to the caller.
To work around this you can bypass the Load Balancer when making the initial TCP connection from Linphone to FAS, instead making a direct connection to the appserver process. This is done by connecting to port 5080 instead of the default 5060. You do this by adding the port to the Sip Proxy address, see below:
If your Linphone is co-hosted with FCSDK then you will need to change the listening ports for SIP UDP and TCP as by default they are the same as FCSDK's. This is done in the Network Settings tab of the Preferences, see below for an example in which the ports have been changed to 5070:
1. No SIP messages leaving Linphone with Service Unavailable response and error: channel_res_done: DNS resolution failed in logs even though IP is resolving.
Solution: Ensure Use "IPv6 instead of IPv4" is not selected in Network Setting tab of Linphone preferences.