É 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
usbipd-win projeto, agora você pode aproveitar o acesso de passagem USB no WSL. Isso significa que os usuários finais podem executar tarefas como atualizar dispositivos Android no subsistema Windows para Linux, que de outra forma não são suportados pelo subsistema Linux.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!