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]>

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

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

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

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


person user3788217    schedule 20.07.2014    source источник


Ответы (1)


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

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

sudo shutdown -r now

(Изменить: вы можете отредактировать /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

Тогда вы можете попробовать ЛЕСКАН еще раз:

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

person kha    schedule 25.07.2014
comment
Спасибо за отличный ответ. После make install и перезагрузки на моем RPi отсутствовал gatttool, поэтому мне пришлось сделать sudo cp attrib/gatttool /usr/bin/, и теперь он подключается! - person Nikolay Spassov; 24.08.2014
comment
Проголосовали "за", спасибо. На момент написания этого комментария bluez-5.30 существует. Только 'apt-get ...' и 'make install' требуют sudo. 'gatttool ...', 'wget ...', 'tar ...', 'configure ...' и 'make' не требуют root. - person niry; 20.04.2015