Linphone is the softphone worth knowing if you run Linux, need encrypted signalling and media, or want the same client on desktop and mobile. It is open source, it exposes more of the SIP stack than most consumer softphones, and it will happily tell you exactly what it is negotiating — which makes it a good diagnostic tool even when it is not your daily phone.
The trade-off is that its defaults are tuned for Linphone's own service, not for a third-party SIP trunk. Several things need changing.
Use a third-party SIP account, not the built-in one
On first launch Linphone offers to create a sip.linphone.org account. That is their own service and it is not what you want.
Choose Use a SIP account (older builds label it "Use a SIP Account" under an "Account assistant"), then enter:
- Username — your authentication user
- Password
- Domain — the SIP server hostname your provider gave you
- Transport — UDP unless you were told TCP or TLS
If registration succeeds you will see the account go green in the accounts list. If it fails, the status line usually names the reason rather than just failing, which is one of Linphone's better qualities.
Pin the codec
Open Settings → Audio → Codecs. Linphone enables a wide list including Opus, which it prefers.
Opus is an excellent codec and almost no PSTN termination route uses it. If you leave it enabled and at the top, every call gets transcoded at the gateway — added delay, added processing, worse audio than if you had simply sent G.711 in the first place.
Disable everything except the codec your route uses: PCMU (G.711 u-law) for North America, PCMA (G.711 a-law) for most other destinations. Keep Opus enabled only for on-net calls between your own Linphone users, where it genuinely sounds better.
NAT traversal: ICE and STUN
Under Settings → Network, Linphone offers ICE, STUN and TURN. This is where it differs most from simpler softphones.
For a standard SIP trunk behind a home or office router, enable STUN with your provider's STUN server (or a public one if they do not run one) and enable ICE. That combination lets the client discover how its address looks from outside and pick a media path that works.
If your provider terminates on a session border controller that handles NAT itself, they may tell you to disable both. Follow that instruction — an SBC doing NAT handling and a client doing ICE can disagree about which address is authoritative, and the symptom is one-way audio on an otherwise perfect-looking call.
Do not enable TURN unless your provider gave you a TURN server and credentials. TURN relays media through a third host; without valid credentials it silently does nothing useful.
TLS and SRTP, if the route supports them
Linphone is one of the easier clients for encrypted voice, but both ends have to agree.
Set Transport to TLS on the account to encrypt SIP signalling. Then under Settings → Network → Media encryption, choose SRTP to encrypt the audio.
Two things to be clear about. First, encryption only protects the leg between you and your provider — once the call reaches the PSTN it is an ordinary phone call. Second, if the far end does not support SRTP, an insistent setting will fail the call outright rather than falling back. Set media encryption to optional while testing, confirm what actually negotiates, then tighten it.
Dial in E.164 format
Country code, then national number, no local trunk prefix, no spaces. Linphone will accept a leading +; whether your trunk wants it is a question for your provider.
Linphone has no dial-plan rewriting as flexible as MicroSIP's, so if your contact data is stored in a mixed format, normalise it before it reaches the dialler rather than expecting the client to cope.
Mobile: the battery problem
Linphone on Android and iOS faces the same issue as every mobile softphone. The operating system aggressively suspends background apps, and a suspended softphone is not registered.
On Android, exclude Linphone from battery optimisation. On iOS, Linphone uses push notifications to wake for inbound calls, which requires the push feature to be supported by your provider — many SIP trunks do not implement it, in which case inbound calls to a backgrounded iPhone will simply not arrive. Outbound calling works regardless.
If reliable inbound on mobile matters, route calls through a PBX that can ring several endpoints, rather than depending on a mobile client staying registered.
Reading what Linphone tells you
Linphone's call statistics panel shows the negotiated codec, round-trip time, jitter and packet loss live during a call. That is genuinely useful — most softphones make you guess.
If audio is poor, look at the numbers before changing settings. Sustained packet loss points at the network path. High jitter with low loss points at congestion or Wi-Fi. Clean statistics with bad audio points at the codec or a transcoding step somewhere beyond your control. The interpretation is covered in SIP, RTP, codecs and bandwidth.