Condividi tramite


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 sviluppatori, ad esempio il flashing di un Arduino o l'accesso a un lettore di smart card.

Prerequisiti

Annotazioni

Per controllare la versione di Windows e il numero di build, selezionare Tasto logo Windows + R, digitare winver, selezionare OK. È possibile eseguire l'aggiornamento alla versione più recente di Windows selezionando Start>Impostazioni>Aggiornamento Windows>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 progettoUSBIPD-WIN per istruzioni sulla connessione di dispositivi USB a una distribuzione Linux in esecuzione in WSL 2 creando il proprio kernel WSL abilitato per USBIP 2.

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.

Requisiti del kernel

Per usare USBIPD con sottosistema Windows per Linux (WSL), è necessario avere una versione del kernel Linux 5.10.60.1 o successiva. Se la versione del kernel installata è precedente alla 5.10.60.1, può essere aggiornata arrestando prima tutte le istanze in esecuzione di WSL con wsl --shutdown, quindi eseguendo il comando : wsl --update.

Installare USBIPD in WSL

  1. Passare alla pagina di versione più recente per il progetto usbipd-win.
  2. Selezionare il file .msi, che scaricherà il programma di installazione. È possibile che venga visualizzato un avviso che chiede di confermare che si considera attendibile il download.
  3. Eseguire il file del programma di installazione usbipd-win_x.msi scaricato.

Annotazioni

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

Verrà installato:

  • Un servizio denominato usbipd (nome visualizzato: Host dispositivo USBIP). È 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 sarà attiva.

Annotazioni

Questo documento presuppone che sia installato usbipd-win 5.0.0 o una 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 della riga di comando di Windows e il repository usbipd-win su GitHub.

Per una dimostrazione video, vedere WSL 2: Collegare dispositivi USB (confronto tabulazioni vs spazi).