自从windows推出的WSL功能,对广大的Linux和嵌入式开发者来说是巨大福利,基本可以媲美日常vmware虚拟机的替换。但WSL还是存在一些不足,其中两点比较重要:

  1. WSL环境如何访问宿主机的USB设备?
  2. WSL如何通过宿主机网卡访问外部设备?
    做到这两点,基本可以跟vmware说Byebye,当然完全替代可能差点意思,毕竟WSL不是桌面系统,但进行大部分日常工作基本没问题。
    本文主要介绍第一点“WSL环境如何访问宿主机的USB设备?”

笔者使用环境为WSL2,版本参考如下:

wsl --version
WSL 版本: 2.0.9.0
内核版本: 5.15.133.1-1
WSLg 版本: 1.0.59
MSRDC 版本: 1.2.4677
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows 版本: 10.0.22621.2428

工具安装

window安装usbipd工具

  1. usbipd下载安装:
    这款工具从4.0.0从版本之后,使用的命令有所变化,这里需要看你下载哪个版本,
    目前网上大部分教程都是旧版本的使用方法,大家这里要注意避坑,笔者因这个地方被折腾许久,本文会对两个版本的使用方法都进行讲解。
    点击到[官网下载]并执行安装。
    或者powershell下执行,会默认会安装最新版本。

    winget install --interactive --exact dorssel.usbipd-win
    
  2. 安装完成后,可以查看版本:

    usbipd --version
    

WSL usbip安装

sudo apt install linux-tools-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20         # *为版本号

Setup

使用usbipd工具分>=4.0.0和<4.0.0版本,这里分开说明。

window(Version>=4.0.0)

  1. 管理员启动powershell(注意要**管理员权限**)

  2. 输入命令,查看usb列表,这里我使用的busid为6-1, 可以看到对应的usb设备状态为not shared。

usbipd list

在这里插入图片描述

  1. 将对应的usb设备共享,执行如下,可以看到状态变为shared
usbipd bind --busid 6-1
usbipd list

在这里插入图片描述

  1. 将usb设备附加到wsl中,可以看到状态变为attached,表示挂接成功。
usbipd attach --wsl --busid  6-1
usbipd list

在这里插入图片描述

window(Version<4.0.0)

如果usbipd版本小于4.0.0,需要增加wsl参数, 过程与上述类似,按如下方式:

  1. 管理员启动powershell(注意要管理员权限
  2. 查看usb列表的busid
    usbipd wsl list
    
  3. 将对应的usb busid挂接到wsl,执行后记得看下state状态是否正常。
    usbipd wsl attach --busid <busid>
    

WSL

如果挂接上,wsl就可以正常使用usb了,执行lsusb 可以看到新增的设备以及新增的tty,这里的tty是我的usb串口设备。

至此,大功告成,愉快的玩耍起来吧 _
在这里插入图片描述


卸载

如果需要卸载改usb设备连接,在window执行。

```
usbipd detach --busid 6-1
usbipd  unbind --busid 6-1
```
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