KDEConnect/en: Difference between revisions

From KDE UserBase Wiki
(Updating to match new version of source page)
 
(Updating to match new version of source page)
Line 24: Line 24:
The app for Android can be found in both the [https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp Google Play Store] and the free and open store [https://f-droid.org/repository/browse/?fdid=org.kde.kdeconnect_tp F-Droid].
The app for Android can be found in both the [https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp Google Play Store] and the free and open store [https://f-droid.org/repository/browse/?fdid=org.kde.kdeconnect_tp F-Droid].


There was some development of a '''KDE Connect''' client app for iOS in 2014 (see [https://cgit.kde.org/scratch/yangqiao/kdeconnect-ios.git/ source code]) but due to our experience and various technical and organizational factors it's unlikely that we will have official iOS support anytime soon.
There was some development of a '''KDE Connect''' client app for iOS in 2014 (see [https://invent.kde.org/wxiao/kdeconnect-ios source code]) which sat still for a couple of years until it was picked up again in around 2018-19 with a couple of patches and TLS support. In 2021, a [https://invent.kde.org/lucaswzx/kdeconnect-ios-2021-testing '''major project'''] was started to revamp much of the old codebase with newer frameworks and possibilities of further expansion.


'''KDE Connect''' is also available on [https://openrepos.net/content/r1tschy/sailfish-connect] and we are working on bringing it to other Linux-based phones (Plasma Mobile, PostmarketOS etc.)
'''KDE Connect''' is also available on [https://openrepos.net/content/r1tschy/sailfish-connect] and we are working on bringing it to other Linux-based phones (Plasma Mobile, PostmarketOS etc.)


[https://kdeconnect.kde.org/download.html See KDE Connect download page]
[https://kdeconnect.kde.org/download.html See KDE Connect download page]


== Overview ==
== Overview ==
Line 96: Line 95:


With this, you can simply copy text from your computer and it will be immediately available to paste on your phone, and vice-versa. This does not work with images though.
With this, you can simply copy text from your computer and it will be immediately available to paste on your phone, and vice-versa. This does not work with images though.
====Auto-sync on Android 10+====
Android 10 prevents apps from accessing the clipboard to prevent malicious apps from accessing your data. This makes the clipboard plugin in KDE Connect uncomfortable to use.
=====Magisk Module (root only)=====
If you are rooted, you can use a Magisk module to remove this restriction.
=====Log Reading=====
If you have a build containing commit [https://invent.kde.org/network/kdeconnect-android/commit/edc655da5ac1eb5c3027c8556cc62037a1d4c5ac edc655da5ac1eb5c3027c8556cc62037a1d4c5ac], you can enable the READ_LOGS permission in order to enable a workaround to clipboard sync.
Run these commands:
<syntaxhighlight lang="bash">
adb -d shell pm grant org.kde.kdeconnect_tp android.permission.READ_LOGS;
adb -d shell appops set org.kde.kdeconnect_tp SYSTEM_ALERT_WINDOW allow;
adb -d shell am force-stop org.kde.kdeconnect_tp;
</syntaxhighlight>
''How does it work?''
With log reading enabled, KDE Connect watches its own log. If it sees a line indicating that it has been denied access to read the clipboard, it pops up an invisible window to the foreground, grabs the clipboard, and closes the window.
===Contacts===
''"Synchronize contacts between devices"''
This plugin silently synchronizes contacts, in vcard format, from your phone to your desktop.
As of this writing, the synchronization is one-way, with data being sent from the Android implementation to the desktop, to be consumed by any application which uses the KPeople library with the KPeopleVCard plugin, such as the KDE Connect SMS app.
====VCard Location====
On non-Windows platforms, contact cards are written to ''QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/kpeoplevcard"''. This might be configured differently by your system, but normally resolves to ''~/.local/share/kpeoplevcard''.
On Windows, the path resolves to ''%LocalAppData%''.


===Inhibit Screensaver===
===Inhibit Screensaver===
Line 199: Line 233:


'''KDE Connect''' uses dynamic ports in the range 1714-1764 for UDP and TCP. So if you are behind a firewall, make sure to open this port range for both TCP and UDP. Otherwise, make sure your network is not blocking UDP broadcast packets.
'''KDE Connect''' uses dynamic ports in the range 1714-1764 for UDP and TCP. So if you are behind a firewall, make sure to open this port range for both TCP and UDP. Otherwise, make sure your network is not blocking UDP broadcast packets.
Check that the process is listening on the network:
<syntaxhighlight lang="bash">
sudo netstat -tunelp | grep -i kdeconnect
</syntaxhighlight>
Are the ports open/blocked?
<syntaxhighlight lang="bash">
netcat -z -v <your-phones-ip> 1714-1764
</syntaxhighlight>
Example output:
Connection to <your -phones-ip> 1716 port [tcp/*] succeeded!
You also get lots of Connection refused, but you need 1 “succeeded”


==== ufw ====
==== ufw ====
Line 215: Line 267:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
sudo firewall-cmd --zone=public --permanent --add-port=1714-1764/tcp
sudo firewall-cmd --permanent --zone=public --add-service=kdeconnect
sudo firewall-cmd --zone=public --permanent --add-port=1714-1764/udp
sudo firewall-cmd --reload
sudo systemctl restart firewalld.service
</syntaxhighlight>
</syntaxhighlight>


Line 241: Line 292:


Sometimes, a corrupt config file may cause '''KDE Connect''' to crash when trying to pair with a device. In that case, deleting the config  ~/.config/kdeconnect might help.
Sometimes, a corrupt config file may cause '''KDE Connect''' to crash when trying to pair with a device. In that case, deleting the config  ~/.config/kdeconnect might help.
=== KDE Connect Android app crashes ===
If the KDE Connect Android app crashes, you might be able to get more information about the crash by using '''adb logcat'''.
Set up ADB using the official instructions: https://developer.android.com/studio/command-line/adb
The following command should list all information relevant to your crash. Run '''adb logcat''' *before* triggering the crash.
<syntaxhighlight lang="bash">
adb logcat --pid=$(adb shell pidof -s org.kde.kdeconnect_tp)
</syntaxhighlight>


===  Can I run KDE Connect without a display server? ===
===  Can I run KDE Connect without a display server? ===

Revision as of 23:06, 23 September 2022

What is KDE Connect?

KDE Connect is a project that enables all your devices to communicate with each other. Here's a few things KDE Connect can do:


  • Receive your phone notifications on your desktop computer and reply to messages
  • Control music playing on your desktop from your phone
  • Use your phone as a remote control for your desktop
  • Run predefined commands on your PC from connected devices. See the list of example commands for more details.
  • Check your phone's battery level from the desktop
  • Ring your phone to help find it
  • Share files and links between devices
  • Browse your phone from your desktop
  • Control the desktop's volume using your phone
  • Send SMS from your desktop

Installation

You will most likely find the KDE Connect desktop component as a package in your distribution's repos. If not, you can ask them to package it.

Despite common misconception, you can use KDE Connect on all desktop environments. Since most of the developers are using Plasma, it may occur that a feature is broken or inaccessible on other desktop environments. In this case, please file a bug report. There are multiple ways to enhance the KDE Connect experience on non-Plasma desktops. If you are a GNOME user you might prefer GSConnect, a GNOME shell extension. For desktops with AppIndicator support (Budgie, Cinnamon, LXDE, Pantheon, Unity) indicator-kdeconnect is available.

The app for Android can be found in both the Google Play Store and the free and open store F-Droid.

There was some development of a KDE Connect client app for iOS in 2014 (see source code) which sat still for a couple of years until it was picked up again in around 2018-19 with a couple of patches and TLS support. In 2021, a major project was started to revamp much of the old codebase with newer frameworks and possibilities of further expansion.

KDE Connect is also available on [1] and we are working on bringing it to other Linux-based phones (Plasma Mobile, PostmarketOS etc.)

See KDE Connect download page

Overview

This is the documentation page for KDEConnect. You can see the community page here [2] which explains what KDEConnect is and how to install it.

KDE Connect has two parts. The desktop program and the phone app.

Pairing two devices together

First, you need to open KDE Connect on your computer and phone. You should now be able to see in each screen the name of the device you wish to pair with. If it's working, make sure that the two devices are connected to the same network and that there isn't any firewall blocking the two devices from seeing each other. See the troubleshooting section.

You can now request pairing in one of the two devices. The other device will show a prompt asking to accept the pairing request. Confirm it and that's it! Your devices are now paired.

While a typical configuration might include one computer and one phone, it's also possible to pair two computers instead.

Browser Integration

Plasma Browser Integration makes KDE Connect even more powerful. It allows you to control content from e.g. Youtube or Netflix from your phone and send browser tabs to your phone. Despite the name, it can also be used on non-Plasma desktops.

Changing Device Names

You can only change the name of your device on the device itself. So if you want to change the name of your computer then you must use the desktop program and if you want to change the name of your phone or tablet you must make the change in the KDE Connect app. Once a device is renamed, it will automatically sync with all other connected devices.

Running KDE Connect over OpenVPN

There may be a variety of reasons for using KDE Connect with a VPN. Maybe you have left home and want to run a command, or maybe you’re on a public wifi network where your devices aren’t allowed to communicate and you want to use the remote control to give a presentation.

Set up OpenVPN

If you have your own server with a public-facing IP address, you can set up OpenVPN yourself. It is not the easiest piece of software to set up, but by following a setup tutorial such as this one, you should be able to manage: https://openvpn.net/howto.html

In order to allow UDP broadcast packets, which are what KDE Connect uses to automatically discover two devices, OpenVPN needs to be set up for bridging (TAP device). If you use a tun device, you can still manually connect by IP address.

If you want to rent a pre-configured OpenVPN service rather than set up your own, it should work, but the same considerations about the server settings need to be taken into account.

Once the server is running, you can use the official OpenVPN client to connect the desktop to the server. There is no official OpenVPN client for Android, but the OpenVPN for Android client works well: https://play.google.com/store/apps/details?id=de.blinkt.openvpn

Once both devices are connected, test that they are able to communicate over the VPN by trying to do a network ping between them.

Configure KDE Connect

If your OpenVPN instance is set up for bridging, KDE Connect should work just like on a local network.

If you are using OpenVPN with a tun device, you will have to manually add your devices by IP. Then, once you connect to the VPN, KDE Connect should automatically detect your device and either connect or be ready for pairing!

Available Plugins

Battery Monitor

"Show your phone battery next to your computer battery."

By enabling this, the KDE Connect widget on your panel tray will display your phone's battery.

Clipboard

"Share the clipboard between devices."

With this, you can simply copy text from your computer and it will be immediately available to paste on your phone, and vice-versa. This does not work with images though.

Auto-sync on Android 10+

Android 10 prevents apps from accessing the clipboard to prevent malicious apps from accessing your data. This makes the clipboard plugin in KDE Connect uncomfortable to use.

Magisk Module (root only)

If you are rooted, you can use a Magisk module to remove this restriction.

Log Reading

If you have a build containing commit edc655da5ac1eb5c3027c8556cc62037a1d4c5ac, you can enable the READ_LOGS permission in order to enable a workaround to clipboard sync.

Run these commands:

adb -d shell pm grant org.kde.kdeconnect_tp android.permission.READ_LOGS;
adb -d shell appops set org.kde.kdeconnect_tp SYSTEM_ALERT_WINDOW allow;
adb -d shell am force-stop org.kde.kdeconnect_tp;

How does it work?

With log reading enabled, KDE Connect watches its own log. If it sees a line indicating that it has been denied access to read the clipboard, it pops up an invisible window to the foreground, grabs the clipboard, and closes the window.

Contacts

"Synchronize contacts between devices"

This plugin silently synchronizes contacts, in vcard format, from your phone to your desktop.

As of this writing, the synchronization is one-way, with data being sent from the Android implementation to the desktop, to be consumed by any application which uses the KPeople library with the KPeopleVCard plugin, such as the KDE Connect SMS app.

VCard Location

On non-Windows platforms, contact cards are written to QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/kpeoplevcard". This might be configured differently by your system, but normally resolves to ~/.local/share/kpeoplevcard.

On Windows, the path resolves to %LocalAppData%.

Inhibit Screensaver

"Inhibit the screensaver when the device is connected."

This makes sure that your screensaver will not run while your device is connected.

Multimedia Control Receiver

"Remote control your music and videos."

With this feature, you can control your music and videos remotely, with pause/play, previous/next, 5 s before/later. You can also change which media player to control, in addition to application and system volume.

Multimedia control receiver with KDE Connect in Android
Multimedia control receiver with KDE Connect in Android

Pause Media During Calls

"Pause music/videos during a phone call."

Pause music/videos during a call. This feature can be powerful when combined with Plasma Browser Integration. For example, when you are listening to some music on Peertube or Youtube, the video will be paused whenever you receive a call.

You can configure this option to pause only when you pick up your phone or directly when your phone starts to ring. You can also decide if you want to only pause the media player or/and mute the system sound.

Ping

"Send and receive pings."

This serves to test your connection to a given device. Once selected, a "Ping!" will appear as a notification on your receiving device.

On your desktop, you can send a ping through the KDE Connect settings or through the widget on the tray.

On your phone, you can send a ping through the upper right hamburger menu on the KDE Connect app.

Send a ping to your computer with android
Send a ping to your computer with android

Receive Notifications

"Show your phone notifications on your computer and keep them in sync."

This keeps you in touch with what happens on your phone! Any notifications you receive on your phone will be shown in your computer. Some notifications, such as those of Instant Messengers (IM) like Telegram can be replied on the fly through the computer notification itself.

Remote File System Browser

"Browse the remote device filesystem using SFTP."

This allows you to access your phone storage! When enabled, a device will appear in Dolphin with which you can navigate your external storage.

Ring My Phone

"Find your lost phone by making it play an alarm sound."

This also serves to test your connection to a given device, and by ringing your phone remotely, you can quickly find its location!

Run Commands

"Execute console commands directly."

With KDE Connect, you can run predefined commands on your computer by pressing buttons on your phone! Instructions on how to add a command are shown in userbase. A set of useful commands can also be found here. Some sample commands, such as suspend and lock screen, are also available.

Send Notifications

"Broadcast this computer's notifications, so they can be shown on other devices."

This is pretty self-explanatory: notifications from your computer will show up on your phone.

You can configure if you want to send the notification description, the icons pertaining to the application and persistent or very important notifications. This keeps you in touch with what happens on your computer! Any notifications you receive on your computer will be shown in your phone.

Share and Receive

"Receive and send files, URLs or plain text easily."

This integrates your desktop and your browser so that you can right-click on files or links and send it immediately to your phone!

Files show the right-click option "Send to phone via KDEConnect" and will send the file directly, showing it among your notifications.

Links show the right-click option "Open on phone" and will automatically open your phone's default browser on the chosen website. Really handy!

When receiving files from your phone into your computer, they will go to your Downloads folder by default. If you wish, you can change that too.

Telephone Integration

"Show notifications for incoming calls."

Whenever you get a call on your phone, a notification telling you which number is calling appears. Paired with "Pause media during calls", you'll surely be able to answer readily and never lose a call!

Virtual Input

"Use your phone as a touchpad and keyboard."

With this enabled, by going to your phone app and selecting Remote input, a touch screen will immediately be available for you to control your computer mouse, similarly to a touchpad. One touch equals one click.

The keyboard icon in the upper right allows you to type on your phone and see the result on your computer too.

If you press the hamburger menu right by its side, you'll be able to send right and middle clicks.

Presentation control

It is possible to control presentations using the previous/next slide button. When the device is locked, you can use the volume up/down button to do that. You can also highlight something using the laserpointer. Just move your phone and the blue circle will follow! Using the hamburger menu, you can toggle fullscreen (F5) or quit the presentation (Esc).

Troubleshooting

I have two devices running KDE Connect on the same network, but they can't see each other

KDE Connect uses dynamic ports in the range 1714-1764 for UDP and TCP. So if you are behind a firewall, make sure to open this port range for both TCP and UDP. Otherwise, make sure your network is not blocking UDP broadcast packets.

Check that the process is listening on the network:

sudo netstat -tunelp | grep -i kdeconnect

Are the ports open/blocked?

netcat -z -v <your-phones-ip> 1714-1764

Example output:

Connection to <your -phones-ip> 1716 port [tcp/*] succeeded!

You also get lots of Connection refused, but you need 1 “succeeded”

ufw

If your firewall is ufw, you can open the necessary ports with:

sudo ufw allow 1714:1764/udp
sudo ufw allow 1714:1764/tcp
sudo ufw reload

firewalld

If your firewall is firewalld, you can open the necessary ports with:

sudo firewall-cmd --permanent --zone=public --add-service=kdeconnect
sudo firewall-cmd --reload

Firewall Configuration (firewall-config)

Open Firewall Configuration (firewall-config). In ZonesServices, check the kde-connect service.

Make sure you choose the "Permanent" Configuration: option in the drop-down menu at the top, otherwise rebooting will discard your settings changes.

iptables

If your firewall is iptables, you can open the necessary ports with:

sudo iptables -I INPUT -i <yourinterface> -p udp --dport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -I INPUT -i <yourinterface> -p tcp --dport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -o <yourinterface> -p udp --sport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -o <yourinterface> -p tcp --sport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT

KDE Connect crashes or restarts when trying to pair with another device

Sometimes, a corrupt config file may cause KDE Connect to crash when trying to pair with a device. In that case, deleting the config ~/.config/kdeconnect might help.

KDE Connect Android app crashes

If the KDE Connect Android app crashes, you might be able to get more information about the crash by using adb logcat.

Set up ADB using the official instructions: https://developer.android.com/studio/command-line/adb

The following command should list all information relevant to your crash. Run adb logcat *before* triggering the crash.

adb logcat --pid=$(adb shell pidof -s org.kde.kdeconnect_tp)

Can I run KDE Connect without a display server?

Yes, you can pass the command line argument `-platform offscreen` to the daemon (eg: `killall -9 kdeconnectd; /usr/lib/libexec/kdeconnectd -platform offscreen`)

GSConnect

GSConnect is an independent project which implements the KDE Connect protocol into GNOME and uses the same Android app. If you are running GSConnect, please visit that project's GitHub page first for support. If you and the GSConnect team determine the issue is the Android app or protocol, feel free to report those in the KDE Connect bug tracker.

My problem is not in this list :(

In case you find a bug and want to report it, you can do so in the KDE bug tracker.