En tête technical corner
Linphone
Technical corner
Description
Linphone is an open source SIP phone for voice/video calls and instant messaging, and is available for mobile and desktop environments (iOS, Android, GNU/Linux, macOS, Windows).
Linphone features a separation between the user interfaces and the core engine, allowing the creation of various kinds of user interface on top of the same functionalities.
The user interface frontends are:
- A Qt/QML interface for Windows desktop, macOS and GNU/Linux
- A console interface (linphone-daemon)
- An iPhone application built in objective C
- An Android application running in Java
Liblinphone is the core engine, this is the library that implements all the functionalities of Linphone.
Liblinphone is a powerful SIP-based SDK for Voice and Video over IP, that anyone can use to add audio and video calls or instant messaging capabilities to an application. It provides a high-level API to initiate, receive and terminate audio and video calls.
Liblinphone relies on the following software components:
- Mediastreamer2, a powerful multimedia SDK for audio/video streaming and processing
- oRTP, a simple RTP library
- belle-sip, the SIP library
Liblinphone and all its dependencies are written in C++ and C.
Architecture
Console tools
Linphone-daemon is a console-mode program based on Liblinphone that can register, send and receive calls by reading simple text commands from standard input or from a UNIX socket. In response to each command, linphone-daemon writes the execution status of the command to standard output (or a socket).
This tool can easily be used from a shell script to execute simple SIP scenarios by those who do not require the full capabilities of the Liblinphone SDK.
Linphone-daemon supersedes the former "linphonec" console tool, as it uses a more effective syntax for inputs and outputs.
Common Features (Mobile and Desktop)
OVERALL FEATURES
- HD audio and video calls
- Multiple call management (pause and resume)
- Call transfer
- Audio conferencing (merge calls into a conference call)
- Call recording and replay (audio only)
- Instant Messaging
- Message delivery status (IMDN)
- Picture and file sharing
- Message forwarding (Android only)
- Chat access during calls
- Contact list
- "Invite your friends" feature
- Call history
- Display of advanced call statistics
- Echo cancellation
- Call quality indicator
- Secure user authentication: md5 / SHA256 digest, TLS client certificates
- SRTP, zRTP and SRTP-DTLS voice and video encryption
- Supported languages: English, French
- Account creation assistant
- Remote provisioning
ADVANCED FEATURES
- Audio codecs: opus, speex, g711, g729, gsm, iLBC, AMR, AMR-WB, g722, SILK, iSAC, BV16, Codec2
- Video codecs: VP8, H.264 and H.265 with resolutions up to 1080P, MPEG4
- Hardware accelerated H.264 and H.265 codec for Mac OSX / iOS (VideoToolbox) and Android (MediaCodec)
- Innovative RTP jitter buffer algorithm, which quickly adapts to network conditions with a lot of jitter and improves control of the audio latency
- Adaptive bit rate control algorithm: congestion control and estimation of available bandwidth, in order to optimise the quality of audio and video
- Integration with push notification (requires compatible SIP server; linphone.org SIP service is push enabled)
- ICE (RFC 5245), STUN and TURN (RFC 5766) for optimised NAT traversal, allowing for peer-to-peer audio and video connections whenever possible
- Call handover accross a change of network access type (e.g. start a call in wifi and continue in 3G)
- Ability to configure multiple proxy accounts with different transports protocols (UDP, TCP, TLS)
- IPv6 (dual-stack and v6-only support)
- DTMF (telephone tone) support using SIP INFO or RFC 4733
For more information, consult the complete list of implemented standards in the Liblinphone section.
Mobile-specific features (iOS/Android)
- Multi-participant Instant Messaging (group chat)
- End-to-end encryption for both 1-to-1 and group instant messages (requires LIME library)
- Smart contact list (shows people using the service) using list subscription to a presence server
- Provisioning via QR Code
- Support for bluetooth headset
- Dedicated tablet user interface
- Blind accessibility
- Replay of recorded calls from the "Recordings" menu
- Configurable setting to automatically / manually download attachments
Linphone is available on the following mobile platforms:
- Apple iOS 9 to 14 (ARM v7, ARM 64)
- Google Android 6 to 11 (ARM v7, ARM 64, x86, x86-64)
iOS ADDITIONAL FEATURES
- AAC-ELD support
ANDROID ADDITIONAL FEATURES
- Video overlay
Desktop-specific features
The Qt (QML) graphical interface runs on GNU/Linux, Windows and macOS.
SPECIFIC FEATURES
- HD video calls in full screen mode
- Video call recording
- Presence status
- Smart search bar
- Unified history
- Quick access to recent events
- Ability to create audio conference calls instantaneously
PORTABILITY
- GNU/Linux: x86, x86-64, ARM v5, v7, arm64 ; Debian 8/9, Centos 7
- Windows Desktop: x86 (works also on x86_64), Windows 7 and later
- Mac OS X: x86_64 ; 10.11 and later.
- GNU/Linux embedded: linphone-daemon is a good candidate to provide the software stack for a hardware phone or hardware communication system.
License
Linphone is dual licensed, and can be licensed and distributed:
- under a GNU GPLv3 license for free (open source)
- under a proprietary license, to be used in closed source applications. Contact Belledonne Communications for costs and other service information.
Download Mobile versions
- Linphone iOS on the App Store
- Linphone Android on Google Play and the apk here
Download Desktop versions
Linphone for desktop:
AppImage package for GNU/Linux:
Download the AppImage package for Linux
Source code
Linphone source code is available from our GitLab, or can be cloned with Git:
Project |
Git repository |
linphone-desktop, comprising:
|
git clone https://gitlab.linphone.org/BC/public/linphone-desktop.git --recursive |
linphone-iphone (iOS application) |
git clone https://gitlab.linphone.org/BC/public/linphone-iphone.git |
linphone-android (Android application) |
git clone https://gitlab.linphone.org/BC/public/linphone-android.git |
For those who are behind a proxy:
You can change the access method from git:// to http:// as follows:
Normal git access:
git clone git://git.linphone.org/msilbc.git
Behind a proxy, use http access:
git clone git.linphone.org/msilbc.git
Daily builds (testing)
Every day, binary packages generated from the current git state are uploaded to http://www.linphone.org/snapshots. It is worth visiting if you want to test and see the latest changes, especially if a long time has elapsed since the last official stable release. These snapshots are generated automatically and are not tested, meaning that certain features might occasionally be broken.
Please refer to the README.md file for each project (linphone-iphone, linphone-android, linphone-desktop) for developer information about the applications.
Additionally, our developer wiki provides details about specific subjects:


Footer mentions
© Copyright 2020 - Linphone - Belledonne Communications SARL