Windows 11: USB-Geräte im Windows Subsystem für Linux
Microsoft hat vor einiger Zeit das Windows Subsystem für Linux (WSL) eingeführt, mit dem Sie Linux-Anwendungen direkt von Ihrer Windows-Installation aus ausführen können. Da es sich um eine komplexe Kompatibilitätsschicht handelt, hatte WSL einige Einschränkungen. Die ursprüngliche Implementierung verwendete nicht einmal einen vollwertigen Linux-Kernel, so dass einige Anwendungen mit Kompatibilitätsproblemen zu kämpfen hatten. In Version 2 wurden viele Verbesserungen vorgenommen, aber etwas fehlte noch: Unterstützung für den Anschluss physischer USB-Geräte.
Wenn Sie ein aktiver Benutzer von Windows Subsystem für Linux sind und direkt von der Linux-Instanz, die unter WSL läuft, auf USB-Geräte zugreifen möchten, dann wird es Sie freuen zu hören, dass es an dieser Front einen bedeutenden Fortschritt gegeben hat. Dank Microsofts Beiträgen zum Open-Source-Projekt usbipd-win können Sie jetzt den USB-Passthrough-Zugriff in WSL nutzen. Das bedeutet, dass Endbenutzer Aufgaben wie das Flashen von Android-Geräten unter Windows Subsystem für Linux durchführen können, die sonst vom Linux-Subsystem nicht unterstützt werden.
Was ist usbipd-win?
Beim usbipd-win-Projekt geht es darum, eine Lösung für die gemeinsame Nutzung von lokal angeschlossenen USB-Geräten auf anderen Rechnern, einschließlich Hyper-V-Gästen und WSL2, zu schaffen. Dem offiziellen WSL2-Linux-Kernel fehlte jedoch die Unterstützung für das USB/IP-Protokoll, so dass die Benutzer den Kernel selbst erstellen mussten.
Seit der WSL-Kernelversion 5.10.60.1 sind die erforderlichen Parameter bereits konfiguriert, so dass keine manuelle Neukompilierung mehr erforderlich ist. Microsoft hat außerdem eine Befehlszeilenschnittstelle zu dem Projekt beigesteuert, mit der ein USB-Gerät für die gemeinsame Nutzung unter Windows aktiviert und nahtlos aus WSL heraus angeschlossen werden kann.
Anschließen von USB-Geräten unter Windows Subsystem für Linux
Bevor Sie beginnen, sollten Sie sicherstellen, dass Sie Windows 11 verwenden und alle WSL-Updates installiert haben. Wie bereits erwähnt, benötigen Sie eine WSL 2 Linux-Distribution, damit dies funktioniert.
Führen Sie den folgenden Befehl in der WSL aus:
uname -a
Es sollte eine Kernel-Version von 5.10.60.1 oder höher angezeigt werden.
Besuchen Sie das GitHub-Repositorium des usbipd-win-Projekts. Laden Sie dann die neueste Version herunter und installieren Sie diese. Die neueste Version von usbipd-win unterstützt die stille Treiberinstallation dank der vom Windows Hardware Compatibility Program zertifizierten Treiber. Sie unterstützt auch Dev-Channel-Builds von Windows 11. Zusätzlich zur Veröffentlichungsseite auf GitHub können Sie die Anwendung auch mit dem Windows Package Manager CLI (AKA winget) installieren und aktualisieren.
winget install --interactive --exact dorssel.usbipd-win
Installieren Sie die User-Space-Tools für USB/IP und eine Datenbank mit USB-Hardware-Identifikatoren. Wenn Sie Ubuntu auf WSL betreiben, führen Sie den folgenden Befehl aus:
sudo apt install linux-tools-5.4.0-77-generic hwdata
Für andere Distributionen konsultieren Sie bitte die Dokumentation des jeweiligen Paketverwaltungsprogramms.
Nun müssen wir die sudo-Optionen ändern, damit der Root-Benutzer den usbip-Befehl finden kann. Bearbeiten Sie dazu die Datei /etc/sudoers mit sudo visudo und fügen Sie /usr/lib/linux-tools/5.4.0-77-generic an den Anfang von secure_path. Sie sollte wie folgt aussehen:
Defaults secure_path="/usr/lib/linux-tools/5.4.0-77-generic:/usr/local/sbin:..."
Öffnen Sie eine neue Terminal-Instanz als Administrator und geben Sie den folgenden Befehl ein, um alle an Windows angeschlossenen USB-Geräte aufzulisten.
usbipd wsl auflisten
Notieren Sie sich den BUSID-Wert des USB-Geräts, das Sie an WSL anschließen möchten. Führen Sie anschließend den folgenden Befehl aus, um den Anhängevorgang zu starten. Sie werden von WSL aufgefordert, ein Kennwort einzugeben, um einen sudo-Befehl auszuführen.
usbipd wsl attach --busid
Öffnen Sie nun eine neue WSL 2-Instanz und führen Sie den Befehl lsusb aus, um die verfügbaren USB-Geräte anzuzeigen. Es sollten die angeschlossenen Geräte aufgelistet werden.
Das war's! Sie können nun direkt von WSL aus mit Ihrem USB-Gerät arbeiten. Wenn Sie fertig sind, können Sie das Gerät mit dem unten gezeigten Befehl trennen. Führen Sie den Befehl wieder von einem Terminal aus, das als Administrator ausgeführt wird.
usbipd wsl detach --busid
Weitere Informationen finden Sie in der offiziellen Ankündigung und im GitHub-Wiki-Bereich von usbipd-win.