How to integrate Android into KDE Linux desktop

KDE desktop has long been favored by many Linux geeks because it has every element to fulfill their appetite: customizable every bit of it, aesthetically pleasing desktop effects, openness to adopting new technologies such as semantic desktop, etc. Beyond all these bells and whistles, the KDE desktop community constantly tries to advance the state of the art of the desktop, experimenting with wild new ideas.

One such effort is so-called KDE Connect, which is a brainchild of Albert Vaca, as part of his Google Summer of Code 2013. The objective of KDE Connect is to seamlessly connect all sorts of devices to KDE desktop, so they can talk to each other. KDE Connect currently supports Android device and WiFi network based sharing, but support for diverse device profiles and network backends are planned for the future.

In this tutorial, I will demonstrate how to integrate Android into KDE Linux desktop by using KDE Connect. The (growing) feature set of KDE Connect is as follows.

  • Show Android battery status on KDE.
  • Share clipboard between Android and KDE.
  • Remote control music/video playback on KDE from Android.
  • Show Android notification in KDE, and keep them in sync.
  • Pause music/video playback during a phone call.
  • Send and receive simple ping messages between Android and KDE.
  • Exchange files, URLs or plain text between Android and KDE.
  • Show call and SMS notifications on KDE.

KDE Connect has two components: KDE desktop component (kde-connect) and device components (e.g., Android app). Currently, for KDE Connect to work, the desktop computer and an Android device need to be on the same local network (via WiFi). Android app relies on UDP broadcast to advertise its presence to the desktop over the local network. Once paired, Android app communicates with the desktop via a public-key based encrypted channel.

In the following, I will go over how to install and set up KDE Connect on both KDE desktop and Android device.

Install kde-connect on KDE Desktop

Kubuntu or Debian KDE

On Kubuntu, kde-connect is included in the base repositories starting from 13.10. So simply using apt-get will do the installation on Kubuntu 13.10 or higher.

$ sudo apt-get install kdeconnect-kde qt5-default qdbus-qt5

To install kde-connect on Kubuntu 13.04 or earlier, you can build it from the source as follows. You can use the same building procedure on Debian KDE.

$ sudo apt-get install build-essential cmake kdebase-workspace-dev libqjson-dev git libqca2-dev
$ git clone git://anongit.kde.org/kdeconnect-kde
$ cd kdeconnect-kde
$ cmake -DCMAKE_INSTALL_PREFIX=/usr ./
$ make
$ sudo make install

Fedora KDE Spin

Installation instruction for Fedora KDE edition is as follows.

$ sudo yum groupinstall "Development Tools"
$ sudo yum install gcc-c++ kdelibs-devel cmake qjson-devel qca2-devel git
$ git clone git://anongit.kde.org/kdeconnect-kde
$ cd kdeconnect-kde
$ cmake -DCMAKE_INSTALL_PREFIX=/usr ./
$ make
$ sudo make install

Configure kde-connect on KDE Desktop

The first step after installing kde-connect is to run the following command as a non-root user, which will activate kde-connect on the user's KDE desktop.

$ qdbus org.kde.kded /kded loadModule kdeconnect

If successful, the above command should return "true".

Now go ahead and rebuild system configuration cache as follows.

$ kbuildsycoca4 -noincremental

At this point, you should find KDE Connect menu under "Systems Settings" (which will remain empty until you pair any Android device).

Android Pairing via KDE Connect

Connecting an Android device to KDE desktop is straightforward.

First, install KDE Connect app on your Android device.

To use most features of KDE Connect, Android 4.1 or higher is recommended. You could still install KDE Connect on up to Android 2.3, but the functionality of KDE Connect will be limited.

After installation, make sure that your Android device and KDE desktop are connected to the same WiFi network.

Launch KDE Connect on Android. You should see the hostname of your KDE destop listed under "Not paired devices".

Click on the hostname, and click on "Request pairing" button on the next screen.

At this point, you should see a pairing request notification on your KDE desktop. Simply accept it.

Now you will see your host listed under "Connected devices" on Android.

Also, the paired Android phone (e.g., Samsung Droid Charge) will appear in the KDE Connect Settings of your desktop. Now KDE Connect should be fully functional between your desktop and a paired Android phone.

One simple demonstration of KDE Connect is shown as follows, where ping notification sent by Android appears in KDE desktop.

