Проблемы со связью между 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.
Чтобы просмотреть атрибуты службы MAP, используйте списочные атрибуты для их просмотра. Обеспечить правильное написание. Чтобы выбрать службу MAP, вам нужно перечислить атрибуты списка, а затем выбрать атрибуты в указанном порядке.
Похоже, что ваш Ipad имеет проблемы. Возможно, попробуйте выключить и снова включить. Убедитесь, что у вас включен Bluetooth!
Всегда есть выход!