環境情報
server
device:raspi
OS:ubuntu20.04
kernel:5.15.0-1017-raspi
host
device:laptop
OS:windows 11
raspi(server)側の準備
現在のubuntuでは、usbipはkernelについてくるためaptでinstallできない。また本来のubuntuではkernelに付随しているがraspi用のubuntuは軽量版なので入っていない。そのため、以下を実行してusbipを使える状態にする。
まず最新のkernelを取得するために以下を実行する。
sudo apt-cache search linux-images|grep raspi
実行結果
raspiなので、今回の結果であれば以下で更新する。
suso apt install linux-image-5.15.0-1017-raspi
kernelをinstallしたら再起動する。kernelが更新されているか確認する
uname -r
このままでは、まだUSBIPを使うことはできない。
kernelのバージョンにあったものをinstallする必用があるため以下を実行する。
sudo apt-cache search linux-tools |grep raspi
実行すると、様々なバージョンのものがでてくる。今回は、linux-image-5.15.0-1017-raspiをinstallしているため、以下をinstallする。
sudo apt install linux-tools-5.15.0-1017-raspi
次に、USBIPを使うためのモジュールをinstallすり必要がある。これもkernelに合わせる必要があるため以下で調べる。
sudo apt-cache search linux-modules-extra |grep raspi
これもkernelに合わせて、今回は以下をinstallする。
sudo apt install linux-modules-extra-5.15.0-1017-raspi
また、hwdataが必要なのでinstallしておく。
sudo apt install hwdata
installが完了したら、usbipを使うために設定を行う。
まず、moduleを有効化するために、以下を実行していく。
sudo modprobe usbip-core
sudo modprobe usbip-host
sudo modprobe vhci_hcd
sudo modprobe usbip_vudc
次に、バックグラウンドでusbipが使えるようにするためusbipのデーモンを起動させる。
sudo usbip -D
raspiの操作
まず、usbデバイスのbusidを確認するする。
usbip list -l
実行すると、以下のように表示される。
busidは、今回だと1-1.1になる。
busidがわかったら、bindしてリモートで使用できるようにする。
sudo usbip bind -b <busid>
これで、raspi側の操作は終了である。
windows(client)側の設定
まず、ここからusbip-winのzipファイルをinstallする。
好きな場所に解凍して、そのファイルに移動する。
ファイル内のusbip_test.pfxをinstallする。
.\usbip_test.pfx
installする際、保存場所はローカルコンピュータを選ぶ。またpasswordはusbipとなっている。
次に、test signingを有効化する。
この際、パソコンがセキュアブートが有効化させていると実行できないため無効化しておく。biosを開いて編集することになり、僕の場合回復キーを求められてめちゃくそビビりました。
bcdedit.exe /set TESTSIGNING ON
有効化できたら、仮想デバイスをinstallする必用がある。
.\usbip.exe install -w
windows(client)側の操作
まず、リモートでbindされているusbを確認する。
.\usbip.exe list -r <ipアドレス or VPN>
実行すると、raspi側でbindしたbusidと同じデバイスが表示される。
確認したbusidを利用して、
.\usbip.exe attach -r <ipアドレス or VPN> -b <busid>
succesfullyと表示されれば無事接続完了である。
一応確認で、以下を実行する。
.\usbip.exe port