BLE gatttool не может подключиться, хотя устройство можно обнаружить с помощью hcitool lescan

Я запускаю RPi с помощью USB-ключа Bluetooth. Когда я использую hcitool, я могу открыть устройство SmartTag. Но когда я использую gatttool, я не могу подключиться. В нем говорится: "Хост опущен (112)". Вот мои команды:

$ sudo hcitool lescan
LE Scan ...
BC:6A:29:AB:DE:2B (unknown)
BC:6A:29:AB:DE:2B SensorTag

Проверка адаптеров bluetooth на моем RPi я получаю:

$ hcitool dev
Devices:
        hci0    5C:F3:70:60:E6:1B

Затем, когда я использую gatttool, как это, я получаю:

$ sudo gatttool -i hci0 -b BC:6A:29:AB:DE:2B -I
[   ][BC:6A:29:AB:DE:2B][LE]>

Когда я набираю connect, я получаю следующее:

[   ][BC:6A:29:AB:DE:2B][LE]> connect
Connecting... connect error: Host is down (112)
[   ][BC:6A:29:AB:DE:2B][LE]>

Я нашел информацию в Интернете, в которой говорилось, что "Host is down" означает, что датчик Bluetooth не находится в режиме обнаружения. Но это неверно, поскольку SmartTag касается, так как я нажимаю одну кнопку (боковую кнопку) на датчике, которую TI говорит, чтобы сделать ее доступной для обнаружения. И тот же самый используется hcitool lescan для поиска устройства. Там также есть приложение для Android, которое отключается от телефона, и оно сканирует, подключается и считывает датчик SmartTag очень хорошо, когда нажимается эта же кнопка.

Кто-нибудь знает, в чем проблема? Спасибо заранее

Ответ 1

У меня была та же проблема, этот метод работал у меня:

Извлеките USB-модуль и перезапустите RPi:

sudo shutdown -r now

( Edit: вы можете отредактировать /etc/apt/sources.list, чтобы успешно установить библиотеки, перечисленные ниже.

nano /etc/apt/sources.list

deb http://archive.raspbian.org/raspbian wheezy main contrib non-free
deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free

В противном случае вы можете наткнуться на следующую ошибку:

checking for GLIB... no
configure: error: GLib >= 2.28 is required

Не забудьте обновить, чтобы изменения вступили в силу.

sudo apt-get update

)

Удалите установку Bluez и выполните обновление:

sudo apt-get --purge remove bluez
sudo apt-get update

Вы можете отредактировать /etc/apt/sources.list, чтобы убедиться, что вы сможете установить необходимые библиотеки:

Убедитесь, что у вас есть необходимые библиотеки:

sudo apt-get install libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev

Загрузите и извлеките новейшую версию Bluez (в то время, когда она 5.21):

sudo wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.21.tar.xz
sudo tar xvf bluez-5.21.tar.xz

Перейдите в папку Bluez, настройте и установите (для обработки строки sudo make требуется некоторое время):

cd bluez-5.21
sudo ./configure --disable-systemd
sudo make
sudo make install

Отключите RPi, чтобы вы могли подключить Bluetooth-ключ, а затем снова включить его.

sudo shutdown -h now

Возможно, вам придется включить USB-ключ:

sudo hciconfig hci0 up

Затем вы можете снова попробовать LESCAN:

sudo hcitool lescan

И полагая, что это сработало правильно, вы также можете связаться с:

sudo hcitool lecc BC:6A:29:AB:DE:2B
sudo gatttool -b BC:6A:29:AB:DE:2B --interactive

[   ][BC:6A:29:AB:DE:2B][LE]> connect
[CON][BC:6A:29:AB:DE:2B][LE]>

Если вам нужно долго показывать подключенную строку [CON], попробуйте нажать боковую кнопку на вашем теге датчика, чтобы сделать ее видимой снова.


Это была комбинация информации из этих двух ссылок:

http://mike.saunby.net/2013/04/raspberry-pi-and-ti-cc2541-sensortag.html https://learn.adafruit.com/pibeacon-ibeacon-with-a-raspberry-pi/setting-up-the-pi