操作步骤
按照以下步骤进行操作:
-
在Windows下安装PeakCAN驱动并安装,地址是https://www.peak-system.com/PCAN-USB.199.0.html?&L=1
-
在Windows下安装usbipd,地址是https://github.com/dorssel/usbipd-win/releases,最新版是4.0.0,点击usbipd-win_4.0.0.msi进行下载,然后点击安装
-
在WSL2 Debian下安装usbutils,命令是
sudo apt install usbutils
-
在WSL2 Debian下安装PeakCAN驱动,如果系统已经有驱动就不需要安装了,地址是https://www.peak-system.com/fileadmin/media/linux/index.htm,
下载完后拷贝到Debian下解压,然后cd进入,最后执行下面命令来编译安装,make -j6 sudo make install
install时可能会出现"Failed to send reload request: No such file or directory"错误,此时执行sudo service udev restart命令,然后再执行
sudo make install
-
把PeakCAN接入电脑的USB口
-
在Windows下使用管理员权限打开cmd或者powershell,然后执行
usbipd list
,查看USB设备列表
可以看到PeakCAN的BUS ID是8-2,状态是Not shared。注意:如果是不同的电脑,这个BUS ID是会变的
然后执行命令usbipd bind -b 8-2
,执行完再使用usbipd list
看下状态,
可以看到已经变成shared了,最后执行命令usbipd attach --wsl --busid 8-2
,这样就可以把PeakCAN转移到WSL2 Debian里了,此时状态变成Attached,
转移之后PeakCAN就无法在Windows下使用了 -
在WSL2 Debian下执行
lsusb
,
可以看到PeakCAN已经转移到Debian里了
如果想从Debian里解除绑定,只要执行下面的命令就可以了
usbipd detach --busid 8-2
usbipd unbind --busid 8-2
小坑
还有需要注意的一点是WSL2 Debian需要更新到最新,可以执行下面的命令进行更新,
wsl --shutdown
wsl --update
这里比较坑的地方是:更新完之后,之前的SocketCAN驱动又没了,又得重新去编译内核,可以参考上一篇文章。