# FSRdp Client unter Linux installieren

Für Ubuntu, Xubuntu, Debian und Raspberry Pi OS (64 Bit). Jeder Befehl ist einzeln
erklärt – auch wenn Sie zum ersten Mal ein Terminal benutzen.

> Reine Textfassung der Seite <https://www.fssoft.de/FsRdp/InstallingClientLinux.aspx>
> für KI-Assistenten und zum Ausdrucken. Inhaltlich identisch mit der HTML-Fassung;
> maßgeblich ist im Zweifel die Seite selbst.

## Inhalt

1. Voraussetzungen
2. Abhängigkeiten verstehen und installieren
3. Paket entpacken und installieren
4. Fernsteuerung dieses Rechners ermöglichen
5. Mikrofon, Ton und Echounterdrückung
6. Einstellungen: Server, Name, Sprache
7. Den ersten Raum betreten
8. Unterschiede zum Windows-Client
9. Updates und Deinstallation
10. Häufige Probleme

---

## 1. Voraussetzungen

- **Ein Linux mit grafischer Oberfläche.** Getestet sind Ubuntu und Xubuntu (x64),
  Debian sowie Raspberry Pi OS (64 Bit) auf Raspberry Pi 5. Auf einem Server ohne
  Desktop läuft der Client nicht.
- Die passende Architektur: `linux-x64` für Intel/AMD, `linux-arm64` für Raspberry Pi.
  Prüfen mit `uname -m` – `x86_64` bzw. `aarch64`.
- Keine separate .NET-Installation – das Paket ist eigenständig.
- Den **Servernamen** und die Ports Ihres FsRdpServers (Standard `8888` und `8889`).
- Ein Konto mit `sudo`-Rechten für die Installation.

> **Am Client müssen Sie keine Ports freigeben.** Der Client baut die Verbindung immer
> von sich aus zum Server auf. Nur der *Server* muss erreichbar sein.

Das Paket erhalten Sie unter <https://www.fssoft.de/FsRdp/>.

---

## 2. Abhängigkeiten verstehen und installieren

Unter Linux gibt es keine einheitliche Schnittstelle für Bildschirmaufnahme und
Tastatureingaben. Der Client greift deshalb auf etablierte kleine Werkzeuge zurück. Sie
müssen nicht alle installieren – nur die für das, was Sie tatsächlich nutzen wollen:

| Paket | Wofür | Nötig wenn … |
|---|---|---|
| `grim` | Bildschirmaufnahme unter Wayland (Raspberry Pi OS mit labwc, wlroots-Compositoren) | … Sie Ihren Bildschirm teilen wollen |
| `gnome-screenshot` | Bildschirmaufnahme unter X11 (Xubuntu/XFCE und ähnliche) | … Sie Ihren Bildschirm teilen wollen |
| `ydotool` | Maus- und Tastatureingaben einspielen | … **Ihr** Rechner fernsteuerbar sein soll |
| `pipewire-bin`, `wireplumber` | Mikrofon und Lautsprecher | … Sie Sprache nutzen wollen |
| `wl-clipboard` oder `xclip` oder `xsel` | Zwischenablage zwischen den Rechnern | … Ihr Rechner geteilt *und* ferngesteuert wird |
| `v4l-utils` | gibt Kameras lesbare Namen | … optional, reine Bequemlichkeit |
| `policykit-1` | Rückfrage vor der Installation von Updates | … immer |

> **Sie müssen das nicht von Hand zusammensuchen.** Jedes Paket bringt ein
> Vorbereitungsskript mit, das die passenden Abhängigkeiten für Ihr System installiert:
> `prepare-raspberry-pi.sh` beim ARM64-Paket, `prepare-ubuntu-server.sh` beim
> x64-Paket. Die Tabelle oben erklärt nur, was dabei warum passiert.

`ydotool` ist auf manchen Systemen nicht in den Standard-Paketquellen. Auf Raspberry Pi
OS liegt es beispielsweise in den Backports – dem ARM64-Paket liegt dafür eine passende
Quellendatei bei.

---

## 3. Paket entpacken und installieren

Öffnen Sie ein Terminal (auf Raspberry Pi OS und Ubuntu meist mit
<kbd>Strg</kbd>+<kbd>Alt</kbd>+<kbd>T</kbd>) und wechseln Sie in den Ordner mit der
heruntergeladenen ZIP-Datei, meist:

```bash
cd ~/Downloads
```

### Schritt 1: Entpacken

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

Auf einem Intel-/AMD-Rechner heißt die Datei entsprechend
`FsRdpClient-linux-x64.zip`. Das Archiv hat kein Passwort.

### Schritt 2: Dateien ausführbar machen

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

