Ubuntu 22.04、Raspberry PiのリモートUSB 0W

Ubuntu 22.04、Raspberry PiのリモートUSB 0W

私の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 0Wに接続しており、そのネットワークIPは192.168.5.185です。ルートとSSHが有効になっており、Raspberry Piに接続されています。 SSH端末にはCAN-BUS USBデバイスがあります。

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にマッピングすることです。 1週間前にこれを行いましたが、別の理由で再起動する必要があり、Ubuntu端末にリモートUSBデバイスを一覧表示しようとすると問題が発生します。

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

バグのあるアップデートで問題が発生したと確信しています。

関連情報