Журнал подключения bluetooth наушников

0. Введение

Для разработчиков Bluetooth журнал HCI может помочь нам лучше проанализировать проблему и понять протокол Bluetooth, так же как при разработке сети необходимо использовать Wireshark для анализа сетевых протоколов.

Эта статья в основном представляетРоль журнала HCIКак получить копию журнала HCIИ объединитьПрактический примерПроиллюстрироватьКак анализировать журнал HCI

1. Введение в журнал HCI

1.1 Функция журнала HCI

Журнал HCI используется для анализа поведения взаимодействия между устройствами BluetoothСоответствует ли это ожиданиям?Исполните с спецификацией Bluetooth, В повседневной разработке журнал HCI обычно используется для нескольких вещей:

  • Анализировать ошибки: Устройство не может быть найдено после включения Bluetooth или у искомого устройства нет имени, но есть только адрес Bluetooth, телефоны Android не могут передавать файлы на телефоны Apple .
  • анализ спроса: Мобильный телефон должен быть оснащен селфи-палкой Bluetooth для управления фотосъемкой. Через журнал HCI вы можете наблюдать, какой профиль Bluetooth используется конкурирующими продуктами при реализации этой функции? Пока мы знаем, что профиль Bluetooth используется, у нас есть идея реализовать эту функцию.
  • Изучение протокола Bluetooth: Используйте журнал HCI, чтобы помочь в изучении протокола Bluetooth, так же, как изучение TCP / IP путем захвата пакетов через wireshark

1.2 Базовая архитектура системы Bluetooth

Сказав так много использований журнала HCI, если мы хотим лучше понять журнал HCI, нам нужно сначала взглянуть на положение HCI во всей архитектуре базовой системы Bluetooth. Для облегчения понимания я буду использовать архитектуру базовой системы Bluetooth3 слоя абстракции

  • User Application(Host)Пользовательское приложение — это прикладной уровень, также называемый Host, мы называем Bluetooth API, относящийся к прикладному уровню, например,BluetoothAdapterИнтерфейс предоставлен в.
  • HCI (Host controller Interface): Когда верхний уровень вызывает Bluetooth API,Не будет напрямую манипулировать нижним слоем Bluetooth(Контроллер) связанный интерфейс, ноОтправьте Команду соответствующей операции Контроллеру через HCIИ затем вернуть результат выполнения после того, как нижний уровень выполнит команду,То есть контроллер отправляет событие в HCI, а затем HCI уведомляет прикладной уровеньHCI сыграласредний слойРоль.
  • Controller: Контроллер находится на самом низком уровне, который можно понимать как чип Bluetooth на нашем мобильном телефоне.

Абстрактная архитектура Bluetooth

Полная базовая архитектура системы Bluetooth более сложна, поэтому мы не будем вдаваться в подробности. Заинтересованные студенты могут обратиться к спецификации Bluetooth.Core_v4.2.pdf, Есть подробные определения и введения. Когда мы проанализируем журнал HCI позже, мы также будем ссылаться на контент, определенный в этой спецификации.

Читайте также:  Dab cd player bluetooth

Полная архитектура Bluetooth

2. Как захватить журнал HCI

Открыть в настройках разработчикаВключить журнал сбора информации Bluetooth HCIПереключатель, система Android будет автоматически собирать журнал HCI и сохранять его на телефоне.

Включить журнал сбора информации Bluetooth HCI

Различные платформы хранят журнал HCI по разным путям.MTKПуть для хранения журнала HCI/sdcard/mtklog/btlog/btsnoop_hci.logQualcommПуть хранения/sdcard/btsnoop_hci.log

MTK:/ $ ls -l /sdcard/mtklog/btlog/ total 816 -rw-rw---- 1 root sdcard_rw 412258 2016-02-28 00:39 btsnoop_hci.log [email protected]:/ $ ls -l /sdcard/btsnoop_hci.log -rw-rw---- root sdcard_rw 12744 2017-06-16 15:43 btsnoop_hci.log 

Если в указанном выше пути нет журнала HCI, мы все равно можем использоватьФайл конфигурации Bluetooth bt_stack.conf для просмотра пути, Bt_stack.conf находится/etc/bluetooth/Под тропой. Путь к журналу HCI пройденBtSnoopFileName=/sdcard/btsnoop_hci.logЧтобы настроить это.

Путь регистрации HCI на мобильном телефоне

И bt_stack.conf через исходный код Android/system/bt/conf/bt_stack.confНастроить.

// /system/bt/conf/bt_stack.conf # BtSnoop log output file BtSnoopFileName=/sdcard/btsnoop_hci.log 

Вытащите захваченный журнал HCI и откройте его непосредственно с помощью Блокнота. Все, что вы видите, — искаженные символы. Нам также нужен инструмент анализа журнала HCI:Frontline ComProbe Protocol Analysis System

C:\Windows\System32>adb pull /sdcard/mtklog/btlog/btsnoop_hci.log C:\Users\admin\Desktop\hci 501 KB/s (4880 bytes in 0.009s) 

3. Инструмент анализа журнала HCI

Frontline ComProbe Protocol Analysis SystemЭто инструмент анализа журнала протокола Bluetooth, предоставленный Frontline. Компания Frontine в основном используется для захвата устройств регистрации Bluetooth Air Sniff. Давайте поговорим о регистрации Air Sniff позже. Приобрести их инструмент захвата пакетов будет поставляться с инструментом анализа журнала, вы также можетеFrontine официальный сайтЗагрузите и загрузите, вам нужно заполнить некоторую информацию при загрузке, студенты, которые находят проблемы, могут перейти к другимНеофициальный сайтСкачивать.

После завершения установки найдите Frontline ComProbe Protocol Analysis System в меню «Пуск» и используйте Capture File Viewer, чтобы открыть журнал HCI.

ComProbe Protocol Analysis System

Step 1. Сначала выберитеОткрыть журнал HCIИ выберите тип журнала какBtSnoop Files, То есть файл, оканчивающийся на * .log.
Другой способ — изменить суффикс btsnoop_hci.log на btsnoop_hci.cfa, а затем открыть его непосредственно с помощью Capture File Viewer.

Шаг 1. Откройте журнал HCI

Step 2. После открытия файла журнала выберитеFrame DisplayВы можете увидеть журнал HCI, который мы взяли

Шаг 2. Выберите Frame Display

Основной интерфейс Frame Display

Step 3В окне Frame Display имеется множество вкладок, которые могут отображать различные типы протоколов в стеке протоколов, например: журналы, относящиеся к HCI, размещаются на вкладке HCI,Hands-Free(HFP)принадлежатПрофиль Bluetooth на прикладном уровне, Журналы операций, связанных с HFP, размещаются на вкладке Hands-Free.

  • Air sniff log
    Журнал HCI, записанный на устройстве Android, может анализировать только проблему между Хостом и Контролем. Когда взаимодействие между Хостом и Контролем нормальное, оно может бытьВо время передачи (Air Interface)Если что-то пойдет не так, вам нужно проанализировать журнал Air Sniff. Журнал Air Sniff может захватывать воздушные пакеты двух устройств Bluetooth во время передачи данных. Для захвата журнала Air Sniff требуется специальное оборудование.
Читайте также:  Bluetooth колонка zealot s51

4. Журнал HCI-Bluetooth процесс сканирования устройства анализа процесса

Прикладной уровень вызываетstartDiscovery()При выполнении сканирования устройства,HostВышлю один через HCIInquiry HCI CommandдайтеController, Далее мы изучим процесс запроса, проанализировав журнал HCI. Прежде чем анализировать журнал HCI, давайте изучимПакет команд HCIСтруктура.

4.1 Структура пакета данных HCI Command

Структура пакета данных команды HCI определена в спецификации основного протокола BluetoothCore_v4.2.pdfв.

Формат пакета данных команды HCI выглядит следующим образом, началоКод операции — это уникальный идентификатор, который различает различные типы команд, Код операции поOpCode Group Field (OGF) с участием OpCode Command Field (OCF)сочинение. В соответствии со значением OGF, команды HCI могут быть классифицированы. Формула вычисления OpCode: ** OpCode = OGF , С помощью метода расчета OpCode мы можемФильтруйте указанный тип Команды HCI в ** Журнале HCI через OpCode.

4.2 Команда фильтра запроса

Inquiry CommandдаLink Control commandТип команды по запросуBluetooth Core SpecificationизVol 2->Part E->7.1 LINK CONTROL COMMANDSРаздел, мы можем увидеть команду Link ControlЗначение OCF 0x0001

Каталог спецификаций Bluetooth Core

For the Link Control commands, the OGF is defined as 0x01

Система анализа протокола ComProbe поддерживает функцию фильтрации черезУстановить фильтрЖурнал, код операции которого 0x0401, может быть отфильтрован, метод установки следующий:

4.3 Анализ процесса сканирования

  • Хост отправляет команду HCI_Inquiry
    Прикладной уровень собирается сканировать устройства Bluetooth, хост сначала отправляет команду HCI_Inquiry для уведомления контроллера

  • Контроллер отвечает на событие HCI
    После того, как контроллер получит команду HCI_Inquiry, он будетОтвет на событие HCI с командным статусом, Для представления состояния после того, как Контроллер выполняет HCI_Inquiry, а именноStatus:Success, Если вы посмотрите внимательно, то обнаружите, что метки кадров двух журналов HCI расположены рядом друг с другом, номер кадра HCI_Inquiry равен 196, а номер кадра состояния команд равен 197.

2. Результаты сканирования

Сканирование завершеноПозже контроллер отправит событие:HCI Extended Inquiry Result, Поиск в спискеJabra Classic v0.5.3Например, его пакет результатов расширенного запроса HCI будет содержатьНазвание оборудования, ЭтоUUID поддерживаемого Сервиса,с участиемТип оборудованияWearable Headset deviceПоэтому Icon of Jabra Classic v0.5.3 являетсяЗначок наушников

HCI расширенный запрос Результат Jabra Classic v0.5.3

5. Ссылка

из: рубцевание раны должно
Ссылка: https://www.jianshu.com/p/73f7366161d1
Источник: Цзяньшу
Авторские права принадлежат автору. Для коммерческих перепечаток, пожалуйста, свяжитесь с автором для авторизации. Для некоммерческих перепечаток, пожалуйста, укажите источник.

Интеллектуальная рекомендация

Механизм суждения о мусоре JVM

Механизм суждения о мусоре JVM 1. Метод подсчета цитирования (в основном не используется) Добавьте справочный счетчик в объект. Когда есть место для его упоминания, значение счетчика равна 1 Когда эта.

Читайте также:  Какую колонку блютуз лучше покупать

Qt

Краткое описание QPainterPath( ), , , : 、 、 。 , — , QPainterPathStroker。 | : 、 , 。 QPainterPathStroker , : QPainterPath path, QPainterPathStroker::createStroke(path), path QPainterPath outlinePath,out.

C Note(NO.1)

Ключевые слова: Void, функция: объявления без возвращаемого значения или функции параметров, а оператор не имеет указателя типа. Чар, функция: данные типа символа. Int, функция: целочисленные данные, .

Распределение IBC и Палитра печати CU в HEVC-SCC

Для кодирования изображения содержимого экрана внутреннее предсказание включает в себя обычный режим внутреннего предсказания Intra, внутриблочное копирование IntraBlockCopy и режим палитры Palette. Л.

Индуктивность цветного кольца, PIC Port Output 20170608 Четверг

1. Метод идентификации индуктивности цветного кольца: например: цвет индуктивности цветного кольца: оранжевое золото и серебро. Метод чтения: первые два цветных кольца указывают на эффективное число: .

Источник

Android: как получить информацию о подключенной bluetooth гарнитуре?

К телефону подключена блютуз гарнитура. Есть два вопроса:

1) Как получить информацию о гарнитуре: имя, mac-адрес и состояние сигнала (для оценки расстояние между телефоном и гарнитурой) (как-то можно через RSSI). На стек оверфлоу находил подобный вопрос (stackoverflow.com/questions/7169653/android-rssi-v. но там ответ касается найденных устройств.

2) Как отследить момент отключения гарнитуры (например, гарнитура лежит в комнате, а пользователь с телефоном вышел на улицу, то есть как отследить что сигнал пропал)?

VYakushev

А почему не обратились к официальной документации? Как понимаю для ответа и на первый, и на второй вопрос вам требуется BluetoothAdapter.

VYakushev

Represents the local device Bluetooth adapter. The BluetoothAdapter lets you perform fundamental Bluetooth tasks, such as initiate device discovery, query a list of bonded (paired) devices, instantiate a BluetoothDevice using a known MAC address, and create a BluetoothServerSocket to listen for connection requests from other devices.

Представляет собой локальный адаптер Bluetooth устройств.BluetoothAdapter позволяет выполнять основные задачи Bluetooth, таких как инициализация обнаружения устройств, запрос списка подключенных (спаренных) устройств, обнаружение BluetoothDevice с использованием известно MAC-адреса, а также создавание BluetoothServerSocket для прослушивания запросов на соединение с другими устройствами.

FluffyMan

обращался к офф документации. но отследить уровень сигнала возможно только при обнаружении устройства, находящегося в режиме видимости в момент обнаружения. отследить уровень сигнала подключенного блютуз устройства я не представляю как. гугление наводит на мысль, что это невозможно

VYakushev

Судя по документации, отследить уровень сигнала невозможно. По крайней мере я не вижу ни одной зацепки для этого.

FluffyMan

отследить то можно, но только в момент обнаружения устройства (RSSI )

а мне нужно было отследить уровень сигнала подключенного устройства. что невозможно.

VYakushev

Насколько я понимаю, тогда EXTRA_RSSI инициализируется при создании объекта BluetoothDevice и мы можем написать метод со следующим содержанием:

public String getRSSI(adsress)

Источник

Оцените статью
Adblock
detector