私がやろうとしていることは、概念的には単純です。Linux コンピューターを、(電話から) の接続を自動的に受け入れる Bluetooth スレーブ デバイスにします。全体的な目標は、自動的に接続し、電話アプリから Linux コンピューターの Python にデータを転送することです。必要な手順は次のとおりです。
まず、hciconfig を使用して Bluetooth アダプターをセットアップしました。
sudo hciconfig hci0 noauth
sudo hciconfig hci0 name thisdevice
sudo hciconfig hci0 lm SLAVE
sudo hciconfig hci0 lm ACCEPT
sudo hciconfig hci0 sspmode 1
sudo hciconfig hci0 reset
sudo hciconfig hci0 piscan
次に、認証を行うために Bluetoothctl を使用する Bluetooth エージェントが必要です。
bluetoothctl
discoverable on
pairable on
agent NoInputNoOutput
次に、携帯電話を使用して接続する必要があります。ただし、接続するには、bluetoothctl 内のターミナルで YES と入力する必要があります (正しいピンを確認するように求められます)。これは問題であり、NoInputNoOutput 設定の目的を完全に無効にします。
次に、Pybluez と Advertise_service 関数を使用する Python プログラムを実行します。その後、電話アプリからそのサービスに接続できます。
これはイベントの正しい順序ですか? Bluetooth を自動的に認証するにはどうすればいいですか? (bluez のエージェント コードを変更しますか?)
ありがとう
答え1
私はこのトピックの専門家ではありません。むしろ、まったく同じことを 3 日間試してやっと生き延びたと言ってもいいでしょう。もうあきらめて、Raspberry Pi を他の未完成のプロジェクトの山に放り込むつもりです。
しかし、この地獄を巡る私の旅はあなたにとって価値があるかもしれないと思います。agent off
新しいエージェントを登録する前に、次のように入力してみてください。
bluetoothctl
agent off
agent NoInputNoOutput
discoverable on
pairable on
btmon
これらのコマンドを入力しながら 2 番目の端末で実行すると、新しい NoInputNoOutput エージェントが登録されていることが表示されます。
答え2
これを試して:
bt-agent -c NoInputNoOutput -d