É possível conectar dispositivos USB no Windows Subsystem for Linux no Windows 11 e trabalhar diretamente com eles.
Links Rápidos
- O que é usbipd-win?
- Conecte dispositivos USB no Subsistema do Windows para Linux
- Existe alguma alternativa GUI?
Microsoft introduziu Subsistema do Windows para Linux (WSL) há algum tempo, que trouxe suporte para executar aplicativos Linux diretamente da instalação do Windows sem a necessidade de configurar uma máquina virtual. Sendo uma camada de compatibilidade tão complexa, o WSL tinha algumas limitações. A implementação inicial nem sequer usava um kernel Linux completo, então vários aplicativos enfrentaram problemas de compatibilidade. A versão 2 trouxe muitas melhorias, mas ainda faltava algo: suporte para conectar dispositivos USB físicos.
Se você for um usuário ativo do Subsistema do Windows para Linux e quiser acessar dispositivos USB diretamente da instância do Linux em execução no WSL, ficará feliz em saber que houve progresso significativo nesta frente. Graças às contribuições da Microsoft para o código aberto
O que é usbipd-win?
O projeto usbipd-win trata da criação de uma solução para compartilhar dispositivos USB conectados localmente com outras máquinas, incluindo convidados Hyper-V e WSL2. No entanto, o kernel Linux oficial do WSL2 costumava não ter suporte para o Protocolo USB/IP, exigindo que os próprios usuários construam o kernel.
Desde a versão 5.10.60.1 do kernel do WSL, os parâmetros necessários são configurados imediatamente, portanto, nenhuma recompilação manual é necessária. A Microsoft também contribuiu com uma interface de linha de comando para o projeto para habilitar um dispositivo USB para compartilhamento no Windows e anexá-lo perfeitamente de dentro do WSL.
Conecte dispositivos USB no Subsistema do Windows para Linux
Antes de começar, verifique se você está executando Windows 11 e instalou todas as atualizações do WSL. Como mencionado anteriormente, você precisa de uma distribuição WSL 2 Linux para que isso funcione.
- Execute o seguinte comando no WSL:
Se ele mostrar uma versão do kernel de 5.10.60.1 ou posterior (como mostrado abaixo), então você está pronto para ir.uname -a
- Se a versão do kernel instalada for anterior a 5.10.60.1, ela poderá ser atualizada usando os seguintes comandos:
wsl --shutdown
wsl --update
- Se a versão do kernel instalada for anterior a 5.10.60.1, ela poderá ser atualizada usando os seguintes comandos:
- Acesse o repositório GitHub do projeto usbipd-win. Então baixe e instale a versão mais recente.
- A versão mais recente do usbipd-win oferece suporte à instalação silenciosa do driver, graças aos drivers certificados do Windows Hardware Compatibility Program. Ele também suporta Construções de canal de desenvolvimento do Windows 11.
- Além da página de lançamento no GitHub, você pode instalar e atualizar o aplicativo usando CLI do Gerenciador de Pacotes do Windows (também conhecido como winget).
winget install--interactive --exact dorssel.usbipd-win
- Instale as ferramentas de espaço do usuário para USB/IP e um banco de dados de identificadores de hardware USB. Se você estiver executando o Ubuntu no WSL, execute os seguintes comandos:
sudo apt install linux-tools-virtual hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20- Você pode optar por diferentes metapacotes (por exemplo,
linux-tools-generic
) também, dependendo da distro instalada. No entanto, pode ser necessário ajustar a variável de caminho na próxima etapa, de acordo com o número da versão do metapacote. - Para outras distribuições, consulte a documentação da ferramenta de gerenciamento de pacotes relevante.
- Você pode optar por diferentes metapacotes (por exemplo,
- Caso o link simbólico criado usando o
update-alternatives
comando na etapa anterior não funcionou para você, você pode modificar manualmente as opções do sudo para permitir que o usuário root encontre ousbip
comando. Para isso, edite o/etc/sudoers
arquivo usandosudo visudo
e adicione/usr/lib/linux-tools/
para o início de-generic secure_path
. Deve ser parecido com o seguinte:Defaults secure_path="/usr/lib/linux-tools/5.4.0-77-generic:/usr/local/sbin:..."
- Abra uma nova instância do Terminal como administrador e digite o seguinte comando para listar todos os dispositivos USB conectados ao Windows.
usbipd wsl list
- Anote o valor BUSID do dispositivo USB que deseja anexar ao WSL. Em seguida, execute o seguinte comando para iniciar o processo de anexo. Você será solicitado pelo WSL a fornecer uma senha para executar um comando sudo.
Por exemplo, aqui estamos anexando a interface Fastboot de um dispositivo Android ao WSL da instância host do Windows 11:usbipd wsl attach --busid <busid>
- Agora abra uma nova instância do WSL 2 e execute o
lsusb
comando para ver os dispositivos USB disponíveis. Ele deve listar o(s) dispositivo(s) conectado(s). - É isso! Agora você pode trabalhar com seu dispositivo USB diretamente do WSL.
Quando terminar, você pode desconectar o dispositivo usando o comando mostrado abaixo. Mais uma vez, execute-o a partir de uma instância do Terminal em execução como administrador.
usbipd wsl detach --busid <busid>
Existe alguma alternativa GUI?
Caso a interface de linha de comando não seja o seu forte, você pode dar wsl-usb-gui uma tentativa. É um wrapper de GUI não oficial em torno do binário usbipd-win, que simplifica bastante a listagem de dispositivos USB e a interoperabilidade entre o sistema operacional host e a instância WSL.
- Verifique se a versão mais recente do usbipd-win está instalada e se o kernel do WSL está atualizado.
- Baixe o instalador mais recente do wsl-usb-gui da página de lançamentos do GitLab do projeto.
- Execute o arquivo MSI que você baixou.
- Antes de instalar o programa, o instalador também verifica os pré-requisitos e tenta configurá-los, se necessário. No entanto, seria melhor manter tudo atualizado por conta própria para evitar problemas de compatibilidade imprevistos.
- Após uma instalação bem-sucedida, você poderá encontrar um atalho recém-criado chamado WSL USB no menu Iniciar. Execute o aplicativo a partir daí.
- Clique no Atualizar botão para preencher a lista de dispositivos USB conectados ao sistema operacional host.
- Use o Anexar e desanexar botões para liberar todo o potencial da passagem USB.
De agora em diante, você está pronto para mexer em todos os seus dispositivos USB que deseja na WSL. Nosso guia completo irá ajudá-lo ao longo do caminho, mas uma vez que a passagem USB é configurada como você gosta, ela simplesmente desaparece em segundo plano. Para saber mais, dê uma olhada em Documentação oficial da Microsoft sobre como conectar dispositivos USB no WSL e seção GitHub Wiki do usbipd-win.
Agradecimentos ao membro sênior do XDA Some_Random_Username pela dica!