Beim Raspberry-Pi-Paket kommt `prepare-raspberry-pi.sh` hinzu, beim x64-Paket
`prepare-ubuntu-server.sh`. Linux markiert entpackte Dateien nicht automatisch als
ausführbar – dieser Schritt holt das nach.

### Schritt 3: Abhängigkeiten vorbereiten

```bash
./prepare-raspberry-pi.sh
```

Auf einem x64-System stattdessen `./prepare-ubuntu-server.sh`; danach ist dort ein
Neustart nötig, weil das Skript auch den Desktop einrichtet.

### Schritt 4: Client installieren

```bash
./install.sh
```

**Wichtig:** Führen Sie dieses Skript als *normaler Desktop-Benutzer* aus, nicht mit
`sudo` davor. Es fragt selbst nach, wo es Verwaltungsrechte braucht. Der Grund: Der
Eintrag im Anwendungsmenü und der Eingabedienst werden für genau den Benutzer
eingerichtet, der das Skript startet.

Danach liegt das Programm unter `/opt/fsrdp-client/` und ist im Anwendungsmenü zu
finden. Alternativer Start im Terminal:

```bash
fsrdp-client
```

---

## 4. Fernsteuerung dieses Rechners ermöglichen

Nur nötig, wenn **Ihr** Rechner von jemand anderem gesteuert werden soll. Wollen Sie
umgekehrt nur andere steuern, können Sie diesen Abschnitt überspringen.

Unter Linux darf ein normales Programm keine Tastatur- und Mausereignisse erzeugen –
das erledigt ein kleiner Systemdienst namens `ydotoold`. Ist `ydotool` installiert,
richtet `install.sh` diesen Dienst automatisch mit ein (`fsrdp-input.service`),
zugeschnitten auf Ihr Benutzerkonto.

Prüfen, ob er läuft:

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

> **Warum ein eigener Dienst und nicht der mitgelieferte?** Der Standarddienst von
> ydotool legt seine Steuerschnittstelle für alle Benutzer beschreibbar an – wer sich am
> Rechner anmeldet, könnte damit Tastatureingaben aller anderen erzeugen. Der
> mitgelieferte `fsrdp-input.service` beschränkt die Schnittstelle auf Ihr Konto.

Erscheint bei der Installation der Hinweis, `ydotool` sei nicht installiert, bleibt die
Fernsteuerung dieses Rechners abgeschaltet. Alles andere funktioniert trotzdem.

---

## 5. Mikrofon, Ton und Echounterdrückung

Anders als unter Windows gibt es keine Berechtigungsschalter – wenn PipeWire läuft und
ein Mikrofon angeschlossen ist, funktioniert es. Die Geräteauswahl treffen Sie in den
Einstellungen des Clients.

**Ohne Echounterdrückung arbeitet der Client im Wechselsprechbetrieb:** Solange er
hörbaren Raum-Ton abspielt, pausiert er Ihr Mikrofon. Sonst würde Ihr Mikrofon den Ton
der anderen wieder einfangen und alle hörten sich verzögert selbst. Mit einem Headset
fällt das nicht auf.

Wollen Sie ohne Headset arbeiten und gleichzeitig sprechen können, aktivieren Sie die
Echounterdrückung von PipeWire einmalig pro Rechner:

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

Legen Sie darin die Datei `99-echo-cancel.conf` an. Die genaue Vorlage dafür finden Sie
in der Datei `README-LINUX.md` bzw. der beiliegenden README des Pakets. Danach:

```bash
systemctl --user restart pipewire wireplumber
```

---

## 6. Einstellungen: Server, Name, Sprache

Öffnen Sie die Einstellungen über das Zahnrad-Symbol und tragen Sie ein:

| Feld | Bedeutung |
|---|---|
| Ihr Name | Der Anzeigename, den die anderen Teilnehmer sehen. |
| Serveradresse | Der DNS-Name Ihres Servers, z. B. `server.ihrefirma.de`. **Keine IP-Adresse** – das Zertifikat lautet auf den Namen. |
| Ports | Normalerweise `8888` und `8889`. |
| Gesprochene Sprache | Bestimmt, in welcher Sprache Ihre Rede erkannt wird und in welcher Sprache Sie die Untertitel der anderen mitlesen. Nur relevant, wenn Ihr Server Live-Untertitel anbietet. |
| Supporter-Schlüssel | Falls Sie einen haben: Er macht Sie zum Besitzer der Räume, die Sie eröffnen. |

> Der Einstellungsdialog lässt sich **während einer laufenden Sitzung nicht öffnen**.
> Nehmen Sie Ihre Einstellungen vor, bevor Sie einem Raum beitreten.

---

## 7. Den ersten Raum betreten

