Raspberry Pi 2のBLEデバイス(心拍数センサー、Polar H7)に接続しようとしています。ここにある最新バージョンのbluez(5.35)を使用します http://www.bluez。 org/download / しかし、gatttool
を使用して接続しようとすると、常に「接続拒否」エラーが発生します。
これが私がすることです:
pi@raspberrypi ~ $ Sudo su
root@raspberrypi:/home/pi# hciconfig dev
hci0: Type: BR/EDR Bus: USB
BD Address: 5C:F3:70:69:54:3D ACL MTU: 1021:8 SCO MTU: 64:1
DOWN
RX bytes:616 acl:0 sco:0 events:34 errors:0
TX bytes:380 acl:0 sco:0 commands:34 errors:0
root@raspberrypi:/home/pi# hciconfig dev up
root@raspberrypi:/home/pi# hcitool lescan
LE Scan ...
00:22:D0:6D:E0:E6 (unknown)
00:22:D0:6D:E0:E6 Polar H7 6DE0E61C
^Croot@raspberrypi:/home/pi# hcitool lecc 00:22:D0:6D:E0:E6
Connection handle 64
root@raspberrypi:/home/pi# gatttool -b 00:22:D0:6D:E0:E6 -I
[00:22:D0:6D:E0:E6][LE]> connect
Attempting to connect to 00:22:D0:6D:E0:E6
Error connect: Connection refused (111)
[00:22:D0:6D:E0:E6][LE]>
私はこのトピックをフォローしようとしました: デバイスがhcitool lescanで検出可能であってもBLE gatttoolは接続できません が、私にとっては機能しませんでした。
プラグインpnat
を無効にする必要がありました/etc/bluetooth/main.conf
-> DisablePlugins=pnat
。不安定だと読みましたが、このプラグインについてはよくわかりません。
LE address type
を使用して-t random
をBluetooth
に設定すると、Raspberry
からAndroid
デバイスにrandom
を介して接続できました引数、すなわち:
Sudo gatttool -t random -b DD:9D:0B:43:A1:77 -I
connect
gatttool
から man
--t, ---addr-type=[public | random]
# Set LE address type. Default: public
USAGE gatttool [OPTION...]
Help Options:
-h, --help Show help options
-h, --help Show help options
--help-all Show all help options
--help-gatt Show all GATT commands
--help-params Show all Primary Services/Characteristics
arguments
--help-char-read-write Show all Characteristics Value/Descriptor
Read/Write arguments
Application Options:
--i, ---adapter=hciX Specify local adapter interface
--b, ---device=MAC Specify remote Bluetooth address
--t, ---addr-type=[public | random] Set LE address type. Default: public
--m, ---mtu=MTU Specify the MTU size
--p, ---psm=PSM Specify the PSM for GATT/ATT over BR/EDR
--l, ---sec-level=[low | medium | high] Set security level. Default: low
--I, ---interactive Use interactive mode
デフォルトでは、GATTは有効になっていません。以下の行を/etc/bluetooth/main.confに追加します
EnableLE = true // Enable Low Energy support. Default is false.
AttributeServer = true // Enable the GATT attribute server. Default is false.
Apt-getを介してBlueZを更新/インストールすることにより、Raspbianバスターを実行しているRaspberry Pi 3Bで接続拒否(111)の問題を修正しました
> Sudo apt-get install --no-install-recommends bluetooth
そして再実行
> Sudo gatttool -t random -b E9:1C:89:B7:16:F9 -I
なぜランダムが機能したのか疑問に思っている場合。私はコードとこれが私が見つけたものを通り抜けました。
-t (Addr:Type: Set LE Address Type) Public | random Default: Public
ランダムまたは静的アドレスは、48ビットのランダムに生成されたアドレスであり、次の要件を満たしている必要があります。
•静的アドレスの2つの最上位ビットは「1」に等しい
•静的アドレスのランダムな部分のすべてのビットが「1」に等しくないこと
•静的アドレスのランダムな部分のすべてのビットが「0」に等しくないこと
( ソース )