2015-07-13 6 views
3

Я работаю с BlueZ 5.30 и ядром 3.13.0-32, и мне нужно реализовать в своих функциях характеристики чтения/записи приложения через DBus.Linux BlueZ dbus communication

Я использую тестовые скрипты Bluez для установленного соединения:

«тест-открытие», а затем «тест-устройство подключения».

проблема заключается в том, что я не вижу никаких служб, отображаемых в DBus (org.bluez). Используя приложение d-ноги, я могу только увидеть:

"/ орг/BlueZ/hci0/dev_btaddr" Интерфейсы org.bluez.Device1 org.freedesktop/DBus.Introspectable org.freedesktop.DBus.Properties

и в "/ Var/журнал/системный журнал" Я вижу много:

"bluetoothd [715]: Не удалось зарегистрировать службу GATT с ручкой 0x0045 для устройства ..."

использованием gatttool I» m, способные читать/писать характеристики, праймериз и т. д. Под hcidump я вижу al l характеристик читаются должным образом.

Но, из DBus PoV доступен только интерфейс Device1.

вот моя конфигурация BlueZ: " ./configure prefix =/USR --mandir =/USR/доли/человек --sysconfdir =/и т.д. --localstatedir =/вар --enable-библиотека - -disable-Systemd --enable-экспериментальное --enable-сопровождающий режим --enable-отладки «

Я смотрел здесь:» http://i-miss-erin.blogspot.com/2010/12/gatt-related-dbus-api.html ", но, как я уже говорил, не имеют какой-либо интерфейс или услуги, которые являются отображается здесь.

Для тестирования я использую близость и спрятанные устройства. В случае скрытия, после правильного подключения, я вижу символы в окне терминала (спрятанное клавиатурное устройство), поэтому я предполагаю, что он работает правильно.

Любые предложения?

+1

Я решил свою проблему. Проблема была вызвана тем, что bluetoothd работает без «-E», что позволяет экспериментальную часть BlueZ –

+0

. Как вы в конечном итоге добавили -E к запуску? Я пытаюсь добавить его к демонам в /etc/init.d/bluetooth, но, похоже, это не трюк. Где вы его добавили? – Brook

ответ

2

Вам необходимо активировать экспериментальные функции для вашего набора bluetooth, чтобы активировать службы GATT.

В системе Debian вы можете добиться этого, поставив

NOPLUGIN_OPTION="-E"

в файл /etc/default/bluetooth.

После перезагрузки, чтобы мое устройство (Logitech MX Master) работало корректно на моем Debian Stretch, мне также пришлось установить пару и доверять ему вручную, используя команду bluetoothctl. Я не имел успеха с графическим инструментом Bluetooth от Gnome.

+0

С новыми системами на базе Systemd скопируйте '/ lib/systemd/system/bluetooth.service' в'/etc/systemd/system/bluetooth.service' и изменить строку 'ExecStart' на' ExecStart =/usr/lib/bluetooth/bluetoothd -E'. –