LINUX.ORG.RU

Как заставить устройство инициировать bluetooth pairing?

 ,


0

1

Пишу утилиту для синхронизации дешевого китайского фитнес-трекера. Расковырял исходники мобильного приложения, более-менее разобрался в принципах работы: ищет устройство с заданным SPP UUID, подключается к нему через RFCOMM и дальше уже просто RPC. Проблема следующая - при попытке подключения bluez генерирует пин, который нужно ввести на устройстве с тремя кнопками, одна из которых - выключение. При синхронизации с андроидом трекер сам генерирует пин и ввести его нужно уже на телефоне. Собственно вопрос - как при pairing'е указать, что код должен быть сгенерирован на другой стороне и можно ли это вообще?

Такие девайсы обычно имеют встроенный ПИН, например, 0000 или 1234. Попробуй сделать так, чтобы компьютер использовал один из них.

proud_anon ★★★★★
()

При pairing указывай дефолтный PIN девайса. Дальше делаешь его trusted и потом никаких PIN'ов больше не надо.

Хотя, может в последнем bluez ещё большего говнища со всем этим делом навертели....

Так, вообще, в bluetooth всё достаточно просто - если PIN type (посмотреть - «Read PIN type» HCI command, именить - «Write PIN type») - «Fixed PIN» то устройство просто будет его отсылать. Если «Variable PIN», то когда он потребуется, твой свисток пришлёт HCI Event «PIN Code Request» на который твой комп должен ответить либо «PIN Code Request Reply» c нужным PIN-кодом, либо «PIN Code Request Negative Reply», если не хочет парится.

Что из этого элементарного алгоритма сделали дебилы пишушие Bluez - уму не постижимо, но, думаю, ты и сам об этом знаешь.

Stanson ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.