Freigeben über


Verbinden von USB-Geräten

In diesem Handbuch werden die Schritte beschrieben, die erforderlich sind, um ein USB-Gerät mit einer Linux-Verteilung zu verbinden, die auf WSL 2 ausgeführt wird, mithilfe des Open-Source-Projekts USB/IP , usbipd-win.

Das Einrichten des USB-/IP-Projekts auf Ihrem Windows-Computer ermöglicht gängige ENTWICKLER-USB-Szenarien wie Flashing an Arduino oder Zugriff auf einen Smartcardleser.

Voraussetzungen

Hinweis

Um Ihre Windows-Version und Buildnummer zu überprüfen, wählen Sie Windows-Logo-Taste +R aus, geben Sie winver ein, und wählen Sie "OK" aus. Sie können auf die neueste Windows-Version aktualisieren, indem Sie Start>Einstellungen>Windows Update>Nach Updates suchen auswählen. Um Ihre Linux-Kernelversion zu überprüfen, öffnen Sie Ihre Linux-Verteilung, und geben Sie den Befehl ein: uname -a. Um manuell auf den neuesten Kernel zu aktualisieren, öffnen Sie PowerShell, und geben Sie den Befehl ein: wsl --update.

Von Bedeutung

WSL unterstützt jetzt sowohl Windows 10 als auch Windows 11 über den Microsoft Store, was bedeutet, dass Windows 10-Benutzer jetzt Zugriff auf die neuesten Kernelversionen haben, ohne aus der Quelle kompilieren zu müssen. Informationen zum Aktualisieren auf die vom Store unterstützte Version von WSL finden Sie im Microsoft Store unter Windows 10 und 11. Wenn Sie nicht auf die vom Store unterstützte Version von WSL aktualisieren und automatisch Kernelupdates erhalten können, lesen Sie das USBIPD-WIN Projekt-Repository , um Anweisungen zum Verbinden von USB-Geräten mit einer Linux-Verteilung zu erhalten, die auf WSL 2 ausgeführt wird, indem Sie Ihren eigenen USBIP-aktivierten WSL 2-Kernel erstellen.

Installieren des USBIPD-WIN Projekts

Die Unterstützung für das Verbinden von USB-Geräten ist in WSL nicht nativ verfügbar, daher müssen Sie das Open-Source-Usbipd-Win-Projekt installieren.

Kernelanforderungen

Um USBIPD mit Windows-Subsystem für Linux (WSL) zu verwenden, müssen Sie über eine Linux-Kernelversion von 5.10.60.1 oder höher verfügen. Wenn die installierte Kernelversion älter als 5.10.60.1 ist, kann sie aktualisiert werden, indem sie zuerst alle ausgeführten Instanzen von WSL herunterfahren wsl --shutdownund dann den Befehl ausführen: wsl --update.

Installieren von USBIPD auf WSL

  1. Wechseln Sie zur neuesten Veröffentlichungsseite für das usbipd-win-Projekt.
  2. Wählen Sie die .msi Datei aus, die das Installationsprogramm herunter lädt. (Möglicherweise erhalten Sie eine Warnung, die Sie auffordern, zu bestätigen, dass Sie diesem Download vertrauen).
  3. Führen Sie die heruntergeladene usbipd-win_x.msi Installationsdatei aus.

Hinweis

Alternativ können Sie das usbipd-win-Projekt auch mit dem Windows-Paket-Manager (Winget) installieren. Wenn Sie winget bereits installiert haben, verwenden Sie einfach den Befehl: winget install --interactive --exact dorssel.usbipd-win zum Installieren von usbipd-win. Wenn Sie --interaktiv auslassen, kann Winget Ihren Computer sofort neu starten, wenn dies erforderlich ist, um die Treiber zu installieren.

Dadurch wird Folgendes installiert:

  • Ein Dienst mit dem Namen usbipd (Anzeigename: USBIP-Gerätehost). Sie können den Status dieses Diensts mithilfe der Dienst-App von Windows überprüfen.
  • Das Befehlszeilentool usbipd. Der Speicherort dieses Tools wird der PATH-Umgebungsvariable hinzugefügt.
  • Eine Firewallregel namens usbipd, damit alle lokalen Subnetze eine Verbindung mit dem Dienst herstellen können. Sie können diese Firewallregel ändern, um die Zugriffssteuerung zu optimieren.

Anfügen eines USB-Geräts

Stellen Sie vor dem Anfügen des USB-Geräts sicher, dass eine WSL-Befehlszeile geöffnet ist. Dadurch bleibt der einfache virtuelle Computer WSL 2 aktiv.

Hinweis

In diesem Dokument wird davon ausgegangen, dass Sie usbipd-win 4.0.0 oder höher installiert haben.

  1. Auflisten aller USB-Geräte, die mit Windows verbunden sind, indem Sie PowerShell im Administratormodus öffnen und den folgenden Befehl eingeben. Nachdem die Geräte aufgelistet sind, wählen Sie die Bus-ID des Geräts aus, das Sie an WSL anfügen möchten, und kopieren Sie sie.

    usbipd list
    
  2. Vor dem Anfügen des USB-Geräts muss der Befehl usbipd bind zum Freigeben des Geräts verwendet werden, sodass es an WSL angeschlossen werden kann. Dies erfordert Administratorrechte. Wählen Sie die Bus-ID des Geräts aus, das Sie in WSL verwenden möchten, und führen Sie den folgenden Befehl aus. Stellen Sie nach dem Ausführen des Befehls sicher, dass das Gerät erneut mit dem Befehl usbipd list geteilt wird.

    usbipd bind --busid 4-4
    
  3. Führen Sie den folgenden Befehl aus, um das USB-Gerät anzufügen. (Sie müssen keine Eingabeaufforderung mit erhöhten Rechten mehr verwenden.) Stellen Sie sicher, dass eine WSL-Eingabeaufforderung geöffnet ist, um die WSL 2-einfache VM aktiv zu halten. Beachten Sie, dass das USB-Gerät nicht von Windows verwendet werden kann, solange das USB-Gerät an WSL angeschlossen ist. Sobald das USB-Gerät mit WSL verbunden ist, kann es von jeder Distribution genutzt werden, die im WSL 2-Modus läuft. Vergewissern Sie sich, dass das Gerät über usbipd list angeschlossen ist. Führen Sie von der WSL-Eingabeaufforderung aus lsusb aus, um zu überprüfen, ob das USB-Gerät aufgelistet ist und mit Linux-Tools interagiert werden kann.

    usbipd attach --wsl --busid <busid>
    
  4. Öffnen Sie Ubuntu (oder Ihre bevorzugte WSL-Befehlszeile), und listen Sie die angeschlossenen USB-Geräte mit dem Befehl auf:

    lsusb
    

    Sie sollten das soeben angeschlossene Gerät sehen und mit normalen Linux-Tools interagieren können. Je nach Anwendung müssen Sie möglicherweise udev-Regeln konfigurieren, damit Nicht-Stammbenutzer auf das Gerät zugreifen können.

  5. Nachdem Sie das Gerät in WSL verwendet haben, können Sie das USB-Gerät physisch trennen oder diesen Befehl in PowerShell ausführen.

    usbipd detach --busid <busid>
    

Weitere Informationen zur Funktionsweise finden Sie im Windows-Befehlszeilenblog und im usbipd-win-Repository auf GitHub.

Eine Videopräsentation sehen Sie unter WSL 2: USB-Geräte verbinden (Registerkarten vs. Leerzeichen zeigen).