En tête technical corner
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 Desktop, Windows 10 UWP).
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
- A Windows 10 application (UWP: mobile and desktop) written in C#
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.
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)
- 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 with message delivery status (IMDN)
- Picture and file sharing
- 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
- 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
- Low bandwidth mode for audio calls over 2G networks
- 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 12 (ARM v7, ARM 64)
- Google Android 5.0 to 10 (ARM v7, ARM 64, x86, x86-64)
iOS ADDITIONAL FEATURES
- AAC-ELD support
ANDROID ADDITIONAL FEATURES
- Video overlay
The Qt (QML) graphical interface runs on GNU/Linux, Windows and macOS.
- 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
- 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: Linphonec or liblinphone are good candidates to provide the software stack for a hardware phone or hardware communication system.
Linphone is dual licensed, and can be licensed and distributed:
- under a GNU GPLv2 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
- Linphone Windows 10 (UWP : mobile and desktop) on Microsoft Store
Download Desktop versions
macOS / WINDOWS
Flatpak package for GNU/Linux
>> Note (July 3rd 2019): We are currently experiencing an issue with Flatpak, which will be addressed in the next release of Linphone for desktop in the coming weeks.
In the meantime, linphone-desktop source code is available on GitLab.
- Install flatpak as described in: http://flatpak.org/getting.html
- Type the following command to install Linphone:
flatpak --user install --from https://linphone.org/flatpak/linphone.flatpakref
- Launch Linphone from the application menu
Linphone source code is available from our GitLab, or can be cloned with Git:
linphone-sdk, an umbrella project that contains liblinphone and all its dependencies.
git clone email@example.com:BC/public/linphone-sdk.git --recursive
git clone firstname.lastname@example.org:BC/public/linphone-desktop.git --recursive
linphone-iphone (iOS application)
git clone email@example.com:BC/public/linphone-iphone.git
linphone-android (Android application)
git clone firstname.lastname@example.org:BC/public/linphone-android.git
git clone email@example.com:BC/public/linphone-windows10.git --recursive
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.
Additionally, our developer wiki provides details about specific subjects: