How can a current version of Linphone be installed?

I want to install a current version of Linphone. I have attempted to install using the following procedure on Ubuntu 16.04:

sudo add-apt-repository ppa:linphone/release
sudo apt-get update
sudo apt-get install linphone

This installs only version 3.6.1 (the current version is 3.9.1). I have attempted to install a more current version using the following procedure:

sudo add-apt-repository ppa:rayanayar/linphone
sudo apt-get update
sudo apt-get install linphone

However, when this installation of Linphone is run, the following error is encountered:

linphone: symbol lookup error: /usr/lib/x86_64-linux-gnu/liblinphone.so.8: undefined symbol: belle_sip_stack_set_http_proxy_host

So, how can a current version of Linphone be installed?


To compile from source you need to install first the following packages as dependencies (be carefull to select the whole box and paste it into terminal):

sudo apt-get install git build-essential automake autoconf libtool   \
intltool libgtk2.0-dev libspeexdsp-dev libavcodec-dev libswscale-dev \
libx11-dev libxv-dev libgl1-mesa-dev libreadline-dev libgsm1-dev     \
libtheora-dev libsqlite3-dev libupnp-dev libsrtp-dev open-vm-tools   \
open-vm-tools-dev cmak* libmbedtls-dev libmbedtls-doc libmbedtls10   \
libcunit1 libcunit1-dev libantlr3c-dev libantlr3-runtime-java antlr3 \
libortp-dev libortp9 libmediastreamer-base3 libmediastreamer-dev     \
extra-cmake-modules yasm

For Ubuntu 18.04 you need the following packages as well:

python-pystache libv4l-dev libpulse-dev libglew-dev doxygen libbsd-dev \
qt5-default qttools5-dev qttools5-dev-tools libqt5svg5-dev \
libqt5texttospeech5-dev qtdeclarative5-dev qtdeclarative5-dev-tools \
qtquickcontrols2-5-dev qml-module-qtquick-controls qml-module-qtquick-controls2 \
qml-module-qtquick-dialogs  qml-module-qtqml-models2 qml-module-qtquick-templates2 \
qml-module-qt-labs-folderlistmodel qml-module-qt-labs-settings \ 
qml-module-qt-labs-platform

Now you can compile and install by doing the following steps:

git clone https://gitlab.linphone.org/BC/public/linphone-desktop.git
cd linphone-desktop
git submodule sync && git submodule update --init --recursive
./prepare.py
make
sudo make install

Happy building. Please let me know if this worked for you on my system it builds but I don't want to install it.


As I cannot comment I'll add this as another answer:

I tried the accepted answer today (on xubuntu 16.04) and got the message

Could not find a support sound driver API 

I fixed this by installing libasound2-dev:

sudo apt-get install libasound2-dev

To get rid of some other warnings I installed some more packages:

sudo apt-get install libv4l-dev libvpx-dev libgl1-mesa-dev

Also the make target install does not seem to exist anymore.

But linphone can be run directly from the output directory

OUTPUT/desktop/bin/linphone

Hope this helps!


Worked on 16.04

Must be root

sudo su

Install flatpak (It will compile everything for you)

sudo apt install flatpak

Install Linphone using flatpak

flatpak --user install --from https://linphone.org/flatpak/linphone.flatpakref

In June 2017, Linphone Desktop 4 was released. With that, its authors Belledonne Communications changed from GTK+ 2 to Qt 5.9 LTS (to be more precise: They changed to QML with Qt Quick Controls 2). Furthermore, they added the possibility to download a ready-to-use binary via Flatpak. Therefore, although the previous answers were correct at their time, they changed:

a) Download from Flatpak

sudo add-apt-repository ppa:alexlarsson/flatpak
sudo apt update
sudo apt install flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak --user install --from https://linphone.org/flatpak/linphone.flatpakref
flatpak run com.belledonnecommunications.linphone --verbose

b) Build from Source

  • to go for Ubuntu 14.04 LTS, and/or
  • to debug/contribute to Linphone because you are a developer, and/or
  • to enjoy the latest features and bug fixes, and/or
  • to get more video and audio codecs.

The variant via Flatpak gives you as video codec just VP8. If you build yourself, MP4V-ES, H.263, and H.264 get added. As audio codecs, AMR, AMR-WB, iLBC, iSAC, and SiLK get added. Furthermore optionally, you can add even G.726 and Codec 2. However as of today, those two modules need to be patched to work with other VoIP/SIP implementations (wrong endianness and wrong bitrate).

To compile yourself, you need the Qt Framework. Therefore, you
a) go for the Qt Installer, or
b) go for Ubuntu 18.04 LTS and its existing Qt 5.9 packages.

Step 1a: Qt Installer

