Connettere dispositivi USB

Questa guida illustra i passaggi necessari per connettere un dispositivo USB a una distribuzione Linux in esecuzione in WSL 2 usando il progetto open source USB/IP, usbipd-win.

La configurazione del progetto USB/IP nel computer Windows consentirà scenari USB comuni per gli sviluppatori, ad esempio il flashing di un Arduino o l'accesso a un lettore di smart card.

Prerequisiti

  • Esecuzione di Windows 11 (Build 22000 o versione successiva). (Il supporto di Windows 10 è possibile, vedere la nota seguente).
  • È necessario un computer con un processore x64. (x86 e Arm64 non sono attualmente supportati con usbipd-win).
  • WSL è installato e configurato con la versione più recente.
  • Distribuzione Linux installata e impostata su WSL 2.

Nota

Per controllare la versione di Windows e il numero della build, selezionare il tasto WINDOWS + R, digitare winver e seleziona OK. È possibile eseguire l'aggiornamento alla versione più recente di Windows selezionando Start>Impostazioni>Windows Update>Verifica disponibilità aggiornamenti. Per controllare la versione del kernel Linux, aprire la distribuzione di Linux e immettere il comando: uname -a. Per eseguire manualmente l'aggiornamento al kernel più recente, aprire PowerShell e immettere il comando: "wsl --update".

Importante

WSL ora supporta sia Windows 10 che Windows 11 tramite Microsoft Store, ovvero che gli utenti di Windows 10 ora hanno accesso alle versioni più recenti del kernel senza dover compilare dall'origine. Vedi WSL in Microsoft Store è ora disponibile a livello generale in Windows 10 e 11 per informazioni su come eseguire l'aggiornamento alla versione supportata dallo Store di WSL. Se non è possibile eseguire l'aggiornamento alla versione supportata dallo Store di WSL e ricevere automaticamente gli aggiornamenti del kernel, vedere il repository del progetto USBIPD-WIN per istruzioni sulla connessione di dispositivi USB a una distribuzione Linux in esecuzione in WSL 2 creando il proprio kernel WSL 2 abilitato per USBIP.

Installare il progetto USBIPD-WIN

Il supporto per la connessione di dispositivi USB non è disponibile in modo nativo in WSL, quindi è necessario installare il progetto usbipd-win open source.

  1. Passare alla pagina della versione più recente per il progetto usbipd-win.
  2. Selezionare il file .msi per scaricare il programma di installazione. (Potrebbe essere visualizzato un avviso che chiede di confermare l'attendibilità del download).
  3. Eseguire il file di installazione usbipd-win_x.msi scaricato.

Nota

In alternativa, è anche possibile installare il progetto usbipd-win usando Gestione pacchetti di Windows (winget). Se winget è già stato installato, usare il comando: winget install --interactive --exact dorssel.usbipd-win per installare usbipd-win. Se si omette --interactive, winget può riavviare immediatamente il computer quando ciò è necessario per installare i driver.

Questa operazione installerà:

  • Un servizio denominato usbipd (nome visualizzato: USBIP Device Host). È possibile controllare lo stato di questo servizio usando l'app Servizi da Windows.
  • Uno strumento da riga di comando usbipd. Il percorso di questo strumento verrà aggiunto alla variabile di ambiente PATH.
  • Una regola del firewall chiamata usbipd per consentire a tutte le subnet locali di connettersi al servizio. È possibile modificare questa regola del firewall per ottimizzare il controllo di accesso.

Collegare un dispositivo USB

Prima di collegare il dispositivo USB, assicurarsi che sia aperta una riga di comando WSL. In questo modo la macchina virtuale leggera WSL 2 rimarrà attiva.

Nota

Questo documento presuppone che sia usbipd-win 4.0.0 installato o versione successiva

  1. Elencare tutti i dispositivi USB connessi a Windows aprendo PowerShell in modalità amministratore e immettendo il comando seguente. Dopo aver elencato i dispositivi, selezionare e copiare l'ID bus del dispositivo da collegare a WSL.

    usbipd list
    
  2. Prima di collegare il dispositivo USB, il comando usbipd bind deve essere usato per condividere il dispositivo, consentendo di collegarlo a WSL. Questo richiede privilegi di amministratore. Selezionare l'ID bus del dispositivo che si vuole usare in WSL ed eseguire il comando seguente. Dopo aver eseguito il comando, verificare che il dispositivo sia condiviso usando di nuovo il comando usbipd list .

    usbipd bind --busid 4-4
    
  3. Per collegare il dispositivo USB, eseguire il comando seguente. Non è più necessario usare un prompt degli amministratori con privilegi elevati. Assicurarsi che un prompt dei comandi WSL sia aperto per mantenere attiva la macchina virtuale leggera WSL 2. Si noti che, purché il dispositivo USB sia collegato a WSL, non può essere usato da Windows. Una volta collegato a WSL, il dispositivo USB può essere usato da qualsiasi distribuzione in esecuzione come WSL 2. Verificare che il dispositivo sia collegato tramite usbipd list. Dal prompt WSL eseguire lsusb per verificare che il dispositivo USB sia elencato e che sia possibile interagire con gli strumenti Linux.

    usbipd attach --wsl --busid <busid>
    
  4. Aprire Ubuntu (o la riga di comando WSL preferita) ed elencare i dispositivi USB collegati usando il comando:

    lsusb
    

    Verrà visualizzato il dispositivo appena collegato e sarà possibile interagire con esso usando i normali strumenti Linux. A seconda dell'applicazione, potrebbe essere necessario configurare le regole udev per consentire agli utenti non radice di accedere al dispositivo.

  5. Al termine dell'uso del dispositivo in WSL, è possibile disconnettere fisicamente il dispositivo USB o eseguire questo comando da PowerShell:

    usbipd detach --busid <busid>
    

Per altre informazioni sul funzionamento, vedere il blog sulla riga di comando di Windows e il repository usbipd-win in GitHub.

Per una dimostrazione video, vedere WSL 2: connettere i dispositivi USB.