LoginSignup
0
0
記事投稿キャンペーン 「2024年!初アウトプットをしよう」

【補足記事】USBIPD-WIN 4.0.0以降を使う方法【SPIKE-RTでロボコンに出よう!!】

Posted at

本記事について

本記事は、【SPIKE-RTでロボコンに出よう!!】シリーズ #1 開発環境を作ろう の 『Step 3. 転送方法の構築』を補足する記事です。

2023年12月6日、usbipd-winの新しいバージョン「4.0.0」がリリースされました。
これに伴い、コマンドの変更等が発生したため、本記事にて改めて説明することとします。

USBIPD-WIN プロジェクトをインストールする

このソフトは、Windowsに接続されたUSBデバイスを、WSLにも認識させるために必要なツールです。
デフォルトでは、PCに接続されたUSBデバイスは、自動的にはWSLに接続されません。
これを、USB/IPという仕組みを用いて、WSLにも接続できるように設定を行います。

まず、下記のリンクからインストーラをダウンロードします。

ダウンロードするのはusbipd-win_4.0.0.msiです。

usbipd-dl.png

ダウンロード出来たら、インストーラを実行します。
すると以下のような画面が表示されるので、「Install」ボタンを押しましょう。

usbipd_win_installer1.png

インストールが完了すると以下のような画面に変わるので、「Close」ボタンを押してウィンドウを閉じましょう。

usbipd_win_installer3.png

バージョンの確認

インストールが完了したら、Powershellにてusbipdと入力して、バージョンを確認しましょう。
以下のように表示されればOKです。

powershell
> usbipd
usbipd-win 4.0.0

Description:
  Shares locally connected USB devices to other machines, including Hyper-V guests and WSL 2.

Usage:
  usbipd [command] [options]

Options:
  --version       Show version information
  -?, -h, --help  Show help and usage information

Commands:
  attach   Attach a USB device to a client
  bind     Bind device
  detach   Detach a USB device from a client
  license  Display license information
  list     List USB devices
  server   Run the server on the console
  state    Output state in JSON
  unbind   Unbind device

HUBブロックの接続

では、PCにSPIKE Prime HUBブロックを接続します。
この時、特殊な方法でPCと接続する必要があるため、その手順を説明します。

まず、HUBブロックの上面にある、Bluetoothアイコンが印字された丸いボタンを押します。
このボタンを押し続けた状態で、USBケーブルによりHUBブロックをPCと接続します。

接続した直後、Bluetoothボタンの淵が紫色に点灯します。
この状態のままさらに5秒程押し続けると、消灯⇒赤⇒緑⇒青の順に光り始めます。
これで、HUBブロックを「DFUモード」でPCと接続することができました。

spike_dfu.gif

DFUモードはファームウェア(元となるソフト、OSのようなもの)を書き換えるためのモードです。

SPIKE-RTは現時点でダイナミックローディング(ファームウェア内に複数のプログラムを入れる方式)には対応しておらず、スタンドアローン(1ファームウェアにつき1プログラム方式)となるので、毎度OSごと書き換えているようなイメージです。

USBデバイスの確認

HUBブロックをDFUモードで接続出来たら、WSLを有効化したときと同じ手順でPowershellを管理者権限で起動し、WSLに接続可能なUSBデバイスを確認します。

Powershell
> usbipd list

実行すると、以下のように表示されます。
(USBの接続状況によって異なるため、以下は一例に過ぎません。)

Powershell
> usbipd list
BUSID  VID:PID    DEVICE                                                        STATE
2-1    0694:0008  LEGO Technic Large Hub in DFU Mode                            Not shared
2-2    0781:5571  USB 大容量記憶装置                                            Not shared
2-5    27c6:538d  Goodix fingerprint                                            Not shared
2-6    0c45:671b  Integrated Webcam                                             Not shared
2-10   0cf3:e007  Qualcomm QCA61x4A Bluetooth                                   Not shared

ここで、LEGO Technic Large Hub in DFU ModeがHUBブロックを指しているので、これの一番左のBUSIDを控えておきます。
今回の場合、2-1となります。

Prime HubをWSL2にバインド(共有)

以下のコマンドにより、Windows側からWSL側に、USBデバイスをバインド(共有)します。
--busidの後は、先ほど控えたBUSIDを指定します。

Powershell
> usbipd bind --busid 2-1

このコマンドを入力後、もう一度usbipd listを入力すると、一番右側のSTATEの部分がsharedに代わります。

Powershell
> usbipd list
BUSID  VID:PID    DEVICE                                                        STATE
2-1    0694:0008  LEGO Technic Large Hub in DFU Mode                            shared
2-2    0781:5571  USB 大容量記憶装置                                            Not shared
2-5    27c6:538d  Goodix fingerprint                                            Not shared
2-6    0c45:671b  Integrated Webcam                                             Not shared
2-10   0cf3:e007  Qualcomm QCA61x4A Bluetooth                                   Not shared

Prime HubをWSL2にアタッチ(接続)

以下のコマンドにより、Windows側からWSL側に、USBデバイスをアタッチ(接続)します。
--busidの後は、先ほど控えたBUSIDを指定します。

Powershell
> usbipd attach --wsl --busid 2-1

このコマンドにより、HUBブロックをWSLに接続することが出来るのですが、このコマンドは一回限りのアタッチになります。
これを、USBを外して再度接続しなおしても、自動的にWSLにアタッチされるようにするには、以下のように--auto-attachオプションを付加します。

Powershell
> usbipd attach --wsl --busid 2-1 --auto-attach

これにより、ロボットを動かすために一時的にUSBを取り外しても、USBを接続しなおせば自動的にWSLにアタッチされます。

接続解除

接続を解除する場合は以下のコマンドで解除することができます。

Powershell
> usbipd detach --wsl --busid 2-1
> usbipd unbind --wsl --busid 2-1

これにより、接続解除⇒共有解除を行えます。

補足終了

以上がアップデートに伴う補足となります。
以降は、『PyUSBの導入』の部分から、環境構築を再開してください。

参考記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0