2017-02-09 25 views
19

携帯電話を使用して、Bluetooth Classicを介してシリアルポートプロトコル(SPP)を使用してIoTデバイスに接続したいとします。 IoTデバイスには画面もキーボードもなく、接続電話が秘密のPINを知っている限り自動的に接続を受け入れることになっています(つまり、IoTデバイスにsshを強制して毎回ペアリングを設定したくない新しい携帯電話が接続を試みる)。LinuxでBluetooth自動ペアリングを設定する

これらは私がのIoTデバイス上で、これまでに実行したコマンドです:

# Make the device discoverable: 
hciconfig hci0 piscan 

# Register SPP: 
sdptool add --channel=22 SP 

# Start rfcomm: 
rfcomm -r watch /dev/rfcomm0 22 

残念ながら、私は、PINを設定するにはどのような方法を見つけることができなかった、と私は接続しようとすると、ペアリングが失敗します携帯電話でさらに、デバイスは短い間隔でしか検出できません。

IoTデバイスのBluetoothスタック(最新のBluezを実行中)を設定して、特定のPINを認識している電話機と自動ペア設定するにはどうすればよいですか?また、検出期間を永遠にするにはどうすればよいですか?

+0

は、あなたが "bluetoothctl" ユーティリティを利用することができるのbluezライブラリに付属。エージェントで認証を有効にする必要があります。あなたのシステムはヘッドレスなので、 "NoInputNoOutput"を使うことができます。これにより、認証のためのパスキーの相互作用(bluetoothctl agen NoInputNoOutput)が回避されます。しかし、すべての接続を受け入れる場合は、Dbusインターフェース "org.bluez.AgentManager1"を使用して、 "org.bluez.Agent1"で実装された "RequestAuthorization"の最小メソッドで自分のエージェントを登録してください –

+0

bluetoothctlを起動し、エージェントNoInputNoOutput "、それはまだ接続を受け入れるかどうか私に尋ねるでしょう。あなたはそれがバッチモードで設定されている場合、それは違う振る舞いをしていると私に伝えていますか? AgentManager1の独自の実装を作成する場合、それはホイールの再構築のようです。 Bluezはエージェントマネージャーと一緒に出荷されませんでしたか? –

+0

はい、確認を依頼します(はい/いいえ)。しかし、Agent1インターフェースを使って自分のシンプルなエージェントを書くことで、 "はい"に答えることができます。はい、BlueZはエージェント管理者にこれらの機能を「DisplayOnly」、「DisplayYesNo」、「KeyboardOnly」、「NoInputNoOutput」、「KeyboardDisplay」提供します。介入なしに受け入れる特別なケースが必要なときは、自分のAgent1で "Yes" –

答えて

0

BlueZ DBus APIを実装するアプリケーションを実行できます。私はBlueZ> = 5.42を推奨します。 エージェントインターフェイスを使用し、独自のPINコードを実装します。 あなたのエージェントを登録した後、ペアリングが要求されると、bluezは自動的に電話をかけ、自分のエージェントを使用します。

さらに、org.bluez.Adapter1インタフェースを使用してDiscoverableTimeoutをDBusを介して0に設定できます。

"値が0の場合 は、タイムアウトが無効であることを意味し、 が永久に検出可能/制限モードのままになります。

https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/adapter-api.txt(DBUSアダプタオブジェクトドキュメント) https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/agent-api.txt(DBUSエージェントオブジェクトドキュメント) https://kernel.googlesource.com/pub/scm/bluetooth/bluez/+/5.44/test/simple-agent(サンプル) http://www.bluez.org/bluez-5-api-introduction-and-porting-guide/(下部の読み取り)

関連する問題