Remove kde-connect from KDE Desktop

To deactivate kde-connect from your desktop, run the following commands.

$ qdbus org.kde.kded /kded unloadModule kdeconnect
$ kbuildsycoca4 -noincremental

Troubleshooting kde-connect Installation

1. If kde-connect is successfully built, but your Android device cannot discover the desktop, check if the firewall on your desktop is blocking traffic from Android device. It uses dynamic ports in the range 1714-1764 for UDP and TCP.

2. If you get the following error while building kde-connect, this is due to minimum version requirement (0.8.1) of libqjson-dev.

  Could not find a configuration file for package "QJSON" that is compatible
  with requested version "0.8.1".

  The following configuration files were considered but not accepted:

    /usr/lib/x86_64-linux-gnu/
cmake/qjson/qjson-config.cmake, version: 0.7.1
    /usr/lib/x86_64-linux-gnu/cmake/qjson/qjson-config.cmake, version: 0.7.1

To fix this problem, you need to download and install the latest libqjson-dev. For example, on Ubuntu 12.10, downloading and installing the latest libqjson-dev (and its dependency) from the following locations solves the problem.

  • http://packages.ubuntu.com/raring/libqjson-dev
  • http://packages.ubuntu.com/raring/libqjson0
$ sudo dpkg -i libqjson0_0.8.1-1_amd64.deb
$ sudo dpkg -i libqjson-dev_0.8.1-1_amd64.deb


Subscribe to Xmodulo

Do you want to receive Linux FAQs, detailed tutorials and tips published at Xmodulo? Enter your email address below, and we will deliver our Linux posts straight to your email box, for free. Delivery powered by Google Feedburner.

