Conexión de dispositivos USB
En esta guía se describen 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.
Configurar el proyecto USB/IP en tu máquina Windows permitirá escenarios USB comunes para desarrolladores como flashear un Arduino o acceder a un lector de tarjetas inteligentes.
Requisitos previos
- Ejecutar Windows 11 (compilación 22000 o posterior). (La compatibilidad con Windows 10 es posible, consulte la nota siguiente).
- Se requiere una máquina con un procesador x64. (actualmente no se admiten x86 y Arm64 con usbipd-win).
- WSL está instalado y configurado con la versión más reciente.
- Distribución Linux instalada y configurada en WSL 2.
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
WSL ahora es compatible con Windows 10 y Windows 11 a través de Microsoft Store, lo que significa que los usuarios de Windows 10 ahora tienen acceso a las versiones más recientes del kernel sin necesidad de compilar desde el origen. Consulte WSL en Microsoft Store ya está disponible con carácter general en Windows 10 y 11 para obtener información sobre cómo actualizar a la versión de WSL compatible con Store. Si no puede actualizar a la versión de WSL compatible con Store y recibir automáticamente actualizaciones del kernel, consulte el repositorio del proyecto USBIPD-WIN para obtener instrucciones sobre cómo conectar dispositivos USB a una distribución de Linux que se ejecute en WSL 2 mediante la compilación de su propio kernel WSL 2 habilitado para USBIP.
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.
Requisitos del kernel
Para usar USBIPD con el subsistema de Windows para Linux (WSL), es necesario que la versión del kernel de Linux sea 5.10.60.1 o superior. Si la versión del kernel instalada es anterior a la 5.10.60.1, puede actualizarse cerrando primero las instancias en ejecución de WSL con wsl --shutdown
, ejecutando el comando: wsl --update
.
Instalación de USBIPD en WSL
- Vaya a la página de la versión más reciente del proyecto usbipd-win.
- Seleccione el archivo .msi, que descargará el instalador. (Es posible que reciba una advertencia que le pida que confirme que confía en el instalador descargado).
- Ejecute el archivo de instalación usbipd-win_x.msi descargado.
Nota:
También puede instalar el proyecto usbipd-win mediante el Administrador de paquetes de Windows (winget). Si ya ha instalado winget, sólo tiene que utilizar 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 Services en Windows. - Una herramienta de línea de comandos
usbipd
. La ubicación de esta herramienta se agrega 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.
Instalar 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.
Nota:
En este documento se supone que tiene usbipd-win 4.0.0
o una versión posterior instalada
Para enumerar todos los dispositivos USB conectados a Windows, abra PowerShell en modo de administrador y escriba el siguiente comando. Una vez que aparezcan los dispositivos, seleccione y copie el identificador de bus del dispositivo que desea asociar a WSL.
usbipd list
Antes de conectar el dispositivo USB, el comando
usbipd bind
debe usarse para compartir el dispositivo, lo que le permite estar conectado a WSL. Esto requiere privilegios de administrador. Seleccione el identificador de bus del dispositivo que desea usar en WSL y ejecute el siguiente comando. Después de ejecutar el comando, compruebe que el dispositivo se comparte con el comandousbipd list
de nuevo.usbipd bind --busid 4-4
Para conectar el dispositivo USB, ejecute el siguiente comando. (Ya no es necesario usar un símbolo del sistema de administrador con privilegios elevados). Asegúrese de que un símbolo del sistema de WSL esté abierto para mantener activa la máquina virtual ligera de WSL 2. Tenga en cuenta que, siempre que el dispositivo USB esté conectado a WSL, Windows no puede usarlo. Una vez conectado a WSL, cualquier distribución que se ejecute como WSL 2 puede usar el dispositivo USB. Compruebe que el dispositivo está conectado mediante
usbipd list
. Desde el símbolo del sistema WSL, ejecutelsusb
para comprobar que aparece el dispositivo USB y que se puede interactuar con el uso de herramientas de Linux.usbipd attach --wsl --busid <busid>
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 que no sean raíz accedan al dispositivo.
Una vez que haya terminado de usar el dispositivo en WSL, puede desconectar físicamente el dispositivo USB o ejecutar este comando desde PowerShell:
usbipd 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: Conectar dispositivos USB (pestañas frente a mostrar espacios).
Windows Subsystem for Linux