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.

Configurar o projeto USB/IP em seu computador Windows habilitará cenários USB comuns do desenvolvedor, como piscar um Arduino ou acessar um leitor de cartão inteligente.

Pré-requisitos

  • Executando Windows 11 (Build 22000 ou superior). (Windows 10 suporte é possível, confira a observação abaixo).
  • Um computador com um processador x64/x86 é necessário. (No momento, não há suporte para Arm64 com usbipd-win).
  • Distribuição do Linux instalada e definida como WSL 2.
  • Executando o kernel linux 5.10.60.1 ou superior.

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 verificar 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

Windows 11 é recomendado para conectar dispositivos USB a uma distribuição do Linux em execução no WSL 2. No entanto, Windows 10 pode ser usado para conectar dispositivos USB criando seu próprio kernel do WSL 2 habilitado para USBIP seguindo as instruções no repositório de projeto USBIPD-WIN.

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.

  1. Acesse a página de lançamento mais recente do projeto usbipd-win.
  2. Selecione o arquivo .msi, que baixará o instalador. (Você pode receber um aviso solicitando que confirme se confia nesse download).
  3. Execute o arquivo do instalador de usbipd-win_x.msi baixado.

Observação

Como alternativa, você também pode instalar o projeto usbipd-win usando Gerenciador de Pacotes do Windows (winget). Se você já tiver instalado o winget, basta usar o comando: winget install --interactive --exact dorssel.usbipd-win para instalar o usbipd-win. Se você deixar de fora --interativo, o winget poderá reiniciar imediatamente seu computador se for necessário instalar os drivers.

Isso instalará:

  • Um serviço chamado usbipd (nome de exibição: Host de Dispositivo USBIP). Você pode verificar o status desse serviço usando o aplicativo Serviços de Windows.
  • Uma ferramenta usbipdde linha de comando. O local dessa ferramenta será 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.

Instalar as ferramentas USBIP e o banco de dados de hardware no Linux

Depois que o projeto USB/IP tiver concluído a instalação, você precisará instalar as ferramentas de espaço do usuário e um banco de dados de identificadores de hardware USB. Essas instruções são para o Ubuntu – outras distribuições podem exigir um pacote cliente usbip diferente.

No Ubuntu, execute este comando:

sudo apt install linux-tools-5.4.0-77-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20

Neste ponto, um serviço está em execução no Windows para compartilhar dispositivos USB e as ferramentas necessárias são instaladas no WSL para anexar a dispositivos compartilhados.

Anexar um dispositivo USB

Antes de anexar seu dispositivo USB, verifique se uma linha de comando WSL está aberta. Isso manterá a VM leve WSL 2 ativa.

  1. Liste todos os dispositivos USB conectados a Windows abrindo o PowerShell no modo de administrador e inserindo o comando:

    usbipd wsl list
    
  2. Selecione a ID do barramento do dispositivo que você deseja anexar ao WSL e execute este comando. Você será solicitado pela WSL para que uma senha execute um comando sudo. A distribuição do Linux a ser anexada deve ser sua distribuição padrão. (Consulte as combinações básicas do documento WSL para alterar sua distribuição padrão).

    usbipd wsl attach --busid <busid>
    
  3. Abra o Ubuntu (ou sua linha de comando WSL preferencial) e liste os dispositivos USB anexados usando o comando:

    lsusb
    

    Você deve 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 udev para permitir que usuários não raiz acessem o dispositivo.

  4. Depois de terminar de usar o dispositivo no WSL, você poderá desconectar fisicamente o dispositivo USB ou executar este comando do PowerShell no modo de administrador :

    usbipd wsl detach --busid <busid>
    

Para saber mais sobre como isso funciona, consulte o blog de linha de comando Windows e o repositório usbipd-win em GitHub.

Para obter uma demonstração de vídeo, consulte WSL 2: Conexão dispositivos USB (Tabs vs Spaces show).