_robust_bluetooth シリアルコンソール/tty

_robust_bluetooth シリアルコンソール/tty

インターネット検索で見つけた多くのQ&A、FAQガイドなどで説明されているように、Bluetooth経由でコンソールを正常に作成して接続しました。

簡単に言えば、sudoモードでは

/usr/sbin/hciconfig hci0 piscan
/usr/bin/sdptool add --channel=3 SP
/usr/bin/rfcomm watch /dev/rfcomm0 3 /sbin/agetty rfcomm0 9600 vt100

Bluetooth接続が安定していればいいと思います。

私の質問は、ヘッドレスシステム(Raspberry Pi)をより強力にする方法です。 Bluetooth接続が失われた場合は、ヘッドレスシステムを再起動する必要があります。システムに複数の(非同時)ユーザーがいる可能性があり、必然的に1人のユーザーが最初にログアウトせずにBluetoothクライアントデバイスを持ち出して、次のユーザーがログインできなくなります。

マイナーな編集:潜在的に見苦しい解決策は、切断を監視し、適切なプロセスを終了/再開することです。これを行うための最良の方法が何であるかよくわかりません(終了する正しいプロセスがわからない(rfcommが終了した後に新しい接続を作成できない))、監視する正しいもの(ttyおよび/またはBluetooth接続が失われますか? )!

答え1

さて、私は自分で解決策を見つけました。しかし、最適ではないかもしれないので、コメントや提案を歓迎します。

「簡単な編集」の後、rfcomm接続を監視し、Bluetooth接続が失われましたが、ttyはまだ接続されている場合はデバイスのプロセスを終了するスクリプトを作成しました。

RF通信確認

rfcomm show /dev/rfcomm0 2>/dev/null | grep "channel 3 closed" | grep "tty-attached"
if [ $? -eq 0 ]; then
    kill -9 `lsof -t /dev/rfcomm0`
fi

その後、crontabにスクリプトを追加しました。

* * * * * /usr/local/bin/check_rfcomm >>/var/log/check_rfcomm.log 2>&1

動作しているようですが、正しくテストされていません。どれだけ強いのかわかりません!

関連情報