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).
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.
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.
Selezionare il file .msi per scaricare il programma di installazione. (Potrebbe essere visualizzato un avviso che chiede di confermare l'attendibilità del download).
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.
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
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
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>
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.
Al termine dell'uso del dispositivo in WSL, è possibile disconnettere fisicamente il dispositivo USB o eseguire questo comando da PowerShell:
L'origine di questo contenuto è disponibile in GitHub, in cui è anche possibile creare ed esaminare i problemi e le richieste pull. Per ulteriori informazioni, vedere la guida per i collaboratori.
Feedback su Windows Subsystem for Linux
Windows Subsystem for Linux è un progetto di open source. Selezionare un collegamento per fornire feedback:
In questo modulo si apprenderà come usare il sottosistema Windows per Linux (WSL) con Visual Studio Code (VS Code). Verranno esaminati il processo di installazione e le nozioni di base sull'uso di WSL. Inoltre, viene installata e utilizzata l'estensione WSL di Visual Studio Code. Infine, viene illustrato come eseguire il debug e l'esecuzione di codice Python in VS Code all'interno dell'ambiente WSL.