Raspberry - Freerdp USB-Weiterleitung an Windows 10 / 11 Systeme von Scannern, Webcams und anderer Peripherie

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

 

Outlook VBA-Script um das Empfangsdatum in den Betreff einzufügen

Ein simples Outlook-VBA Script, welches insbesondere im Zusammenhang mit der täglichen Arbeit mit DMS-Systemen die Arbeit erleichtert. 

Auf Knopfdruck kann hiermit das Empfangsdatum der Mail an den Betreff vorangestellt werden. Dadurch werden die Mails sofern diese zum Beispiel in DMS-Systemen abgelegt werden direkt sortiert ohne, dass das Datum manuell davor geschrieben werden muss. 

Weitere Details, auch zur Einbindung in Outlook, gibt es auf Github unter: https://github.com/nesslinger-it/outlook-vba 

Sub AddDateToSubject()


Dim olFolder As MAPIFolder
Dim olSelection As Selection
Dim olItem As Object
Dim iCountMeetingItems As Integer

Dim olItemCurrentDate As Date

Set olFolder = Application.ActiveExplorer.CurrentFolder

If olFolder.DefaultItemType = olMailItem Then
    Set olSelection = Application.ActiveExplorer.Selection
    
    For Each olItem In olSelection
    
    With olItem
       If TypeOf olItem Is MailItem Then
         olItemCurrentDate = .ReceivedTime
        .Subject = Year(olItemCurrentDate) & "-" & Format(Month(olItemCurrentDate), "00") & "-" & Format(Day(olItemCurrentDate), "00") & " " & .Subject
        .Save
        Else
        'ElseIf TypeOf olItem Is MeetingItem Then --> if you want match MeetingItems
        iCountMeetingItems = iCountMeetingItems + 1
       End If
   
    End With

    Next
    
    If iCountMeetingItems > 0 Then

    MsgBox "Hinweis: Ihre Auswahl enthält: " & CStr(iCountMeetingItems) & " Obejekt(e). Diese können bei der automatischen Umbennenung des Betreffs nicht berücksichtigt werden.", vbInformation
       
    End If
    
End If
End Sub