Enlaces rápidos
Hace un tiempo, Microsoft introdujoel Subsistema de Windows para Linux(WSL), que permitía ejecutar aplicaciones Linux directamente desde la instalación de Windows sin necesidad de configurar una máquina virtual. Al ser una capa de compatibilidad tan compleja, WSL tenía algunas limitaciones. La implementación inicial ni siquiera utilizaba un núcleo Linux completo, por lo que varias aplicaciones enfrentaban problemas de compatibilidad. La versión 2 introdujo muchas mejoras, pero todavía faltaba algo: compatibilidad con la conexión de dispositivos USB físicos.
Si eres un usuario activo del Subsistema de Windows para Linux y quieres acceder a dispositivos USB directamente desde la instancia de Linux que se ejecuta en WSL, te alegrará saber que ha habidoun progreso significativoen este frente. Gracias a las contribuciones de Microsoft al proyectousbipd-winde código abierto , ahora puedes disfrutar del acceso de paso a través de USB en WSL. Esto significa que los usuarios finales pueden realizar tareas como flashear dispositivos Android en el Subsistema de Windows para Linux, que de otra manera no son compatibles con el subsistema Linux.
¿Qué es usbipd-win?
El proyecto usbipd-win tiene como objetivo crear una solución para compartir dispositivos USB conectados localmente con otras máquinas, incluidos los invitados Hyper-V y WSL2. Sin embargo, el kernel oficial de Linux WSL2 no era compatible con elprotocolo USB/IP, por lo que los usuarios debían compilar el kernel ellos mismos.
Desde la versión 5.10.60.1 del kernel de WSL, los parámetros necesarios se configuran de manera predeterminada, por lo que no es necesario volver a compilarlos manualmente. Microsoft también ha contribuido con una interfaz de línea de comandos al proyecto para habilitar un dispositivo USB para compartir en Windows y conectarlo sin problemas desde WSL.
Conectar dispositivos USB en el subsistema de Windows para Linux
Antes de comenzar, asegúrate de que estés ejecutandoWindows 11y de haber instalado todas las actualizaciones de WSL. Como se mencionó anteriormente, necesitas una distribución Linux de WSL 2 para que esto funcione.
- Ejecute el siguiente comando desde WSL:
Si muestra una versión de kernel de 5.10.60.1 o posterior (como se muestra a continuación), entonces está listo.uname -a
- Si la versión del kernel instalada es anterior a 5.10.60.1, se puede actualizar utilizando los siguientes comandos:
wsl--shutdown
wsl--update
- Si la versión del kernel instalada es anterior a 5.10.60.1, se puede actualizar utilizando los siguientes comandos:
- Dirígete al repositorio de GitHub del proyecto usbipd-win. Luego,descarga e instala la última versión.
- La última versión de usbipd-win admite la instalación silenciosa de controladores gracias a los controladores certificados del Programa de compatibilidad de hardware de Windows. También es compatible conlas compilaciones del canal Devde Windows 11.
- Además de la página de lanzamiento en GitHub, puedes instalar y actualizar la aplicación usandola CLI del Administrador de paquetes de Windows(también conocido como winget).
wingetinstall --interactive --exact dorssel.usbipd-win
- Instale las herramientas de espacio de usuario para USB/IP y una base de datos de identificadores de hardware USB. Si está ejecutando Ubuntu en WSL, ejecute los siguientes comandos:
sudo aptinstalllinux-tools-virtualhwdata
sudoupdate-alternatives--install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20- También puedes optar por distintos metapaquetes (por ejemplo,
linux-tools-generic
), según la distribución instalada. Sin embargo, es posible que debas ajustar la variable de ruta en el siguiente paso, según el número de versión del metapaquete. - Para otras distribuciones, consulte la documentación de la herramienta de gestión de paquetes correspondiente.
- También puedes optar por distintos metapaquetes (por ejemplo,
- En caso de que el enlace simbólico creado con el
update-alternatives
comando del paso anterior no te haya funcionado, puedes modificar manualmente las opciones de sudo para permitir que el usuario root encuentre elusbip
comando. Para ello, edita el/etc/sudoers
archivo consudo visudo
y añade/usr/lib/linux-tools/<version-number>-generic
al principio desecure_path
. Debería verse así:Defaults secure_path="/usr/lib/linux-tools/5.4.0-77-generic:/usr/local/sbin:..."
- Abra una nueva instancia de Terminal como Administrador y escriba el siguiente comando para enumerar todos los dispositivos USB conectados a Windows.
usbipd wsllist
- Anote el valor BUSID del dispositivo USB que desea conectar a WSL. A continuación, ejecute el siguiente comando para iniciar el proceso de conexión. WSL le solicitará una contraseña para ejecutar un comando sudo.
Por ejemplo, aquí estamos conectando la interfaz Fastboot de un dispositivo Android a WSL desde la instancia host de Windows 11:usbipd wsl attach --busid<busid>
- Ahora abra una nueva instancia de WSL 2 y ejecute el
lsusb
comando para ver los dispositivos USB disponibles. Debería aparecer una lista de los dispositivos conectados. - ¡Eso es todo! Ahora puedes trabajar con tu dispositivo USB directamente desde WSL.
Cuando hayas terminado, puedes desconectar el dispositivo con el comando que se muestra a continuación. Una vez más, ejecútalo desde una instancia de Terminal que se ejecute como administrador.
usbipd wsl detach --busid<busid>
¿Existe alguna alternativa de GUI?
En caso de que la interfaz de línea de comandos no sea su fuerte, puede probarwsl-usb-gui. Es un contenedor de interfaz gráfica de usuario no oficial alrededor del binario usbipd-win, que simplifica enormemente el listado de dispositivos USB y la interoperabilidad entre el sistema operativo host y la instancia de WSL.
- Asegúrese de que esté instalada la última versión de usbipd-win y que el kernel WSL esté actualizado.
- Descargue el último instalador de wsl-usb-guidesde la página de lanzamientos de GitLab del proyecto.
- Ejecute el archivo MSI que ha descargado.
- Antes de instalar el programa, el instalador también comprueba los requisitos previos e intenta configurarlos si es necesario. Sin embargo, sería mejor mantener todo actualizado por ti mismo para evitar problemas de compatibilidad imprevistos.
- Una vez que la instalación se haya realizado correctamente, deberías poder encontrar un acceso directo recién creado llamadoWSL USBen el menú Inicio. Ejecuta la aplicación desde allí.
- Haga clic en el botónActualizarpara completar la lista de dispositivos USB conectados al sistema operativo host.
- Utilice los botonesConectaryDesconectarpara liberar todo el potencial del paso USB.
A partir de ahora, ya está listo para seguir adelante y jugar con todos los dispositivos USB que desee en WSL. Nuestra guía completa lo ayudará en el proceso, pero una vez que la conexión USB esté configurada como desee, simplemente pasará a un segundo plano. Para obtener más información, consultela documentación oficial de Microsoft sobre cómo conectar dispositivos USB en WSLyla sección Wiki de GitHub de usbipd-win.
¡Gracias al miembro senior de XDASome_Random_Usernamepor el dato!