USB/IP

提供: ArchWiki
2019年9月24日 (火) 21:15時点におけるKusakata (トーク | 投稿記録)による版 (翻訳)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

USB/IP のサイト より:

USB/IP プロジェクトは IP ネットワーク上で汎用の USB デバイス共有システムを開発することを目的としています。コンピュータ間で USB デバイスを共有するために、USB/IP は "USB I/O メッセージ" を TCP/IP ペイロードにカプセル化してコンピュータ間で通信します。

インストール

usbip パッケージをインストールしてください。

使用方法

サーバーの設定

サーバーには物理的な USB デバイスを接続してください。

USB/IP カーネルモジュールをロード:

# modprobe usbip_host

USB/IP の systemd サービスを起動・有効化:

# systemctl start usbipd.service
# systemctl enable usbipd.service

接続されているデバイスを確認:

$ usbip list -l

必要なデバイスをバインドしてください。例えば、busid が 1-1.5 のデバイスを共有するには:

$ usbip bind -b 1-1.5

デバイスのバインドを解除するには:

$ usbip unbind -b 1-1.5

バインド後、クライアントからデバイスにアクセスできるようになります。

systemd サービスによるバインド

バインドを永続化したい場合は以下の systemd テンプレートユニットファイルを使います:

/etc/systemd/system/usbip-bind@.service
[Unit]
Description=USB-IP Binding on bus id %I
After=network-online.target usbipd.service
Wants=network-online.target
Requires=usbipd.service
#DefaultInstance=1-1.5

[Service]
Type=simple
ExecStart=/usr/bin/usbip bind -b %i
RemainAfterExit=yes
ExecStop=/usr/bin/usbip unbind -b %i  
Restart=on-failure

[Install]
WantedBy=multi-user.target

例えば busid が 1-1 のデバイスを共有するときは以下のコマンドを使います:

# systemctl enable usbip-bind@1-1.service
# systemctl start usbip-bind@1-1.service

クライアントの設定

VHCI カーネルモジュールをロードしてください:

# modprobe vhci-hcd

サーバーから利用できるデバイスを確認:

$ usbip list -r <Server IP Address>

必要なデバイスにアタッチしてください。例えば busid の 1-1.5 デバイスにアタッチするには:

$ usbip attach -r <Server IP Address> -b 1-1.5

デバイスの接続を解除

クライアントでデバイスをデタッチしてから接続を解除することができます。

アタッチされたデバイスを確認:

$ usbip port

デバイスをデタッチ:

$ usbip detach -p <Port Number>

サーバー上のデバイスのバインドを解除:

$ usbip unbind -b <busid>
ノート: デフォルトでは USB/IP を使うにはポート 3240 を開く必要があります。ファイアウォールを使っている場合、ポートが開いているかどうか確認してください。ファイアウォールの設定について詳しくはカテゴリ:ファイアウォールを参照してください。

マニュアルページ

usbip(8) を見てください。

参照