Back to Client Overview

Install the FSRdp Client on Linux

For Ubuntu, Xubuntu, Debian and Raspberry Pi OS (64-bit). Every command is explained individually, even if this is your first time using a terminal.

1. Prerequisites

  • Linux with a graphical desktop. Tested on Ubuntu and Xubuntu (x64), Debian and Raspberry Pi OS (64-bit) on Raspberry Pi 5. The client does not run on a server without a desktop.
  • The correct architecture: linux-x64 for Intel/AMD, linux-arm64 for Raspberry Pi. Check with uname -mx86_64 or aarch64.
  • No separate .NET installation; the package is self-contained.
  • The server name and ports of your FsRdpServer (default 8888 and 8889).
  • An account with sudopermissions for installation.

2. Understand and Install Dependencies

Linux has no single interface for screen capture and keyboard input. The client therefore uses established small utilities. You only need to install those required for the features you intend to use:

PackagePurposeRequired When …
grim Screen capture on Wayland (Raspberry Pi OS with labwc, wlroots compositors) … you want to share your screen
gnome-screenshot Screen capture on X11 (Xubuntu/XFCE and similar desktops) … you want to share your screen
ydotool Inject mouse and keyboard input your computer should accept remote control
pipewire-bin, wireplumber Microphone and speakers … you want to use voice
wl-clipboard or xclip or xsel Clipboard between computers … your computer's screen is shared and remotely controlled
v4l-utils Gives cameras readable names … optional, for convenience only
policykit-1 Confirmation before installing updates … always

ydotool is not in the default package repositories on some systems. On Raspberry Pi OS it is in backports, for example; the ARM64 package includes a suitable repository source file.

3. Extract and Install the Package

Open a terminal (on Raspberry Pi OS and Ubuntu, usually with Ctrl+Alt+T) and change to the folder containing the downloaded ZIP file, usually:

cd ~/Downloads
1

Extract

sudo apt update
sudo apt install -y unzip
unzip FsRdpClient-linux-arm64.zip -d FsRdpClient
cd FsRdpClient

On an Intel/AMD computer, the file is named FsRdpClient-linux-x64.zip. The archive has no password.

2

Make Files Executable

chmod +x FsRdpClient install.sh apply-update.sh

For the Raspberry Pi package, also include prepare-raspberry-pi.sh ; for the x64 package, include prepare-ubuntu-server.sh. Linux does not automatically mark extracted files as executable; this step does so.

3

Prepare Dependencies

./prepare-raspberry-pi.sh

On an x64 system, use ./prepare-ubuntu-server.shinstead. A restart is required afterwards because the script also configures the desktop.

4

Install the Client

./install.sh

Important: Run this script as your ordinary desktop user , without prefixing it with sudo . It requests administrative permissions where needed. The application menu entry and input service are configured for the user running the script.

The program is then installed under /opt/fsrdp-client/ and appears in the application menu. Alternatively, start it in a terminal:

fsrdp-client

4. Enable Remote Control of This Computer

Only required if your computer should be controlled by someone else. If you only want to control other computers, skip this section.

On Linux, an ordinary program cannot generate keyboard and mouse events. A small system service called ydotooldhandles this. If ydotool is installed, install.sh automatically configures this service as well (fsrdp-input.service), tailored to your user account.

Check that it is running:

systemctl status fsrdp-input.service --no-pager

If installation reports that ydotool is not installed, remote control of this computer remains disabled. Everything else still works.

5. Microphone, Audio and Echo Cancellation

Unlike Windows, there are no permission switches: if PipeWire is running and a microphone is connected, it works. Select devices in the client's settings.

Without echo cancellation, the client uses half-duplex audio: while playing audible room audio, it pauses your microphone. Otherwise it would capture other participants' sound and everyone would hear a delayed echo. With a headset, this is not noticeable.

To use speakers without a headset and allow simultaneous speech, enable PipeWire echo cancellation once per computer:

mkdir -p ~/.config/pipewire/pipewire.conf.d

Create the file 99-echo-cancel.conf there. The exact template is in README-LINUX.md or the package's included README. Then:

systemctl --user restart pipewire wireplumber

6. Settings: Server, Name and Language

Open settings using the gear icon and enter:

Your NameThe display name other participants see.
Server AddressYour server's DNS name, e.g. server.ihrefirma.de. Do not use an IP address : the certificate is issued for the name.
PortsNormally 8888 and 8889.
Spoken LanguageDetermines the language in which your speech is recognized and in which you read other participants' captions. Only relevant if your server offers live captions.
Supporter KeyIf you have one, it makes you the owner of rooms you create.

7. Join Your First Room

A room is a virtual meeting place. Everyone entering the same room number joins the same session. Enter the number you received and connect. While alone in a room, screen sharing, chat and file sending are disabled, since there is no one to receive them.

When sharing your screen, a red border continuously shows the transmitted area. Only one person can share at a time; starting a new share replaces the current one.

8. Differences from the Windows Client

Both clients offer the same features, with three platform-specific exceptions:

  • No session recording. Only the Windows client can record a session as a video file. The Linux client displays a notice while someone else records, but cannot start a recording itself.
  • Plain-text clipboard only. The Linux client does not transfer formatted content such as tables or styled text; it uses the included plain-text representation. There is no common way to transfer formatted clipboard content across X11 and Wayland.
  • Starting again does not bring the window forward. Only one client instance runs per user here as well. A second launch displays a notice and exits because Wayland compositors refuse requests to activate another application's windows.

The single-instance limit has the same reason as on Windows: a second instance would recapture the first instance's room audio through the shared microphone. Neither half-duplex switching nor PipeWire echo cancellation can prevent this, since each only knows its own playback stream.

9. Updates and Uninstallation

At startup, the client checks its update channel; x64 and ARM64 are separate. Updates are downloaded only after confirmation. A cryptographically signed manifest, package size and SHA-256 checksum are verified before PolicyKit asks for your password. Nothing is silently installed in the background.

To remove the client, run:

sudo rm -rf /opt/fsrdp-client
sudo rm -f /usr/local/bin/fsrdp-client
rm -f ~/.local/share/applications/fsrdp-client.desktop
sudo systemctl disable --now fsrdp-input.service

10. Common Problems

./install.sh: Permission denied

The file has not been marked executable yet. Repeat the chmod +xstep from section 3.

Screen Sharing Is Black or Does Not Start

The required capture utility is missing: grim on Wayland, gnome-screenshot on X11. To identify your session type:

echo $XDG_SESSION_TYPE

Remote Control of My Computer Does Not Work

Check systemctl status fsrdp-input.service. If the service is missing, ydotool was not available during installation. Install it and run ./install.sh again.

The Mouse Pointer Jumps During Remote Control

On labwc systems, the virtual input device needs a flat acceleration profile. Installation creates an appropriate rc.xml . If your own file already exists, it is left unchanged and you must copy the section from the included template yourself.

Others Cannot Hear Me

  1. Is the microphone muted in the client?
  2. Is the correct recording device selected in settings?
  3. Is PipeWire running? systemctl --user status pipewire
  4. Is the client currently playing room audio? The microphone is intentionally paused in that case (section 5).

The Client Does Not Connect

Check the server address (name, rather than IP) and both port numbers. To check name resolution, run getent hosts server.ihrefirma.de. If there is no answer, the problem is DNS rather than the client.

Something Not Working as Described? Please write to me; I am happy to help.

Robert Fischbacher

Contact Me Directly