Conexión de dispositivos USB

Esta guía le guiará por los pasos necesarios para conectar un dispositivo USB a una distribución de Linux que se ejecuta en WSL 2 mediante el proyecto de código abierto USB/IP, usbipd-win.

La configuración del proyecto USB/IP en la máquina Windows permitirá escenarios USB de desarrollador comunes, como parpadear un Arduino o acceder a un lector de tarjetas inteligentes.

Requisitos previos

  • Ejecución de Windows 11 (compilación 22000 o posterior). (Windows 10 soporte técnico es posible, consulte la nota siguiente).
  • Se requiere una máquina con un procesador x64/x86. (Arm64 no se admite actualmente con usbipd-win).
  • Distribución de Linux instalada y establecida en WSL 2.
  • Ejecución del kernel de Linux 5.10.60.1 o posterior.

Nota:

Para comprobar la versión y el número de compilación de Windows, seleccione la tecla del logotipo de Windows + R, escriba winver y seleccione Aceptar. Para actualizar a la versión de Windows más reciente, seleccione Inicio>Configuración>Windows Update>Buscar actualizaciones. Para comprobar la versión del kernel de Linux, abra la distribución de Linux y escriba el comando : uname -a. Para actualizar manualmente al kernel más reciente, abra PowerShell y escriba el comando : "wsl --update".

Importante

Windows 11 se recomienda para conectar dispositivos USB a una distribución de Linux que se ejecuta en WSL 2. Sin embargo, Windows 10 se pueden usar para conectar dispositivos USB mediante la creación de su propio kernel WSL 2 habilitado para USBIP siguiendo las instrucciones del repositorio del proyecto USBIPD-WIN.

Instalación del proyecto USBIPD-WIN

La compatibilidad con la conexión de dispositivos USB no está disponible de forma nativa en WSL, por lo que deberá instalar el proyecto usbipd-win de código abierto.

  1. Vaya a la página de la versión más reciente del proyecto usbipd-win.
  2. Seleccione el archivo .msi, que descargará el instalador. (Es posible que reciba una advertencia que le pida que confirme que confía en esta descarga).
  3. Ejecute el archivo de instalador de usbipd-win_x.msi descargado.

Nota

Como alternativa, también puede instalar el proyecto usbipd-win mediante Administrador de paquetes de Windows (winget). Si ya ha instalado winget, use el comando : winget install --interactive --exact dorssel.usbipd-win para instalar usbipd-win. Si deja fuera --interactive, winget puede reiniciar inmediatamente el equipo si es necesario para instalar los controladores.

Con esta acción se instalará:

  • Un servicio denominado usbipd (nombre para mostrar: host de dispositivo USBIP). Puede comprobar el estado de este servicio mediante la aplicación Servicios de Windows.
  • Una herramienta de línea de comandos usbipd. La ubicación de esta herramienta se agregará a la variable de entorno PATH.
  • Una regla de firewall llama a usbipd para permitir que todas las subredes locales se conecten al servicio. Puede modificar esta regla de firewall para ajustar el control de acceso.

Instalación de las herramientas de USBIP y la base de datos de hardware en Linux

Una vez que el proyecto USB/IP haya completado la instalación, deberá instalar las herramientas de espacio de usuario y una base de datos de identificadores de hardware USB. Estas instrucciones son para Ubuntu: otras distribuciones pueden requerir un paquete de cliente usbip diferente.

En Ubuntu, ejecute 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

En este momento, un servicio se ejecuta en Windows para compartir dispositivos USB y las herramientas necesarias se instalan en WSL para conectarse a dispositivos compartidos.

Conexión de un dispositivo USB

Antes de conectar el dispositivo USB, asegúrese de que hay abierta una línea de comandos de WSL. Esto mantendrá activa la máquina virtual ligera WSL 2.

  1. Para enumerar todos los dispositivos USB conectados a Windows, abra PowerShell en modo de administrador y escriba el comando :

    usbipd wsl list
    
  2. Seleccione el identificador de bus del dispositivo que desea asociar a WSL y ejecute este comando. WSL le pedirá una contraseña para ejecutar un comando sudo. La distribución de Linux que se va a asociar debe ser la distribución predeterminada. (Consulte la documentación de Los comands básicos de WSL para cambiar la distribución predeterminada).

    usbipd wsl attach --busid <busid>
    
  3. Abra Ubuntu (o su línea de comandos WSL preferida) y enumere los dispositivos USB conectados mediante el comando :

    lsusb
    

    Debería ver el dispositivo que acaba de conectar y poder interactuar con él mediante herramientas normales de Linux. En función de la aplicación, es posible que tenga que configurar reglas udev para permitir que los usuarios no raíz accedan al dispositivo.

  4. Una vez que haya terminado de usar el dispositivo en WSL, puede desconectar físicamente el dispositivo USB o ejecutar este comando desde PowerShell en modo de administrador :

    usbipd wsl detach --busid <busid>
    

Para obtener más información sobre cómo funciona, consulte el blog de la línea de comandos de Windows y el repositorio usbipd-win en GitHub.

Para ver una demostración en vídeo, consulte WSL 2: Conexión de dispositivos USB (pestañas frente a show de Spaces).