Nachfolgendes Beispiel getestet mit:
- Raspberry 5 mit Rasperry Pi OS
- Windows 10 / 11 Geräten als RDP-Host
- xfreerdp
Die RDP USB Weiterleitung z. B. an eine Windows VM ist je nach Gerät, dass vom Raspberry durchgereicht werden soll, alles andere als trivial. Lassen sich Dateifreigaben z. B. von angeschlossenen USB-Sticks relativ leicht mit Remmina per GUI konfigurieren, scheitert das Ganze mit Geräten wie Scannern oder Webcams.
Auf der Windows-Maschine muss zunächst die Gruppenrichtlinie angepasst werden, damit USB-Geräte durchgereicht werden können.
Hierzu muss man die Richtlinie "Umleitung bei unterstützten Plug & Play-Geräten nicht zulassen" auf "Deaktiviert" setzen.
Zu der Richtlinie gelangt man wie folgt:
Computerkonfiguration
→ Administrative Vorlagen
→ Windows-Komponenten
→ Remotedesktopdienste
→ Remotedesktopsitzungs-Host
→ Geräte und Ressourcenumleitung
→ „Umleitung bei unterstützten Plug & Play-Geräten nicht zulassen“
→ "Deaktiviert"
Der Aufbau der RDP-Verbindung muss mit erweiterten Rechten erfolgen. Bei meinen Tests hatte ich sonst Probleme, dass auf das betreffende USB-Gerät nicht zugegriffen werden konnte. Im Fehlerprotokoll war dabei dann die folgende Fehlermeldung ersichtlich:
libusb_open: error LIBUSB_ERROR_ACCESS[-3]
Um Freerdp mitzuteilen, welches USB-Gerät weitergeleitet werden soll, muss zunächst die ID und Adresse ermittelt werden, dies kann z. B. mit dem Befehl "lsusb" erfolgen.
Hierbei erhält man eine Ausgabe wie z. B. die folgende:
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 046d:c326 Logitech, Inc. Washable Keyboard K310
...
Mittels /usb Parameter gibt man im Anschluss das Gerät an, welches weitergeleitet werden soll.
Ein vollständiger Aufruf könnte wie folgt aussehen:
- /d:nesslingerit.de --> Angabe der Domäne
- /u:testuser --> Angabe des Nuterzname mit dem sich authentifiziert werden soll
- /v:client1234 --> Hostname / IP des Clients
- /multimon --> Aktivierung der Multi-Monitor-Unterstützung mit den Standardeinstellungen
- /sound --> Am Client (z. B. Rasperry) soll der Sound mit ausgegeben werden
- /mic --> Ein angeschlossenes Mikrofon soll an den Host mit übertragen werden
- /usb:id,dev:04f9:037f,addr:001:002 --> das USB-Gerät an Bus 001 Device 002 mit der ID 04f9:037f soll an den Host durchgereicht werden
sudo xfreerdp /d:nesslingerit.de /u:testuser /v:client1234 /multimon /sound /mic /usb:id,dev:04f9:037f,addr:001:002
Es können auch mehrere USB-Geräte angegeben werden, diese werden dann mit "#" getrennt z. B. wie folgt
/usb:dev:04f9:037f#413c:c03e,addr:001:002#003:005