По работе я впервые столкнулся с Bluetooth. Начните с самых базовых знаний. Цитирую введение из вики:
Bluetooth (англ. Bluetooth) — это стандарт технологии беспроводной связи, который позволяет стационарным и мобильным устройствам обмениваться данными на коротких расстояниях с образованием персональной сети (PAN). Он использует короткие радиоволны высокой частоты (УВЧ) для связи через диапазон ISM от 2,4 до 2,485 ГГц. Эта технология была разработана телекоммуникационной компанией Ericsson в 1994 году. Первоначально он был разработан с надеждой создать альтернативу беспроводной связи линии передачи данных RS-232. Он может подключать несколько устройств для решения проблем с синхронизацией. Технология Bluetooth в настоящее время поддерживается Альянсом Bluetooth Technology Alliance (SIG), который насчитывает более 30 000 членов в области телекоммуникаций, компьютеров, сетей и бытовой электроники [5]. IEEE когда-то стандартизировал технологию Bluetooth как IEEE 802.15.1, но этот стандарт больше не используется.
Стандарт Bluetooth — IEEE 802.15.1, а протокол Bluetooth работает в диапазоне частот ISM (Промышленная научная медицина) 2,45 ГГц, который не требует лицензии. Максимальная скорость может достигать 723,1 Кбит/с. Чтобы избежать помех другим протоколам, которые могут использовать частоту 2,45 ГГц, протокол Bluetooth делит полосу частот на 79 каналов (пропускная способность составляет 1 МГц), а преобразование каналов может происходить до 1600 раз в секунду.
Технология Bluetooth разделена на два типа: базовая скорость/повышенная скорость передачи данных (BR/EDR) и низкое энергопотребление (LE). Среди них тип BR/EDR использует топологию сети «точка-точка» для создания связи устройств «один-к-одному»; тип LE использует различные топологии сети, такие как «точка-точка» (один-к-одному); , широковещательная рассылка (один ко многим) и сетка (многие ко многим).
version
Во время передачи данных модуль Bluetooth делится на два режима: ведущий и ведомый. В режиме хоста можно искать другие модули Bluetooth и активно устанавливать с ними соединения. В подчиненном режиме невозможно активно установить соединение, и подчиненное устройство находится в состоянии широковещания и ожидает запроса на соединение с хостом.
ИсследоватьUbertoothOne
(Хотите знатьUbertoothOneВы можете прочитать предыдущие статьи)Прошло много времени,Проблем с пересадкой встроенного сегмента и запуском связанных с ubertooth команд нет. Есть еще некоторые вещи, которые я не понимаю в результатах вывода каждой команды.,Необходимо потратить время на детальный анализ и запись. Результат включает пакетный протокол Bluetooth.,Детальный анализ соответствующих полей пакета данных необходим для более эффективного ведения последующих дел.
Широковещательное сообщение
иДатаграмма
Два вида。Широковещательное сообщение
:Обнаружение устройства、Соединение установлено、передавать трансляциюДатаграмма
:Адаптивная перестройка частоты и передача данных между устройствами Устройства используют широковещательные пакеты для обнаружения других устройств и подключения к ним, а после установления соединения начинают использовать пакеты данных. Будь то широковещательное сообщение или сообщение данных, канальный уровень использует только одно пакет. Состоит из «преамбулы», «кода доступа». код), «полезная нагрузка» и «проверка циклическим избыточным кодом» (Cyclical Redundancy Проверка, CRC) проверка состава кода. Среди них «код доступа» еще называют «адресом доступа/адресом доступа» (access address)。преамбула
:1длина байтов,Используется для синхронизации частоты, синхронизации скорости передачи данных и автоматической регулировки усиления во время приема. Преамбула представляет собой чередующуюся последовательность из 8 бит. Либо 01010101, либо 10101010.,Зависит от первого бита адреса доступа. Если первый бит адреса доступа равен 0: 01010101 Если первый бит адреса доступа равен 1: 10101010Адрес доступа
:4длина байтов,Адрес доступа有Два вида类型(транслировать Адрес доступаиданные Адрес доступа) Адрес широковещательного доступа: фиксированный номер 0x8E89BED6, используется при широковещании, сканировании и инициировании соединений. Адрес доступа к данным: случайный адрес, разные соединения имеют разные значения. Используется между двумя устройствами после установления соединения.PDU
:1. PDU широковещательного сообщения: заголовок PDU широковещательного сообщения.Тип ПДУ:
RFU: зарезервировано. TxAdd: поле адреса отправки. RxAdd: поле адреса получения. Поле адреса отправки и поле адреса получения указывают, использует ли устройство публичный адрес (публичный адрес) или случайный адрес (случайный адрес). Длина публичного адреса и случайного адреса одинакова: они содержат 6 байт и всего 48 бит. Устройство BLE должно иметь хотя бы один из этих двух типов адреса, и, конечно, оно также может иметь оба типа адреса одновременно. Длина: поле длины содержит 6 бит, допустимый диапазон значений — 6–37.
Широковещательное сообщение данных PDUданные:ВключатьNиндивидуальныйAD Структура каждого AD Структура: длина, AD Тип и AD Состав данных. Где: Длина: н.э. Тип и AD Длина данных. ОБЪЯВЛЕНИЕ Тип: указывает AD Данные Значение данных.
#define BLE_GAP_AD_TYPE_FLAGS 0x01 /**< Flags for discoverability. */
#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE 0x02 /**< Partial list of 16 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE 0x03 /**< Complete list of 16 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE 0x04 /**< Partial list of 32 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE 0x05 /**< Complete list of 32 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE 0x06 /**< Partial list of 128 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE 0x07 /**< Complete list of 128 bit service UUIDs. */
#define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME 0x08 /**< Short local device name. */
#define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME 0x09 /**< Complete local device name. */
#define BLE_GAP_AD_TYPE_TX_POWER_LEVEL 0x0A /**< Transmit power level. */
#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE 0x0D /**< Class of device. */
#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C 0x0E /**< Simple Pairing Hash C. */
#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R 0x0F /**< Simple Pairing Randomizer R. */
#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE 0x10 /**< Security Manager TK Value. */
#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS 0x11 /**< Security Manager Out Of Band Flags. */
#define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE 0x12 /**< Slave Connection Interval Range. */
#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT 0x14 /**< List of 16-bit Service Solicitation UUIDs. */
#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT 0x15 /**< List of 128-bit Service Solicitation UUIDs. */
#define BLE_GAP_AD_TYPE_SERVICE_DATA 0x16 /**< Service Data - 16-bit UUID. */
#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS 0x17 /**< Public Target Address. */
#define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS 0x18 /**< Random Target Address. */
#define BLE_GAP_AD_TYPE_APPEARANCE 0x19 /**< Appearance. */
#define BLE_GAP_AD_TYPE_ADVERTISING_INTERVAL 0x1A /**< Advertising Interval. */
#define BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS 0x1B /**< LE Bluetooth Device Address. */
#define BLE_GAP_AD_TYPE_LE_ROLE 0x1C /**< LE Role. */
#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C256 0x1D /**< Simple Pairing Hash C-256. */
#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R256 0x1E /**< Simple Pairing Randomizer R-256. */
#define BLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID 0x20 /**< Service Data - 32-bit UUID. */
#define BLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID 0x21 /**< Service Data - 128-bit UUID. */
#define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA 0x3D /**< 3D Information Data. */
#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA 0xFF /**< Manufacturer Specific Data. */
2. PDU сообщения данных
Заголовок PDU пакета данных
LLID (идентификатор логического канала): 0x01 указывает, что пакет данных является продолжением кадра, или это пустой пакет данных «Протокол управления логическим каналом и адаптации». пакет данных «Протокол» 0x03 указывает, что это содержимое пакета данных «Управление логическим каналом»; NESN: следующий ожидаемый порядковый номер, используемый для подтверждения полученного пакета. MD: больше полей данных, в основном для указания того, есть ли у отправителя еще данные для отправки получателю. RFU : Длина зарезервированного бита: используется для указания того, что он содержит «Код проверки целостности сообщения» (Сообщение Integrity Check,MIC)включено“有效载荷данные”длина。Данные PDU данныхтакой же Широковещательное сообщение данных PDU
Проверить код
:3длина байтов,«Циклическая проверка избыточностью» (Циклическая Redundancy Check, CRC) для проверки правильности данныхЗдесь начинается анализ пакетов Bluetooth, а затем конкретные выходные данные UbertoothOne анализируются в соответствии с протоколом.