ubuntu如何识别windows的USB设备(WSL2)

发布于:2025-09-01 ⋅ 阅读:(18) ⋅ 点赞:(0)

一、简介

        在wsl安装的文章中对比过WSL1和WSL2的区别,其中很重要一条就是WSL1可以直接识别到windows下的串口或USB设备,而WSL2是不行的,需要借助USB/IP工具。如果还没有搭建WSL环境的话,可以参考如下文章:win10下安装WSL_命令行安装wsl-CSDN博客

        所以,本篇文章,就来介绍一下要如何操作。

        前置条件:

        WSL版本:WSL2

        Windows版本:win11或者win10 21H2+

二、实操

        安装windows端USB/IP工具

        打开powerShell,执行如下命令安装usb/ip客户端。

winget install --interactive --exact dorssel.usbipd-win

        一般默认安装在C盘

        如果winget不可用,可以从usbipd-win官网 https://github.com/dorssel/usbipd-win/releases 下载安装,然后手动安装

        在ubuntu中安装usb/ip服务器工具

        启动Ubuntu,执行下列命令安装依赖

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

        列出共享USB设备

        在powerShell(管理员模式)中列出所有USB设备,找到目标设备的BUSID

usbipd list

        看到多了一条BUSID为5-1的设备。

        将目标USB设备共享给WSL

        使用如下指令,将usb设备共享给WSL。注:共享后,Windows 将无法使用该设备

usbipd bind --busid <busid>
usbipd attach --wsl --busid <busid>

        可以看到,共享后,5-1设备的状态已经变成了Attached。

        在Ubuntu中验证设备是否被识别

        在Ubuntu中执行如下命令,查看是否识别到USB设备。

lsusb

        断开设备与ubuntu的连接

        使用完设备,在powershell中使用如下指令断开USB设备与ubuntu的连接

usbipd detach --busid <busid>

三、FAQ

        如果在Ubuntu下lsusb可以看到设备,但是lsblk看不到设备,且powershell下也能看到设备,可以在Ubuntu执行如下操作:

sudo modprobe -r usb_storage  # 卸载驱动
sudo modprobe usb_storage    # 重新加载驱动

sudo partprobe  # 刷新所有设备的分区表
lsblk  # 再次查看


网站公告

今日签到

点亮在社区的每一天
去签到