wget download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run
chmod u+x ./qt-unified-linux-*.run
./qt-unified-linux-*.run

In the Installer, you go for Qt → Qt 5.9.x → Desktop. When you set the PATH and Qt5_DIR, make sure it matches the version you downloaded:

Qt5_DIR="~/Qt/5.9.9/gcc_64/lib/cmake"
PATH="~/Qt/5.9.9/gcc_64/bin/:$PATH"

Step 1b: Qt Packages

sudo apt install qt5-default qttools5-dev qttools5-dev-tools libqt5svg5-dev libqt5texttospeech5-dev qtdeclarative5-dev qtdeclarative5-dev-tools qtquickcontrols2-5-dev qml-module-qtquick-controls qml-module-qtquick-controls2 qml-module-qtquick-dialogs qml-module-qtqml-models2 qml-module-qtquick-templates2 qml-module-qt-labs-folderlistmodel qml-module-qt-labs-settings qml-module-qt-labs-platform

As noted above, this works only with the latest Ubuntu. For older Ubuntu releases, I would go for the Qt Installer as described in alternative A. Furthermore, comments in the source code indicate, that Belledonne Communications is not sticking to long-term-support (LTS) releases but is going require the next stable release, when one after next stable branch was released (for example, when Qt 5.11 is released, Linphone might require Qt 5.10 already). Therefore, when you read this answer, this alternative B might already be no option anymore.

Step 2 for Ubuntu 14.04 LTS

sudo apt install autoconf libasound2-dev build-essential libbsd-dev cmake3 curl doxygen git libglew-dev graphviz libtool default-jre-headless nasm libpcap-dev pkg-config python-pystache python-six libudev-dev libwww-perl libxv-dev yasm libpolarssl-dev libsqlite3-dev libxml2-dev libsrtp0-dev libgsm1-dev libopus-dev libspeexdsp-dev libavcodec-extra libavcodec-dev libswscale-dev libv4l-dev libvpx-dev libantlr3c-dev antlr3 xsdcxx libxerces-c-dev libspandsp-dev libopencore-amrnb-dev libopencore-amrwb-dev libvo-amrwbenc-dev

Step 2 for Ubuntu 16.04 LTS

sudo apt install autoconf libasound2-dev build-essential libbsd-dev cmake curl doxygen git libglew-dev graphviz libtool default-jre-headless nasm libpcap-dev pkg-config python3-distutils python3-pystache python3-six libudev-dev libwww-perl libxv-dev yasm libmbedtls-dev libsqlite3-dev libxml2-dev libsrtp0-dev libgsm1-dev libopus-dev libspeexdsp-dev libavcodec-extra libavcodec-dev libswscale-dev libv4l-dev libvpx-dev libantlr3c-dev antlr3 xsdcxx libxerces-c-dev libspandsp-dev libopencore-amrnb-dev libopencore-amrwb-dev libvo-amrwbenc-dev libcodec2-dev

Step 2 for Ubuntu 18.04 LTS

sudo apt install autoconf libasound2-dev build-essential libbsd-dev cmake curl doxygen git libglew-dev graphviz libtool default-jre-headless nasm libpcap-dev pkg-config python3-distutils python3-pystache python3-six libturbojpeg0-dev libudev-dev libwww-perl libxv-dev yasm libmbedtls-dev libsqlite3-dev libxml2-dev libsrtp2-dev libgsm1-dev libopus-dev libspeexdsp-dev libavcodec-extra libavcodec-dev libswscale-dev libv4l-dev libvpx-dev libantlr3c-dev antlr3 xsdcxx libxerces-c-dev libspandsp-dev libopencore-amrnb-dev libopencore-amrwb-dev libvo-amrwbenc-dev libcodec2-dev

Step 3

git clone git://git.linphone.org/linphone-desktop --recursive
cd ./linphone-desktop
python3 prepare.py --use-system-dependencies --all-codecs --debug --list-cmake-variables -DENABLE_AMRWB=OFF -DENABLE_AMR=OFF -DENABLE_UNMAINTAINED=ON -DENABLE_JPEG=OFF
make
gdb ./OUTPUT/desktop/bin/linphone -ex 'run --verbose'

In Ubuntu 14.04 LTS, you go for python2. In Ubuntu 18.04 LTS, you can remove the -DENABLE_JPEG=OFF. In Ubuntu 19.10, you have to patch a header file. As of today, several bugs are in the AMR(-WB) implementation; therefore it is disabled here.


Side note: Please, double-check the value of quality_reporting_enabled in the file ~/.config/linphone/linphonerc whether it reflects your data-collection and privacy interests. For me, an 0 disabled the telemetry data which was send to Belledonne Communications after each call. Yet, I found no way to change that value via the graphical user-interface.