HackRF One - USB Geräte in WSL2 nutzen

Ein Linux System das unter WSL2 läuft kann normalerweise nicht auf USB Geräte zugreifen, die am Windows Rechner angeschlossen sind.

Glücklicherweise gibt es mit USBIPD-WIN ein Open-Source Projekt das sich um diese Problem kümmert. Microsoft hat hier eine Anleitung veröffentlicht, die Beschreibt wie ein USB Gerät an WSL durchgereicht werden kann.

Installation von USBIPD-WIN

  • Den neusten Release von https://github.com/dorssel/usbipd-win/releases herunterladen und installieren.
  • HackRF One an den Windows Rechner anschliessen.
  • Kali Linux muss bereits gestartet sein.
  • Eine PowerShell Konsole als Administrator öffnen und folgendes eingeben:
    usbipd list
    
    Die Ausgabe könnte folgendermassen aussehen:
    Connected:
    BUSID  VID:PID    DEVICE                                                        STATE
    1-5    046d:c52b  Logitech USB Input Device, USB-Eingabegerät                   Not shared
    1-9    1d50:6089  HackRF One                                                    Not shared
    1-10   1050:0403  USB-Eingabegerät                                              Not shared
    1-13   0b05:18a3  USB-Eingabegerät                                              Not shared
    
    Aus der Ausgabe ist ersichtlich, dass mein HackRF One die BUSID 1-9 hat.
    Damit ein USB Gerät von WSL2 verwendet werden kann, muss es zuerst in den "Shared" Modus versetzt werden. Dies erfolgt mit folgendem Befehl:
    usbipd bind --busid 1-9
    
    Hier muss jetzt natürlich die im vorherigen Schritt ermittelte BUSID angegeben werden (bei mir 1-9, bei dir höchst wahrscheinlich ein anderer Wert).
    Danach kann mit usbipd list nochamls überprüft werden, ob die Zeile mit HackRF One in der Spalte STATE jetzt "Shared" anzeigt.

    Jetzt muss das USB Gerät noch mit WSL2 verbunden werden:

    usbipd attach --wsl --busid 1-9

    Tipp: Bei mir gab es mit der Version 4.1.0 von USBIPD-WIN beim letzten Befehl einen Fehler (usbipd: error: Mounting 'C:\Program Files\usbipd-win\WSL' within WSL failed). Ich musste dann USBIPD-WIN nochmals deinstallieren und stattdessen den Dev-Build 4.1.1 von https://github.com/dorssel/usbipd-win/actions/runs/7813976713 installieren (GitHub Account notwendig).

  • Will man später das Gerät wieder trennen, geschieht dies mit folgendem Befehl:
    usbipd detach --busid 1-9

 

USB Gerät innerhalb Kali Linux anzeigen

Innerhalb Kali Linux müssen jetzt zuerst die USB Utilities installiert werden:

sudo apt install usbutils

Danach können die angeschlossenen USB Geräte aufgelistet werden:

lsusb

Wenn alles geklappt hat, könnte die Ausgabe etwa folgendermassen aussehen (man beachte die 2. Zeile):

└─$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 1d50:6089 OpenMoko, Inc. Great Scott Gadgets HackRF One SDR
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub