BlueZ: добавление служб, атрибутов и профилей без команды sdptool - PullRequest
0 голосов
/ 30 октября 2018

До BlueZ 5 способ добавления / удаления служб / атрибутов / профилей Bluetooth в Linux был реализован через sdptool следующим образом: -

Для просмотра локальных записей

#sdptool browse local
Browsing FF:FF:FF:00:00:00 ...

Добавить услугу

#sdptool add SP
Serial Port service registered

Чтобы удалить услугу

#sdptool del 0x10007
Service Record deleted.

Однако sdptool устарел (наряду с hciattach , hciconfig , hcitool , hcidump , rfcomm , ciptool и gatttool ) и удалены из основной сборки BlueZ, как показано в следующих ссылках: -

К счастью, большинство этих команд были заменены более новыми (btattach, btmgmt и bluetoothctl). Тем не менее, похоже, что нет замены для sdptool.

Мой вопрос: - какой инструмент я могу использовать сейчас вместо sdptool для просмотра локальных служб / профиля, а также для добавления или удаления профилей?

Обратите внимание, что я знаю, что sdptool можно перестроить и включить, но я ищу замену команде, а не обходной путь.

1 Ответ

0 голосов
/ 01 ноября 2018

В Bluez 5 это необходимо сделать с помощью интерфейса ProfileManager DBUS. С помощью этого интерфейса необходимо зарегистрировать пользовательский / внешний профиль, и Bluez обрабатывает все аспекты безопасности и подключения.

Когда соединение готово, bluez предоставляет дескриптор файла для работы с внешним профилем. Пример реализации профиля HFP можно найти в bluez-alsa .

Подробно, Вы можете реализовать все методы интерфейса org.bluez.Profile1 и зарегистрировать его в Bluez, используя org.bluez.ProfileManager1 интерфейс , где вы можете указать UUID, auth (если есть) требуется).

В bluez-alsa,

  1. Регистрация сделана здесь .
  2. Методы реализованы здесь .

Как только соединение для этого профиля установлено, API NewConnection называется с аргументом fd in.

Но, AFAIK, прямого способа добиться этого с помощью существующих инструментов, таких как bluetoothctl, не существует.

...