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.