安定して動作するために、ワイヤレスキーボードの範囲をキーボード単体から少し離れたコンピュータに拡張するためにusbipとラズベリーパイを使用しています。
時にはキーボードのUSBレシーバーが再接続され、他の場所で使用されますが、Raspberry Piに再接続すると、USBIP接続は自動的にリセットされません。
自動再接続を達成するには?
ベストアンサー1
リモートでバインドされ、接続されたデバイスが切断されると、デバイスはクライアントから自動的に切断され、ホストからバインドが解除されます。それ以降は、ステータスがバインドされているかリンクされていないのと同じです。
バインディング(ホスト上)と接続(クライアント上)用のusbipコマンドは、同じパラメータを使用して繰り返し実行できます。テザリングまたは接続されたデバイスにエラーメッセージが表示されますが、悪いことは発生しません!したがって、単にバックグラウンドスクリプトをインストールして、デバイスをバインドして接続することを繰り返し実行できます。サンプルスクリプトとシステムユニットを以下に提供します。必要に応じてホスト名とポートIDを変更します。
所有者
スクリプト/opt/usbip/usbip-bind
:
#!/bin/bash
SPOOL=/var/spool/usbip/bind
if [[ $1 == "-q" ]]
then
exec &>/dev/null
fi
touch $SPOOL
while [[ -e $SPOOL ]]
do
/usr/bin/usbip bind -b 1-1.2.1
/usr/bin/usbip bind -b 1-1.2.2
sleep 10
done
/usr/bin/usbip unbind -b 1-1.2.1
/usr/bin/usbip unbind -b 1-1.2.2
exit 0
システム単位/etc/systemd/system/usbip-bind.service
:
[Unit]
Description=USB-IP Bindings
[Service]
ExecStart=/opt/usbip/usbip-bind -q
ExecStop=/bin/rm /var/spool/usbip/bind ; /bin/bash -c "while [[ -d /proc/"$MAINPID" ]]; do sleep 1; done"
[Install]
WantedBy=multi-user.target
必ずディレクトリを作成してください/var/spool/usbip
。その後、デバイスを有効にして起動します。
systemctl daemon-reload
systemctl enable usbip-bind
systemctl start usbip-bind
顧客
スクリプト/opt/usbip/usbip-attach
:
#!/bin/bash
SPOOL=/var/spool/usbip/attach
if [[ $1 == "-q" ]]
then
exec &>/dev/null
fi
touch $SPOOL
while [[ -e $SPOOL ]]
do
/usr/bin/usbip attach -r pi -b 1-1.2.1
/usr/bin/usbip attach -r pi -b 1-1.2.2
sleep 10
done
/usr/bin/usbip detach -p 0
/usr/bin/usbip detach -p 1
exit 0
システム単位/etc/systemd/system/usbip-attach.service
:
[Unit]
Description=USB-IP Attach
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/opt/usbip/usbip-attach -q
ExecStop=/bin/rm /var/spool/usbip/attach ; /bin/bash -c "while [[ -d /proc/"$MAINPID" ]]; do sleep 1; done"
[Install]
WantedBy=multi-user.target
必ずディレクトリを作成してください/var/spool/usbip
。その後、デバイスを有効にして起動します。
systemctl daemon-reload
systemctl enable usbip-attach
systemctl start usbip-attach
必要に応じてデバイスを削除でき、再接続後、最大20秒以内にusbip接続がリセットされます。