55 thoughts on “How to integrate Android into KDE Linux desktop

  1. Hi! To fix Fedora issue you need to re-compile using
    cmake -DCMAKE_INSTALL_PREFIX=/usr ./
    Works for me.

    Also if you get
    kbuildsycoca4 -noincremental
    kbuildsycoca4 running...
    kbuildsycoca4(28889) VFolderMenu::loadDoc: Parse error in "............/.config/menus/applications-merged/xdg-desktop-menu-dummy.menu" , line 1 , col 1 : "unexpected end of file"
    just remove that file and re-run the command

  2. Can't get it to work in Sabayon. Compiles OK but returns false when run. Nothing in any logs to give me a clue.

    • OK, for the record...

      qca-gnupg

      ...needs installing. I installed this and got true. Continuing with the rest now.?

        • I followed the git install, plain and simple. The only extra step was to install the qca-gnupg package, which I found out from the KDE bugzilla. This may solve the Fedora problem too :)

  3. Hi,

    very interesting. I would like to give it a try.
    compilation seams to work, but when I run: kbuildsycoca4 -noincremental

    I've got this:
    kbuildsycoca4 running...
    kbuildsycoca4(10742) KConfigGroup::readXdgListEntry: List entry Keywords in "plasma-applet-lockout.desktop" is not compliant with XDG standard (missing trailing semicolon).
    kbuildsycoca4(10742) KConfigGroup::readXdgListEntry: List entry Keywords in "plasma-applet-batterymonitor.desktop" is not compliant with XDG standard (missing trailing semicolon).
    . . . .

    I can see the icon in system setting, but Kde connect on android don't see my host.
    I'm on mint 16 KDE edition.

    • KDE connect should work even with the warnings. If Android doesn't see your host, the problem is something else. Make sure that they are on the same local network, and that firewall is turned off. Try running wireshark or tcpdump to see if UDP packets are coming in from Android.

  4. You also have to make sure you have the package `libqca2-plugin-ossl` is installed.
    (This is the name on Debian. It should have a similar name on Ubuntu)

  5. On Kubuntu 13.10 I got a failure to "exec qdbus". A little research came up with the solution: install the "qdbus-qt5" package.

  6. I was not aware of KDE connect, but it sounds great! Exactly what I was looking for. Thanks for the tip - will try it out right away.

  7. It still needs work though. Also I don't think it works unless you're on the same wifi as your phone. I wish they could just rip off pushbullet's system for better stability and features.

  8. Here is WIP package for Fedora btw
    http://koji.fedoraproject.org/koji/buildinfo?buildID=487479
    I'm testing that one. It does not work for me though. Might be faulty package :)

    Questions:
    * is it allowed to have multiple network connections active (LAN for internet,wifi just for kde-connect)?
    * kde-connect knows that it should listen for UDP broadcast on wifi interface?

    What I did to find out the problem:
    * temporary switched off firewall

    Other observations:
    * Using Android 2.3x (CyanogenMod)
    * System settings component for KDE connect is empty when I open it
    * qdbus org.kde.kded /kded loadModule kdeconnect returns true
    * wireshark shows that Android App sends UDP packet :
    {"type":"kdeconnect.identity", etc

  9. > is it allowed to have multiple network connections active (LAN for internet,wifi just for kde-connect)?

    I don't see any problem with multiple active interfaces. As long as your desktop can receive UDP broadcast from Android, it should be okay.

    > kde-connect knows that it should listen for UDP broadcast on wifi interface?

    It's listening on 0.0.0.0:1714 TCP/UDP ports by default, so pairing request from any interface should work.

    $ sudo netstat -nap|grep 1714
    tcp        0      0 0.0.0.0:1714            0.0.0.0:*               LISTEN      1135/kded4          
    udp        0      0 255.255.255.255:1714    0.0.0.0:*                           1135/kded4
    
    • Thanks Dan! It works now. Firewall apparently. Fedora 19 has firewalld instead of iptables, so I had to stop it with "service firewalld stop"

  10. Thanks for posting this. It's the first tutorial I've seen that explains how to configure your firewall, so now I've finally got it to work! \o/

  11. Hi,
    Thanks for this tool. I have succeeded in getting it to connect once I disabled the firewall on my desktop, will also disable firewall on my Notebook to enjoy it there. Prior to this I had been using the Android App "AirDroid" which is very full featured and works through a web browser. Don't need to disable the Firewall.

  12. Hi there. I've the following error when I do cmake -DCMAKE_INSTALL_PREFIX=/usr ./ :

    CMake Error at /usr/share/kde4/apps/cmake/modules/FindKDE4Internal.cmake:1311 (message):
    Unable to compile a basic Qt application. Qt has not been found correctly.

    How can I solve this?

  13. KDE Connect, It wants way too much access to my phone. It wants access to my phone calls and my Contacts list. No 3rd party App gets that on my phone. Great idea, but until I have full control over what when and where, it's a no go.

  14. Thanks very much indeed.
    I just installed kdeconnect in Gentoo (from the kde overlay), followed your guide and it worked like a charm. I couldn't be happier. What a marvellous birthday present :D

  15. Problem with cmake on debian for me. requesting versions 0.8.1 following were considered but not accepted version 0.7.1. How do I fix this problem?

  16. I have the app installed on my Stock N5 and have it sucessfully paired it with my Laptop too. When testing, it shows Pings, SMS / Phone ring notifications.
    But none of the other Apps notifications show up :(
    Is this by design?

  17. I have installed it in Linux Mint KDE 16 but I can not get the desktop part to run and listen. netstat gives not a single line with kded or kded4 listening nor any line listening in 1714 port. Machine is not firewalled in any way. Any ideas? Thanks in advance.

    P.S. I have installed kde connect from repository. No compilation at all.

  18. I got a flood of errors when I tried to configure on Linux Mint-16 KDE.
    =====
    prompt$ kbuildsycoca4 -noincremental

    kbuildsycoca4 running...

    kbuildsycoca4(10789) KConfigGroup::readXdgListEntry: List entry Keywords in "k3bsetup.desktop" is not compliant with XDG standard (missing trailing semicolon).

    kbuildsycoca4(10789) KConfigGroup::readXdgListEntry: List entry MimeType in ".hidden/mintInstall.py.desktop" is not compliant with XDG standard (missing trailing semicolon).

    kbuildsycoca4(10789) KConfigGroup::readXdgListEntry: List entry Actions in "/usr/lib/libreoffice/share/xdg/writer.desktop" is not compliant with XDG standard (missing trailing semicolon).
    ...
    =====

  19. First I installed KdeConnect from the (K)Ubunto repositories and most options worked fine.

    After an update comment from the Android app mentioned browsing the device from the KDE desktop I noticed this was not working.
    My Nexus phone and tablet now show up as devices in Dolphin but clicking them (or the Browse button from the Applet) does not get me in the phone.

    Dolphin shows an error containing:
    "Internal error.
    No such object path '/modules/kdeconnect/devices/d1b3f0fe2faa6d39/sftp' "

    Running a compiled version from Git made no difference.

    Does anyone have a tip on how to get this working?

    • I have the same issue (and have from the beginning) as teun. Does anyone know how to fix the issue? Everything else seems to work except the browsing. I have a Moto X (Not Rooted) if that makes any difference.

      Doug

  20. I have the same problem as Manuel Montoro.
    Process is running, with wireshark I can see packets sent to my laptop. There just isn't anyone listening on any of given ports.
    Running Mint KDE as well. No other errors though.

  21. Hi, i use linux mint 16 with kde desktop. android cyanogenmod with 4.4.2 on my phone. installed konnect-android out of the playstore and konnect-desktop from repository.

    firewall is stopped and portforwarding for 1714-1764 udp/tcp to the desktop. if i push the refresh-button on konnect-android, i can see (wireshark) some incomming data for the desktop .

    http://up.picr.de/17898613nd.jpg

    but android and the desktop won't find each other. any more ideas whats wrong with kde on mint ?

  22. Thank you for the truly great app, though an installation may be a bit hard for the beginner but it works without shamanic dances. Remote control works too - but there's another ergonomic problem.
    RC is useful only being in quick access, and digging through the menu levels makes it .. a crap.

    It makes sense to separate RC functions into widget to be placed at the one of android worktables.
    So you can unblock the screen, slide a table - and here's your RC, use it.

    As for me, I'm ready to pay a little for the premium version of KDE Connect android app with this feature.
    Think it over :3

    • Hi Wherecat, when I use the RC function on both my Nexus4 and 7, it is the first thing I see after unlocking the screen.

  23. after installing from ubuntu software center in ubuntu 14.04 nothing showing up in the program list or anywhere. Supposed to be a great bridge between android and linux, but unfortunately not working in ubuntu 14.04

  24. I am in Kubuntu 14.04.
    I found that in the installing command:
    "$qdbus org.kde.kded /kded loadModule kdeconnect"
    I needed the "" eclosing kdeconnect
    --> "$ qdbus org.kde.kded /kded loadModule "kdeconnect" "
    or else the result was false.

  25. Re-read all comment again,

    Linux Mint 16.

    Install from both Google Play and Ubuntu Repository.

    Using this page as reference for KDE setting.

    I followed this comment in this page and now my computer discoverable. :)

    Emil Sedgh on January 2, 2014 at 6:06 pm said:

    You also have to make sure you have the package `libqca2-plugin-ossl` is installed.
    (This is the name on Debian. It should have a similar name on Ubuntu)

    • are you intending to switch away from gnome to KDE? otherwise I don't understand what you're trying to do!

  26. I have a dual-homed computer, wired network is primary & default route, 2nd interface is on the same wireless lan as the Android device. This is running ubuntu 14.04 x64.

    I see the packets arrive from android on udp:1714, there's no firewall blocking, but there doesn't seem to be anything listening on udp:1714 on the computer. So I think something's broken and/or not running.

    I got this to work at home on my kde laptop (opensuse 13.1) and it worked immediately once I opened the firewall on the laptop to any inbound traffic to udp:1714 (both broadcast and direct).

    • I am using the kdeconnect package in ubuntu repo. I had to run /usr/lib/kde4/libexec/kdeconnectd at the command line, and now it partly works. I can ping the phone from the laptop but not vice versa, and I can control Amarok on the laptop from the phone. I can't use the touchscreen on the phone to control the laptop.
      Perhaps next reboot it will sort itself out.

  27. I had trouble pairing my devices - turned out it was dropbox using the same ports as the KDE end was trying to use - killed dropbox, on Linux Mint, and tried again, worked fine. Turned on dropbox again and all remained good.
    Just upgraded tablet, today, to KitKat so now it looks like I also need to upgrade from 0.4.1 in Mint to get all the extra goodies like notifications and and touchpad.
    Brill app. The clipboard part of it alone has been so useful.

  28. I am using kubuntu 14.04 lts and android 4.4. I have read through the posts, installed avahi. libqca2 is at the latest version. I installed from repository for both. I am not able to see my desktop. I am able to ping each other. I ran the qdbus with a True response.

Leave a comment

Your email address will not be published. Required fields are marked *

Current day month ye@r *