Проблемы со связью между Arch Linux и iPad

Я использую Arch Linux и библиотеки Bluez на своем компьютере и пытаюсь подключиться к iPad [w/ Retina] через BLE. Я вижу iPad в bluetoothctl, соединяю его, доверяю ему и подключаюсь к нему. Мой вопрос состоит из двух частей:

1) Я хочу иметь возможность выбирать атрибуты, более конкретно для службы MAP. Тем не менее, работает

list-attributes

во время соединения или за его пределами информация не возвращается.

2) Мой iPad не может видеть компьютер так, как он видит iPad, через меню "Настройки" -> "Bluetooth" или CBCentralManager в приложении, которое я разрабатываю. Мой компьютер настроен на обнаружение и защиту навсегда, но он просто не находит его.

Как бы я мог подключиться к iPad надлежащим образом, если даже есть способ?

2 ответа

Решение

Отказ от ответственности всем, кто использует инструменты пользовательского пространства BlueZ:

ОП упомянул в комментариях, которые он использовал hcitool, Лучше не использовать hciconfig ни hcitool поскольку они находятся в процессе отказа от BlueZ и не поддерживаются в течение очень долгого времени. Они подвержены ошибкам, и необработанные вызовы, которые делают эти программы, блокируют и создают помехи другим приложениям Bluetooth.

BlueZ публикует некоторые методы, чтобы пользователи могли использовать функциональность Bluetooth (LE) для приложений или задач: DBus и низкоуровневый подход. Программы, включенные в пакет пространства пользователя BlueZ, включают bluetoothctl, который использует DBus для задач, связанных с Bluetooth, таких как сканирование, реклама и GATT. Инструменты как btmgmt, который можно считать поддерживаемой версией hcitoolиспользуйте библиотеки нижнего уровня. BlueZ рекомендует использовать API-интерфейс DBus для приложений. Обязательно скомпилируйте исходный код и следуйте рекомендуемым инструкциям для использования упомянутых инструментов. Также всегда проверяйте лицензирование указанных инструментов и исходных файлов, поскольку некоторые из них не могут быть включены в проприетарное программное обеспечение.


Решение без DBus:

При использовании bluetoothctl или же DBus не работает для вас, я бы предложил вам использовать btmgmt, Это можно найти в /tools папка с исходным кодом пользовательского пространства.

Если вы ищете или хотите включить задачи, связанные с GATT, вы можете использовать btgatt-client действовать как клиент ГАТТ или btgatt-server выступать в качестве сервера ГАТТ из того же /tools папка. Они не используют ни DBus, ни соответствующий демон Bluetooth (bluetoothd) лайк bluetoothctl делает

Решение DBus:

Что, скорее всего, является причиной того, что вы не видите сервисы, использующие bluetoothctlтем не менее, вы не запускаете вышеупомянутый демон Bluetooth с -E флаг (экспериментальный). В настоящее время все функции, связанные с GATT, можно использовать только при работе в этом экспериментальном режиме. (Они работают, чтобы вывести его из экспериментального режима) Я думаю, потому что он все еще разрабатывается. Если я правильно помню, BlueZ также можно настроить / установить в этом экспериментальном режиме, так что никаких ручных действий не требуется.

Чтобы перезапустить BlueZ Daemon (bluetoothd) с включенным GATT:

sudo service bluetooth stop && bluetoothd -E

В большинстве случаев при остановке службы Bluetooth контроллер Bluetooth отключается и bluetoothctl не отвечает на ввод пользователя / зависает при запуске. Если это действительно так, используйте btmgmt и выдать power on снова включить контроллер Bluetooth.

  1. Чтобы просмотреть атрибуты службы MAP, используйте списочные атрибуты для их просмотра. Обеспечить правильное написание. Чтобы выбрать службу MAP, вам нужно перечислить атрибуты списка, а затем выбрать атрибуты в указанном порядке.

  2. Похоже, что ваш Ipad имеет проблемы. Возможно, попробуйте выключить и снова включить. Убедитесь, что у вас включен Bluetooth!

  3. Всегда есть выход!

Другие вопросы по тегам