Cannot connect to BLE device on Raspberry Pi

这一生的挚爱 提交于 2019-12-03 12:14:48
Teepeemm

I had to disable the plugin pnat in /etc/bluetooth/main.conf -> DisablePlugins=pnat. I read that it's unstable, but I don't know much about this plugin.

I was able to connect via Bluetooth from Raspberry to my Android device by setting the LE address type to random using the -t random argument, i.e. :

sudo gatttool -t random -b DD:9D:0B:43:A1:77 -I
connect

From 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
Hoang Lam

By default GATT is not enable. Add the below lines to /etc/bluetooth/main.conf

EnableLE = true           // Enable Low Energy support. Default is false.
AttributeServer = true    // Enable the GATT attribute server. Default is false.
ArmCoder

If you are still wondering why the random worked. I have gone through the code and this what I found.

​-t ​(Addr:Type: Set LE Address Type)     
Public | random    
Default: Public

A random or static address is a 48-bit randomly generated address and shall meet the following requirements:

• The two most significant bits of the static address shall be equal to ‘1’

• All bits of the random part of the static address shall not be equal to ‘1’

• All bits of the random part of the static address shall not be equal to ‘0’

(Source)

Fixed the connection refused (111) issue in my raspberry pi 3B running raspbian buster by Updating/installing BlueZ via apt-get

> sudo apt-get install --no-install-recommends bluetooth

and re running

> sudo gatttool -t random -b E9:1C:89:B7:16:F9 -I

keebOo

You could try to use gatttool -b 00:22:D0:6D:E0:E6 -I and then connect, just after discovering the MAC without connecting before with hcitool lecc 00:22:D0:6D:E0:E6

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!