Conectar dispositivos USB
Este guia percorrerá as etapas necessárias para conectar um dispositivo USB a uma distribuição do Linux em execução no WSL 2 usando o projeto de software livre USB/IP, usbipd-win.
A configuração do projeto USB/IP em sua máquina Windows habilitará cenários comuns de desenvolvedor USB, como atualizar um Arduino ou acessar um leitor de cartão inteligente.
Pré-requisitos
- Executando Windows 11 (Build 22000 ou posterior). (O suporte ao Windows 10 é possível, consulte a observação abaixo).
- Um computador com um processador x64 é necessário. (atualmente, não há suporte para x86 e Arm64 com usbipd-win).
- O WSL está instalado e configurado com a versão mais recente.
- Distribuição do Linux instalada e definida como WSL 2.
Observação
Para verificar a versão e o número de build do seu Windows, selecione a tecla do logotipo do Windows + R, digite winver e selecione OK. Você pode atualizar para a versão mais recente do Windows selecionando Iniciar>Configurações>Windows Update>Verificar atualizações.
Para marcar a versão do kernel do Linux, abra a distribuição do Linux e insira o comando: uname -a
. Para atualizar manualmente para o kernel mais recente, abra o PowerShell e insira o comando: wsl --update
.
Importante
O WSL agora aceita o Windows 10 e o Windows 11 por meio da Microsoft Store, o que significa que os usuários do Windows 10 agora têm acesso às versões mais recentes do kernel sem precisar compilar a partir da fonte. Confira O WSL na Microsoft Store está disponível no Windows 10 e 11 para obter informações sobre como atualizar para a versão compatível com a Store do WSL. Se você não conseguir atualizar para a versão compatível com a Store do WSL e receber atualizações do kernel automaticamente, consulte o repositório do projeto USBIPD-WIN para obter instruções sobre como conectar dispositivos USB a uma distribuição Linux em execução no WSL 2 criando seu próprio kernel WSL 2 habilitado para USBIP.
Instalar o projeto USBIPD-WIN
O suporte para conexão de dispositivos USB não está disponível nativamente no WSL, portanto, você precisará instalar o projeto usbipd-win de software livre.
Requisitos do Kernel
Para usar o USBIPD com o Subsistema do Windows para Linux (WSL), você precisa ter uma versão do kernel Linux de 5.10.60.1 ou superior. Se a versão do kernel instalada for anterior à 5.10.60.1, ela poderá ser atualizada primeiro desligando todas as instâncias em execução do WSL com wsl --shutdown
e, em seguida, executando o comando: wsl --update
.
Instalar o USBIPD no WSL
- Acesse a página de versão mais recente do projeto usbipd-win.
- Selecione o arquivo .msi, que baixará o instalador. (Você pode receber um aviso solicitando que confirme se confia no instalador baixado).
- Execute o arquivo instalador usbipd-win_x.y.z.msi baixado.
Observação
Como alternativa, você também pode instalar o projeto usbipd-win por meio do Gerenciador de Pacotes do Windows (winget). Se você já instalou o winget, basta usar o comando: winget install --interactive --exact dorssel.usbipd-win
para instalar o usbipd-win. Se você deixar o --interactive de fora, o winget poderá reiniciar imediatamente o computador se for necessário instalar os drivers.
Isso instalará:
- Um serviço chamado
usbipd
(nome de exibição: Host do Dispositivo USBIP). Você pode verificar o status desse serviço usando o aplicativo Serviços no Windows. - Uma ferramenta de linha de comando
usbipd
. O local dessa ferramenta é adicionado à variável de ambiente PATH. - Uma regra de firewall chamada
usbipd
para permitir que todas as sub-redes locais se conectem ao serviço. Você pode modificar essa regra de firewall para ajustar o controle de acesso.
Anexar um dispositivo USB
Antes de anexar seu dispositivo USB, verifique se uma linha de comando WSL está aberta. Isso manterá a VM leve do WSL 2 ativa.
Observação
Este documento pressupõe que você tenha usbipd-win 4.0.0
ou superior instalado
Liste todos os dispositivos USB conectados ao Windows abrindo o PowerShell no modo de administrador e inserindo o comando a seguir. Depois que os dispositivos estiverem listados, selecione e copie a ID do barramento do dispositivo que você deseja anexar ao WSL.
usbipd list
Antes de anexar o dispositivo USB, o comando
usbipd bind
deve ser usado para compartilhar o dispositivo, permitindo que ele seja anexado ao WSL. Isso requer privilégios de administrador. Selecione a ID do barramento do dispositivo que você deseja usar no WSL e execute o comando a seguir. Depois de executar o comando, verifique se o dispositivo é compartilhado usando o comandousbipd list
novamente.usbipd bind --busid 4-4
Para anexar o dispositivo USB, execute o comando a seguir. (Você não precisa mais usar um prompt de administrador elevado.) Certifique-se de que um prompt de comando WSL esteja aberto para manter a VM leve do WSL 2 ativa. Observe que, enquanto o dispositivo USB estiver anexado ao WSL, ele não poderá ser usado pelo Windows. Depois de anexado ao WSL, o dispositivo USB pode ser usado por qualquer distribuição em execução como WSL 2. Verifique se o dispositivo está anexado usando
usbipd list
. No prompt do WSL, executelsusb
para verificar se o dispositivo USB está listado e se é possível interagir com ele usando ferramentas do Linux.usbipd attach --wsl --busid <busid>
Abra o Ubuntu (ou sua linha de comando WSL preferida) e liste os dispositivos USB anexados por meio do comando:
lsusb
Você deverá ver o dispositivo que acabou de anexar e poder interagir com ele usando ferramentas normais do Linux. Dependendo do aplicativo, talvez seja necessário configurar regras de udev para permitir que usuários não raiz acessem o dispositivo.
Depois de terminar de usar o dispositivo no WSL, você poderá desconectar fisicamente o dispositivo USB ou executar este comando do PowerShell:
usbipd detach --busid <busid>
Para saber mais sobre como isso funciona, consulte o Blog de Linha de Comando do Windows e o repositório usbipd-win no GitHub.
Para obter uma demonstração em vídeo, consulte WSL 2: Conectar dispositivos USB (Episódio Guias vs Espaços).
Windows Subsystem for Linux