Ein **Raum** ist der virtuelle Treffpunkt: Wer dieselbe Raumnummer eingibt, landet
zusammen in einer Sitzung. Tragen Sie die Nummer ein, die Sie bekommen haben, und
verbinden Sie sich. Solange Sie allein im Raum sind, sind Bildschirmfreigabe, Chat und
Dateiversand deaktiviert – es gäbe niemanden, der etwas empfängt.

Beim Teilen des Bildschirms zeigt ein roter Rahmen dauerhaft an, welcher Bereich
übertragen wird. Es kann immer nur eine Person gleichzeitig teilen; wer neu startet,
übernimmt.

---

## 8. Unterschiede zum Windows-Client

Beide Clients können dasselbe – mit drei Ausnahmen, die an der Plattform liegen:

- **Keine Sitzungsaufnahme.** Eine Sitzung als Videodatei aufzeichnen kann nur der
  Windows-Client. Der Linux-Client zeigt den Hinweis an, solange jemand anderes
  aufzeichnet, kann aber selbst keine Aufnahme starten.
- **Zwischenablage nur als Text.** Formatierte Inhalte (Tabellen, formatierter Text)
  überträgt der Linux-Client nicht; er verwendet den mitgelieferten Klartext. Für X11
  und Wayland gibt es dafür keinen einheitlichen Weg.
- **Ein zweiter Start holt kein Fenster nach vorn.** Auch hier läuft der Client nur
  einmal je Benutzer – der zweite Start zeigt aber nur einen Hinweis und endet, weil
  Wayland-Compositoren das Aktivieren fremder Fenster verweigern.

Die Beschränkung auf eine Instanz hat denselben Grund wie unter Windows: Eine zweite
Instanz würde den Raum-Ton der ersten über das gemeinsame Mikrofon wieder einfangen –
dagegen hilft weder die Wechselsprech-Automatik noch PipeWires Echounterdrückung, weil
beide nur den eigenen Wiedergabestrom kennen.

---

## 9. Updates und Deinstallation

Der Client prüft beim Start seinen Updatekanal – x64 und ARM64 werden getrennt geführt.
Ein Update wird erst nach Rückfrage heruntergeladen; geprüft werden ein kryptografisch
signiertes Manifest sowie Paketgröße und SHA-256-Prüfsumme. Erst danach folgt die
PolicyKit-Rückfrage nach Ihrem Passwort. Im Hintergrund wird nichts stillschweigend
installiert.

Zum Entfernen genügt:

```bash
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. Häufige Probleme

### `./install.sh: Permission denied`

Die Datei ist noch nicht als ausführbar markiert. Holen Sie den `chmod +x`-Schritt aus
Abschnitt 3 nach.

### Die Bildschirmfreigabe bleibt schwarz oder startet nicht

Es fehlt das passende Aufnahmewerkzeug: `grim` unter Wayland, `gnome-screenshot` unter
X11. Welche Sitzungsart läuft, verrät:

```bash
echo $XDG_SESSION_TYPE
```

### Die Fernsteuerung meines Rechners funktioniert nicht

Prüfen Sie `systemctl status fsrdp-input.service`. Fehlt der Dienst, war `ydotool` zum
Zeitpunkt der Installation noch nicht vorhanden – installieren Sie es nach und führen
Sie `./install.sh` erneut aus.

### Der Mauszeiger springt beim Fernsteuern

Auf labwc-Systemen braucht das virtuelle Eingabegerät ein flaches Beschleunigungsprofil.
Die Installation legt dafür eine passende `rc.xml` an – existierte bereits eine eigene,
bleibt sie unangetastet und Sie müssen den Abschnitt aus der beiliegenden Vorlage selbst
übernehmen.

### Man hört mich nicht

1. Ist das Mikrofon im Client stummgeschaltet?
2. Ist in den Einstellungen das richtige Aufnahmegerät gewählt?
3. Läuft PipeWire? `systemctl --user status pipewire`
4. Spielt der Client gerade Raum-Ton ab? Dann pausiert das Mikrofon absichtlich
   (Abschnitt 5).

### Der Client verbindet sich nicht

Prüfen Sie Serveradresse (Name, keine IP) und die beiden Portnummern. Ob der Name
überhaupt auflöst, zeigt `getent hosts server.ihrefirma.de`. Kommt keine Antwort, liegt
das Problem im DNS und nicht am Client.

---

## Weiterführend

- Dieselbe Anleitung für Windows: <https://www.fssoft.de/FsRdp/InstallingClientWindows.aspx>
- Eigenen Server unter Linux betreiben: <https://www.fssoft.de/FsRdp/InstallingServerLinux.aspx>
- Lizenzbedingungen: <https://www.fssoft.de/FsRdp/Lizenz.aspx>

**Etwas funktioniert nicht wie beschrieben?** Schreiben Sie mir – ich helfe gerne
weiter: <https://www.fssoft.de/Impressum.aspx> (Robert Fischbacher, Fischbacher
Software)
