Для разработчиков 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 слоя абстракции:
Зачем нужны 5 Bluetooth приложений в XIAOMI и что станет с телефоном если удалить Bluetooth?
- User Application(Host)Пользовательское приложение — это прикладной уровень, также называемый Host, мы называем Bluetooth API, относящийся к прикладному уровню, например,BluetoothAdapterИнтерфейс предоставлен в.
- HCI (Host controller Interface): Когда верхний уровень вызывает Bluetooth API,Не будет напрямую манипулировать нижним слоем Bluetooth(Контроллер) связанный интерфейс, ноОтправьте Команду соответствующей операции Контроллеру через HCIИ затем вернуть результат выполнения после того, как нижний уровень выполнит команду,То есть контроллер отправляет событие в HCI, а затем HCI уведомляет прикладной уровеньHCI сыграласредний слойРоль.
- Controller: Контроллер находится на самом низком уровне, который можно понимать как чип Bluetooth на нашем мобильном телефоне.
Абстрактная архитектура Bluetooth
Полная архитектура Bluetooth
2. Как захватить журнал HCI
Открыть в настройках разработчикаВключить журнал сбора информации Bluetooth HCIПереключатель, система Android будет автоматически собирать журнал HCI и сохранять его на телефоне.
РЕЖИМ РАЗРАБОТЧИКА XIAOMI | ОБЗОР ВСЕХ ФУНКЦИЙ, ТЫ ЭТО НЕ ЗНАЛ!
Включить журнал сбора информации Bluetooth HCI
Различные платформы хранят журнал HCI по разным путям.MTKПуть для хранения журнала HCI/sdcard/mtklog/btlog/btsnoop_hci.log,QualcommПуть хранения/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:WindowsSystem32>adb pull /sdcard/mtklog/btlog/btsnoop_hci.log C:UsersadminDesktophci 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 требуется специальное оборудование.
4. Журнал HCI-Bluetooth процесс сканирования устройства анализа процесса
Прикладной уровень вызываетstartDiscovery()При выполнении сканирования устройства,HostВышлю один через HCIInquiry HCI CommandдайтеController, Далее мы изучим процесс запроса, проанализировав журнал HCI. Прежде чем анализировать журнал HCI, давайте изучимПакет команд HCIСтруктура.
4.1 Структура пакета данных HCI Command
Формат пакета данных команды HCI выглядит следующим образом, началоКод операции — это уникальный идентификатор, который различает различные типы команд, Код операции поOpCode Group Field (OGF) с участием OpCode Command Field (OCF)сочинение. В соответствии со значением OGF, команды HCI могут быть классифицированы. Формула вычисления OpCode: ** OpCode = OGF , С помощью метода расчета OpCode мы можемФильтруйте указанный тип Команды HCI в ** Журнале HCI через OpCode.
HCI Command Packet
Метод расчета 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 Анализ процесса сканирования
1. Отправить запрос
- Хост отправляет команду 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
Источник: Цзяньшу
Авторские права принадлежат автору. Для коммерческих перепечаток, пожалуйста, свяжитесь с автором для авторизации. Для некоммерческих перепечаток, пожалуйста, укажите источник.
Интеллектуальная рекомендация
Массив Java
Каталог статей 1. Что такое массив 2. Определение и инициализация массива. 2.1, определение массива 2.2, статическая инициализация массива 2.3, динамическая инициализация 3. Операция с массивом 3.1, и.
Резюме искажено Java
Вчера в проекте возникла искаженная проблема. На моем компьютере все было нормально. Однако искаженная проблема появилась на сервере, поэтому я воспринял искажение как точку, чтобы внимательно понять .
ArcGis Map Map.
R language_for loop
for loop for(var in seq) < expr >Example break statement in for loop next statement in for loop for loop: v2.
Метод динамического добавления среды выполнения
Среда выполнения динамически добавляет методы для поддержания накопления, а конкретные значения реализации и примеры должны быть добавлены позже.
Источник: russianblogs.com
btsnoop_hci.log — что за файл?
- Описание
- Разбираемся
- Вывод
Приветствую. Сегодня поговорим об одном файле, который можете встретить на смартфоне под управлением Андроид.
Описание
btsnoop_hci.log — лог-файл, который создается при прослушивании трафика Блютуз, когда активна функция Журнал Bluetooth HCI.
Разбираемся
- При проведении глубокой очистки можно обнаружить btsnoop_hci.log, который может весить прилично, например более 2 гигабайта.
- По информации в интернете — это отчет, лог, на работу программ никак не влияет, поэтому можно удалить. Только сперва отключите журнал трансляций операций HCI Bluetooth. Если этого пункта нет, значит функция отключена, просто удалите файл.
- Но что вообще за btsnoop_hci.log? Это файл, в который записывают данные о прослушивании трафика Блютуз. Точнее записывается информация о пакетах, обычному пользователю это вряд ли может быть интересно. Но поэтому и размер может быть большой — так как туда постоянно складируются данные, особенно когда Блютуз включен.
Как отключить создание btsnoop_hci.log? На самом деле просто. Сперва откройте настройки устройства:
Далее находим пункт Для разработчиков:
Далее необходимо отключить опцию Включить журнал трансляций операций HCI Bluetooth:
После отключения опции — можно удалить файл btsnoop_hci.log. Он больше появляться не должен.
Пункт также может называться немного иначе, а именно Журнал Bluetooth HCI:
Заключение
- btsnoop_hci.log — файл содержит данные о пакетах трафика Блютуз, чтобы файл не создавался нужно отключить опцию прослушивания Блютуз.
- Сам файл можно спокойно удалить, если вы только не собираетесь анализировать данные. Но лучше перед удалением отключить функцию.
Удачи и добра. До новых встреч друзья!
Источник: virtmachine.ru
Все о функциях разработчика в вашем телефоне
Настройки, которые используются для отладки и для разработки приложений, спрятаны в вашем телефоне – спрятаны в прямом смысле слова. Многие из нас идут в соответствующий раздел меню, чтобы запустить отладку USB или переключиться к рабочему модулю ART, но кроме этого, здесь имеется целый список настроек. Большая часть никогда вам не понадобится, но разве не интересно узнать, что скрывается в недрах вашего устройства?
«Разблокируем» функции разработчика в телефоне
Как говорилось выше, эти функции изначально скрыты. Это имеет смысл, поскольку найти их просто, а большинству людей они попросту не нужны. Для того, чтобы добраться до них, идем в раздел «Об устройстве» и ищем там пункт «Номер сборки». После пяти быстрых тапов появляется диалоговое окно – теперь устройство считает вас разработчиком. Только попробуйте ничего не испортить, ладно?
Ну, или делайте что хотите – тоже вариант. Так или иначе, возможность заставить ваш телефон перестать работать всегда имеется.
А теперь посмотрим на предложенные функции повнимательнее.
Настройки
- Создать отчет об ошибках. Тапаете здесь, чтобы отправить соответствующее сообщение туда, куда вы хотите. Устройство готовит нужные файлы для отправки, что занимает пару минут, после чего вы видите уведомление. Если смахнуть его, процесс остановится, а если тапнуть, сообщение отправится.
- Пароль резервного копирования. Позволяет использовать ADB для создания бэкапа и восстановления приложений и связанных с ними данных на вашем компьютере. Резервное копирование данных требует введения пароля, и без него данные не могут быть восстановлены.
- Активный режим. Выбор этого пункта позволяет вам держать экран работающим постоянно при подключении телефона кабелем к зарядному устройству или к компьютеру по USB. Не стоит использовать этот пункт без надобности, поскольку это верный способ выжечь экран.
- Выбор рабочего модуля. Именно здесь вы можете выбрать между Dalvik и ART. Последний по-прежнему находится в тестовом режиме – это явно не то, что мы увидим в Android L. С некоторыми телефонами у него настоящий антагонизм, поэтому стоит уточнить на соответствующем форуме насчет вашей модели устройства.
- Включить журнал трансляции операций HCI Bluetooth. Иногда разработчику или специалисту по безопасности требуется перехватить и проанализировать пакеты Bluetooth HCI. Включение этого пункта помещает их в файл, который находится во встроенной памяти устройства (/sdcard/btsnoop_hci.log) для восстановления. После этого их можно проанализировать программой типа Wireshark.
- Статистика процессов. Все, что вам может понадобиться узнать о запущенных на вашем устройстве процессах. Тапаете здесь, а потом на одном из пунктов. Для обычного пользователя это просто набор цифр, но для разработчика может быть весьма полезным.
- Отладка USB. То, что позволяет вашему телефону связываться с компьютером, используя Android Debug Bridge (ADB). Это требуется для использования DDMS или команд ADB.
- Отозвать авторизацию отладки USB. Когда отладка при помощи компьютера происходит в первый раз, вам нужно авторизовать его и установить пару ключей. Эта настройка отменяет данное действие и предлагает повторить его снова.
- Отчеты об ошибках. Включает опцию, которая становится видимой, когда вы зажимаете кнопку питания для сбора и отправки отчета об ошибках. Очень удобно, если вы что-то тестируете.
- Фиктивные местоположения. Эта настройка позволяет вам вручную задавать информацию о местоположении, заставляя ваш телефон думать, что он там, где его в действительности нет. Кроме читов для Forsquare, это полезно для приложений, которые используют информацию о местоположении.
- Приложение для отладки. Эта настройка позволяет вам выбрать приложение для отладки. Вам не требуется действительно подключаться к отладчику, но если вы включите его, то не будете получать сообщений об ошибках, когда останавливаетесь на точке останова. Если вы не понимаете, что это значит, тогда эта настройка вам никогда не требовалась и не понадобится. Она создана для работы со средствами разработчика, позволяющими убедиться в том, что приложение работает корректно.
- Подождите, пока отладчик. Этот пункт остается неактивным, пока вы не выберет приложение для отладки. Когда оно установлено и выбрано, то настройка просто не позволяет выбранному приложению запуститься до тех пор, пока не включится отладчик. Еще один пункт, который нужен разработчикам, но бесполезен для большинства пользователей.
- Проверять для USB. Позволяет Google сканировать приложения, которые вы поставили через ADB, на предмет вредоносного поведения. Хорошая вещь.
- Показывать касания. Выбирая этот пункт, вы будете видеть визуальный эффект, подтверждающий регистрацию касания экрана.
- Местоположение указателя. Эта настройка размещает в верхней части экрана строку, в которой выводятся координаты точки экрана, которой коснулись последней.
- Показать обновления экрана. Заставляет край «окна» вспыхивать, когда происходит обновление контекста. Раздражает безумно.
- Показывать границы макета. Отмечает края элементов в окне диалога для того, чтобы вы знали, куда нужно нажать, чтобы активировать его. Попробуйте – и немедленно выключайте.
- Написание справа налево. Изменяет ориентацию экрана для поддержки языков с правосторонним написанием
- Анимация окна: масштаб. Устанавливает скорость воспроизведения анимации окна. Чем меньше число, тем быстрее.
- Анимация перехода: масштаб. Устанавливает скорость воспроизведения анимации при переходе. Опять же, чем меньше, тем быстрее.
- Эмуляция дополнительных дисплеев. Эта настройка позволяет разработчикам имитировать различные размеры экрана. Не самая надежная вещь.
- Рендеринг принудительно. Заставляет приложения использовать аппаратный двухмерный рендеринг, если они были написаны так, чтобы не использовать его по умолчанию. Иногда творит чудеса. Иногда отправляет все к чертям. Будьте бдительны.
- Показать обновления окна. С этой настройкой любая отрисовка, производимая графической подсистемой, получает красную подсветку.
- Показывать аппаратные обновления. Выделяет аппаратные уровни зеленым при обновлении. Зачем это нужно — можете почитать здесь http://www.curious-creature.org/2013/09/13/optimizing-hardware-layers/ (на английском).
- Отладка наложения. Наложение происходит каждый раз, когда приложение запрашивает систему на отрисовку чего-либо поверх чего-то иного. Эта настройка позволяет вам видеть, когда и где это происходит, чтобы видеть, в чем проблема.
- Включить 4х MSAA. Эта настройка принудительно включает множественную выборку сглаживания (MSAA). Как и с любым другим графическим ускорителем, чем больше сглаживания, тем лучше все смотрится. Но скорость работы при этом падает.
- Строгий режим. Эта настройка заставляет экран мигать, когда приложение использует главный поток для выполнения длительной и интенсивной операции.
- Выводить использование ЦП. Размещает в правом верхнем углу небольшое окно с информацией о центральном процессоре и его использовании. Забавная игрушка.
- Профиль обработки GPU. Эта настройка может либо рисовать график на экране, либо писать его в файл. График — визуальное отображение загрузки работы графического адаптера. Еще одна вещь, на которую интересно посмотреть.
- Включить трассеровку OpenGL. Настройка, позволяющая следить за ошибками OpenGL и помещающая их в специальный файл лога по вашему выбору. Ничего такого, что стоило бы трогать большинству пользователей.
- Не сохранять операции. Эта настройка уничтожает любое приложение, как только вы закрываете его окно. Ничего хорошего из этого не выйдет, что бы там на форумах ни писали.
- Фоновые процессы. Позволяет задавать в настройках количество процессов, которые могут одновременно работать в фоне. Еще одна вещь, которую большинству из нас не стоит трогать слишком часто. Если вообще стоит.
- Показать все ANR. Эта настройка заставляет все процессы показать сообщение «Приложение не отвечает», если приложение зависло, включает фоновые процессы, которые не запускаются пользователем. Полезно, если одно приложение мешает нормально работать другому.
Понятно, что большинству пользователей все эти настройки ни на что не сдались. Кроме того, лезть туда и нажимать на пункты меню ради самого процесса — не лучшая идея. Но всегда стоит знать, что вообще можно сделать, хотя бы и просто для того, чтобы не делать этого никогда.
Надеемся, что наш рассказ просветил вас немного по вопросу этих настроек и опций, записанных непонятными словами. Кстати, в зависимости от выбранного языка системы, производителя и версии ОС Android, набор пунктов может несколько отличаться разделами и их названиями.
Источник: android.mobile-review.com