在我的 iMAC 上:
Retina 5K, 27-inch, Late 2015
4 GHz Quad-Core Intel Core i7
16 GB 1867 MHz DDR3
AMD Radeon R9 M395X 4 GB
我正在运行 VirtualBox:
Version 7.0.14 r161095 (Qt5.15.2)
我有一个Linux虚拟机:
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy
我连接到 Raspberry Pi 0 W,其网络 IP 为 192.168.5.185,我已启用 root 和 ssh,连接到 Raspberry Pi 我有一个 CAN-BUS USB 设备,来自 ssh 终端:
root@RPi0:~# lsusb
Bus 001 Device 003: ID 1d50:606f OpenMoko, Inc. Geschwister Schneider CAN adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
使用 ssh 我启用了 USB 设备:
root@RPi0:~# usbip list
- busid 1-1 (1d50:606f)
OpenMoko, Inc. : Geschwister Schneider CAN Adapter (1d50:606f)
目标是将远程 CAN 总线适配器映射到 Ubuntu,这是我一周前完成的,由于另一个原因我必须重新开始,现在当我尝试列出远程 USB 设备时遇到问题Ubuntu 终端:
usbip list -r 192.168.5.185
usbip: info no exportable devices found on 192.168.5.185
我重新启动了 Pi 0,然后在我的 Ubuntu 终端中:
sy@Linux:~$ usbip list -r 192.168.5.185
Exportable USB devices
======================
- 192.168.5.185
1-1: OpenMoko, Inc. : Geschwister Schneider CAN adapter (1d50:606f)
: /sys/devices/platform/soc/20980000.usb/usb1/1-1
: (Defined at Interface level) (00/00/00)
sy@Linux:~$ sudo usbip attach -r 192.168.5.185 -b 1-1
[sudo] password for sy:
libqsbip: error: udev_device_new_from_subsystem_sysname failed
usbip: error: open vhci_driver (is vhci_hcd loaded?)
我找到了这个: usbip 打开 vhci 驱动程序时出错
我已经检查了 ubuntu 终端和远程版本:
sy@Linux: ~$ usbip version
usbip (usbip-utils 2.0)
sy@Linux: ~$ sudo ssh [email protected]
root:192.168.5.185's password:
Linux RPi0 6.1.21+ #1642 Mon Apr 3 17:19:14 BST 2023 armv6l
The programs included with Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last Login Sun Feb 25 11:26:32 2024 from 192.168.5.220
root@RPi0:~# usbip version
usbip (usbip-utils 2.0)
因此两个版本都匹配,这与其他堆栈溢出报告的消息无关。
有趣的是,如果我关闭 Raspberry Pi 上的电源,那么 CAN 总线模块就会在没有设置的情况下启动,然后一旦我可以 ping 通设备,我就从 Ubuntu 中执行:
usbip list -r 192.168.5.185
Exportable USB devices
======================
- 192.168.5.185
3-1: OpenMoko, Inc. : Geschwister Schneider CAN adapter (1d50:606f)
: /sys/devices/platform/soc/20980000.usb/usb1/1-1
: (Defined at Interface level) (00/00/00)
仍然得到相同的结果:
sy@Linux:~$ sudo usbip attach -r 192.168.5.185 -b 3-1
[sudo] password for sy:
libqsbip: error: udev_device_new_from_subsystem_sysname failed
usbip: error: open vhci_driver (is vhci_hcd loaded?)
然后我在 Pi /etc/modules 上编辑并删除了 vhci_driver,该模块现在回到 1-1,但报告的消息相同:
sy@Linux:~$ sudo usbip attach -r 192.168.5.185 -b 1-1
[sudo] password for sy:
libqsbip: error: udev_device_new_from_subsystem_sysname failed
usbip: error: open vhci_driver (is vhci_hcd loaded?)
我认为 vhci_hcd 也许应该由 Ubuntu 加载?如何 ?
在 Raspberry Pi 0 WI 上添加:
sudo usbip bind —busid=X
其中 X 是分配给 USB 设备的总线 ID,可以通过以下方式显示:
usbip list -p -l
就我而言,它想出了:
busid=1-1#usbid=1d50:606f#
因此 X 将被替换为 1-1。我现在遇到的唯一问题是,如果我执行以下操作,一切都已连接:
sudo reboot
当我使用以下命令时,can0 设备不显示:
ip link
然后我必须通过拉动电缆并重新连接来断开设备,这是不可接受的。
来自 dmesg 的一些信息:
[46.529564] IPv6 ADDRCONF(NETDEV_CHANGE): can0: link becomes ready
[53.136367] usbip-host 1-1: usbip-host: register new device (bus 1 dev 2)
任何人都可以帮助解决这个问题吗?
答案1
您尝试过加载vhci_hcd
驱动程序吗?这对我的情况有帮助,并显示相同的错误消息:
sudo modprobe vhci_hcd
答案2
最后我再次用 Raspbian 11 重新格式化了 SD 卡,我按照以前的方式设置了 CAN 模块,事实上一切都按照以前的方式设置,唯一的区别是我没有尝试运行:
sudo apt update
sudo apt upgrade
我确信该问题是由有错误的更新引起的。