BlueZ 5.19を実行しているLinuxシステムでGATTクライアントを使用しようとしています。残念ながら、このシステムではPythonもglibも使用できないので、私の唯一の選択肢はlibdbusです。そして私は以前にDバスを使ったことがないと言いましたか?私は、16バイトのUUIDによってカスタムサービスを提供し、宣伝する別のシステムにGATTサーバーを持っています。 BlueZベースのシステムでこのサービスにアクセスしようとしています。私はそれが広告するUUIDによってサーバーを発見できることを確認しました。そして、BlueZに接続することができます。私のクライアントアプリケーションは、サーバーによって宣言されたUUIDを渡してBluezのRegisterProfileメソッドを呼び出すことができましたが、BlueZは決して私のNewConnectionメソッドを呼び出すことはありません。 RegisterProfile呼び出しのオプションでは、 "Role"を "client"に、 "AutoConnect"をTRUEに、 "RequireAuthorization"と "RequireAuthentication"の両方をFALSEに設定しています。私は-E(実験的)オプションでbluetoothdを実行しています。GATTクライアントがBlueZ 5.19で作業していません
私は-Eとデバッグオプションの両方にフォアグラウンドでbluetoothdを実行する場合、これは私は私のクライアントアプリを起動したときに、私が見たものである。
bluetoothd[2126]: src/profile.c:register_profile() sender :1.20
bluetoothd[2126]: src/profile.c:create_ext() Created "myRemoteControlProfile"
bluetoothd[2126]: src/profile.c:ext_device_probe() myRemoteControlProfile probed with UUID 119649b6-b656-22ae-e611-ba85a04effc5
bluetoothd[2126]: src/service.c:change_state() 0x950d0: device 24:71:89:09:AD:09 profile myRemoteControlProfile state changed: unavailable -> disconnected (0)
「myRemoteControlProfileは、」私が登録したプロファイルの名前です。 BlueZでは、 "119649b6-b656-22ae-e611-ba85a04effc5"は、私がRegisterProfile呼び出しと24:71:89:09:AD:09で渡したUUIDです。このリモートデバイスが私が探しているサービスを提供していることを知っているようです。私がサーバーデバイスで見ると、BlueZに接続することはありません。 BlueZは、デバイスがRegisterProfileで渡したサービスを提供しているのを見たときにデバイスに接続するとは思われませんか?なぜ私はNewConnectionメソッド呼び出しを取得しないのですか?登録されたプロフィールが決して「切断された」状態を過ぎることはないということはどういう意味ですか?私は、GATT APIがBlueZ 5.19ではまだ実験的であると考えていることを知っています。私はこれがうまくいくと思っていますか?ありがとう!
ところで、この問題は、https://stackoverflow.com/questions/36480516/bluez5-37-org-bluez-profilemanager1-registerprofile-cant-detect-green-throttleに記載されている問題とほぼ同じです。残念ながら、そこには答えはありませんでした。
特に、5.4x以前のバージョンはLEの機能性と安定性の点でかなり悪かったので、常に最新のBlueZを使用するようにしてください。 'bluetoothd 'を使ってDBusと対話したことはありますか? – Zimano