# Install the FSRdp Client on Linux

For Linux Mint, Ubuntu, Debian and Raspberry Pi OS (64-bit). The client is an ordinary
Debian package: on a PC a double-click is usually enough, on a Raspberry Pi a single
command.

> Plain-text version of <https://www.fssoft.de/FsRdp/en/InstallingClientLinux.aspx>
> for AI assistants and printing. Its content matches the HTML version;
> the web page is authoritative in case of doubt.
>
> Automatically generated from the page and language resources by
> FsRdp/Build-InstallDocs.ps1. Edit those sources rather than this file.

> **Acceptable use:** FSRdp is meant for remote support, collaboration and conversation.
> In particular, we do not tolerate streaming sports events, films, concerts or broadcasts
> without the rights holder's permission, transmitting or recording people without their
> consent, and criminal acts or content of any kind. Violations lead to suspension and may
> be reported to the police. The client asks for your consent once, at its first start.
> Report abuse to [abuse@fssoft.de](mailto:abuse@fssoft.de). See the [terms of
> use](https://www.fssoft.de/en/Nutzungsbedingungen.aspx).

## On This Page

1. Prerequisites
2. Download the Right Package
3. Install the Package
4. Enable Remote Control of This Computer
5. Microphone, Audio and Echo Cancellation
6. Settings: Server, Name and Language
7. Join Your First Room
8. Differences from the Windows Client
9. Updates and Uninstallation
10. Common Problems

---

## 1. Prerequisites

- **Linux with a graphical desktop.** Tested on Linux Mint 22 and Ubuntu (x64) and on
  Raspberry Pi OS (64-bit) on Raspberry Pi 5. The client does not run on a server
  without a desktop.
- A 64-bit system: `amd64` for Intel/AMD computers, `arm64` for Raspberry Pi. Check with
  `dpkg --print-architecture`. 32-bit Linux is not supported.
- No separate .NET installation; the package is self-contained.
- The **server name** and ports of your FsRdpServer (default `8888` and `8889`).
- An account with `sudo`permissions for installation.

> **You do not need to open any ports on the client.** The client always initiates the
> connection to the server. Only the *server* must be reachable.

---

## 2. Download the Right Package

There are two packages; which one you need depends only on the processor:

| File | For |
|---|---|
| [`fsrdp-client_amd64.deb`](https://www.fssoft.de/FsRdp/Downloads/LinuxX64/fsrdp-client_amd64.deb) | PCs and laptops with an Intel or AMD processor (Linux Mint, Ubuntu, Debian) |
| [`fsrdp-client_arm64.deb`](https://www.fssoft.de/FsRdp/Downloads/LinuxArm64/fsrdp-client_arm64.deb) | Raspberry Pi 4/5 with Raspberry Pi OS (64-bit) and other ARM64 computers |

> **Everything else comes along automatically.** The package names the programs the client
> needs: PipeWire tools for microphone and speakers, ffmpeg for the camera and a clipboard
> tool. The package manager installs any that are missing. You do not need to collect
> anything or run any scripts.

---

## 3. Install the Package

### Step 1: With a Double-Click (Linux Mint, Ubuntu)

Open the Downloads folder in the file manager and double-click the downloaded file. The
software installer opens: click **Install** and confirm with your password.

### Step 2: Or in a Terminal (Also on Raspberry Pi)

Raspberry Pi OS has no software installer for individual files. There, and everywhere
else, one command in a terminal (Ctrl+Alt+T) is enough:

```bash
cd ~/Downloads
sudo apt install ./fsrdp-client_arm64.deb
```

On a PC the file is named `fsrdp-client_amd64.deb`. The `./` before the file name
matters: without it, apt looks for a package of that name on the internet.

### Step 3: Start

FSRdpClient then appears in the application menu. On first start it asks once for your
consent to the terms of use. Alternatively, in a terminal:

```bash
fsrdp-client
```

> **Wrong package or 32-bit system?** Then the installation stops and reports that the
> package architecture does not match the system. Download the other package; on a
> Raspberry Pi, install the 64-bit Raspberry Pi OS if necessary.

> **Switching from the former ZIP installation:** Simply install the package over it. It
> takes over the program folder, removes the old menu entry and launcher, and keeps your
> settings.

---

## 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. For this, the
package sets up the small system service `ydotoold` as `fsrdp-input.service` for your
user account, provided `ydotool` version 1.0 or later is available. That depends on the
system:

- **Raspberry Pi OS (Debian 13 "trixie"):** ydotool 1.0 is in Debian backports. This one
  command adds the repository and installs ydotool together with the service:

  ```bash
  sudo /opt/fsrdp-client/setup-remote-input.sh --install-ydotool
  ```
- **Linux Mint 22, Ubuntu 24.04:** These systems only ship ydotool 0.1.8, so this
  computer cannot be remotely controlled for now. Everything else works, including
  controlling other computers. The package deliberately does not install the old
  version: its own service would be writable for every user of the computer.

Check that it is running:

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

> **Why Use a Dedicated Service?** The standard ydotool service makes its control
> interface writable by all users, so anyone signed in could generate keyboard input for
> other users. By contrast, FSRdp's `fsrdp-input.service` restricts the interface to your
> account.

---

## 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 work without a headset and still talk at the same time, enable PipeWire's echo
cancellation once per computer:

```bash
mkdir -p ~/.config/pipewire/pipewire.conf.d
cat > ~/.config/pipewire/pipewire.conf.d/99-echo-cancel.conf <<'EOF'
context.modules = [
  { name = libpipewire-module-echo-cancel }
]
EOF
systemctl --user restart pipewire pipewire-pulse
```

Then check with `wpctl status`: "Echo-Cancel Source" and "Echo-Cancel Sink" appear
there, and the client reports "Echo cancellation is active (full duplex)" when joining a
room. This applies as long as no specific device is selected in the settings.

---

## 6. Settings: Server, Name and Language

Open settings using the gear icon and enter:

| Feld | Bedeutung |
|---|---|
| Your Name | The display name other participants see. |
| Server Address | Your server's DNS name, e.g. `server.ihrefirma.de`. **Do not use an IP address** : the certificate is issued for the name. |
| Ports | Normally `8888` and `8889`. |
| Spoken Language | Determines 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 Key | If you have one, it makes you the owner of rooms you create. |

> The settings dialog **cannot be opened during an active session**. Configure settings
> before joining a room.

---

## 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.

> **Connecting to a Server without a License?** During its 30-day trial period, a server
> accepts exactly **one** room number: `123456789`. Any other number is rejected with an
> explanatory message. The room can remain open for **up to 24 hours** and can be reopened
> immediately afterwards; all participants see a watermark. On a licensed server, this
> particular number is blocked instead.

---

## 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 you are asked for your password, and apt
installs the new package, including any dependencies a new version may need. Nothing is
silently installed in the background.

Remove the client like any other program in the application manager or in a terminal.
Your personal settings in ~/.config/FsRdpClient are kept:

```bash
sudo apt remove fsrdp-client
```

---

## 10. Common Problems

### A Double-Click Opens an Archive Program Instead of the Installer

Your system has no graphical installer for individual packages; this is normal on
Raspberry Pi OS. Use the terminal command from section 3.

### Screen Sharing Is Black or Does Not Start

On X11 (Linux Mint, Xubuntu) the client captures the screen itself. On Wayland it needs
`grim` (Raspberry Pi OS and other wlroots desktops) or `gnome-screenshot` (GNOME); the
package recommends both. To identify your session type:

```bash
echo $XDG_SESSION_TYPE
```

### Remote Control of My Computer Does Not Work

Check `systemctl status fsrdp-input.service`. If the service is missing, ydotool 1.0 was
not available during installation; see section 4. Once it is, `sudo
/opt/fsrdp-client/setup-remote-input.sh` sets the service up afterwards.

### 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` file. If your own file already exists, it
is left unchanged and you copy the section from /opt/fsrdp-client/labwc-rc.xml 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.

---

## Further Reading

- [The Same Guide for
  Windows](https://www.fssoft.de/FsRdp/en/InstallingClientWindows.aspx)
- [Run Your Own Server on
  Linux](https://www.fssoft.de/FsRdp/en/InstallingServerLinux.aspx)
- [License Terms](https://www.fssoft.de/FsRdp/en/Lizenz.aspx)

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

Robert Fischbacher

[Contact Me Directly](https://www.fssoft.de/en/Impressum.aspx)
