質問: ### 前提・実現したいこと raspberri pi B 2台の間でBluetooth通信を行いたいです. Bluetoothドングルとしては iBuffalo Bluetooth 4.0+EDR/LE を用いています. ### 発生している問題・エラーメッセージ ペアリングはできるのですが,接続が確立されないです. ``` $ bluetoothctl [bluetooth]# agent DisplayYesNo [bluetooth]# pair Attempting to pair with Failed to pair: org.bluez.Error.AlreadyExists [bluetooth]# connect Attempting to connect to [CHG]Device Connected: yes Failed to connect: org.bluez.Error.NotAvailable [CHG]Device Connected: no ``` となります. ### 試したこと 対策として ``` [bluetooth]# remove ``` で再度scan onからデバイス接続を行ったり, ``` sudo reboot ``` で再起動したりしましたが結果は変わりません. ### 補足情報(言語/FW/ツール等のバージョンなど) バージョンはそれぞれ bluez ver 5.23-2+rpi2 OS ver 8.0 kernel ver 4.9.24 となっています. 同じ境遇で困った経験のある方どうかご助言ください. よろしくお願いします.
回答: Bluetoothでは接続される(スレーブ)側のデバイスが、自身が提供しているサービスをSDP(Service Discovery Protocol)をつかって公開する必要があるのですが(BLEは除く)、それを行っていないということはありませんか? 試しに接続側(マスタ)より、コマンドラインで ``` sdptool browse **:**:**:**:**:** [スレーブデバイスのアドレス] ``` として、スレーブ側で必要なサービスを公開されているのかを確認してみてください。 > > 例えば、使用したいサービスが**「シリアル通信」**の場合は、上記の結果に > > `Service Name: Serial Port` の記述があるかを確認します。 > > > 上記の結果、接続対象のサービスがSDPに存在しない場合は、 スレーブ側にて ``` sudo sdptool add --channel=22 SP ``` のように実行して、サービスを追加する必要があります。 > > 上記は**シリアル通信**を追加する例です。 > > >