Перейти до основного вмісту

Bluetooth

Скануйте навколишні пристрої Bluetooth Low Energy, переглядайте рівень сигналу та рекламні дані, досліджуйте GATT-сервіси та характеристики, а також переглядайте живі дані від підключених периферійних пристроїв.

Екран огляду з елементами керування скануванням і пристроями, відсортованими за RSSI.
Кожен рядок пристрою показує його назву, RSSI та чи можна підключитися.

Огляд

Інструмент Bluetooth використовує фреймворк CoreBluetooth від Apple для роботи як центральний пристрій BLE (Bluetooth Low Energy) і сканування навколишніх периферійних пристроїв. Він відображає кожен знайдений пристрій разом із поточним рівнем сигналу (RSSI), рекламними даними та статусом підключення. Ви можете підключатися до пристроїв, які підтримують підключення, щоб переглядати їхні GATT-сервіси та характеристики, читати значення, підписуватися на сповіщення та переглядати виробничі дані.

Зміст


Екран огляду

Екран огляду — це основний екран інструменту Bluetooth. Він містить рядок пошуку, картку стану з елементами керування скануванням і прокручуваний список знайдених пристроїв.

Текстове поле у верхній частині екрана фільтрує список пристроїв за назвою. Введення запиту миттєво звужує список до пристроїв, у яких рекламована або периферійна назва містить текст пошуку (без урахування регістру). Кнопка очищення з'являється, коли поле не порожнє.

Картка стану Bluetooth

Картка стану відображає:

  • Стан Bluetooth із поточним станом радіо, кольорове кодування:
    • Увімкнено (зелений) — Bluetooth активний і готовий до сканування.
    • Вимкнено (червоний) — радіо Bluetooth вимкнено.
    • Не дозволено (помаранчевий) — користувач заборонив доступ до Bluetooth для додатка.
    • Не підтримується (червоний) — апаратне забезпечення пристрою не підтримує Bluetooth.
    • Невідомо / Скидання (сірий) — система ще визначає стан Bluetooth.
  • Кнопка керування скануванням (доступна лише коли Bluetooth увімкнено):
    • Зупинити сканування (червоний) — зупиняє активне сканування.
    • Почати сканування (зелений) — починає сканування навколишніх пристроїв.

Сканування починається автоматично при відкритті інструменту, якщо Bluetooth увімкнено.

Список пристроїв

Знайдені пристрої відображаються у прокручуваному списку, відсортованому за RSSI (від найсильнішого сигналу). Список оновлюється в реальному часі, коли з'являються нові пристрої або оновлюються рекламні дані існуючих.

Рядок пристрою

Кожен пристрій відображається у вигляді картки, що містить:

  • Іконку Bluetooth у круглій мітці. Біла дуга поверх кола заповнюється пропорційно силі сигналу пристрою (0–100%).
  • Назва пристрою — рекламована локальна назва або периферійна назва. Пристрої без назви відображаються як [No Name].
  • RSSI — отримана сила сигналу в дБ (наприклад, RSSI: -43 dB).
  • Індикатор статусу у нижньому лівому куті, що показує одне з:
    • Підключено (зелений) — пристрій наразі підключено.
    • Можна підключити (синій) — пристрій повідомляє, що приймає підключення.
    • Сервіси: N — кількість GATT-сервісів, які пристрій рекламує (відображається, якщо сервіси присутні, але пристрій ще не підключено).
    • (без мітки) — пристрій не підтримує підключення і не рекламує сервіси.
  • Індикатор справа:
    • Зелена галочка, якщо пристрій підключено.
    • Шеврон (>) — якщо пристрій підтримує підключення (натисніть для перегляду деталей).
    • Текст Не підключається, якщо пристрій не приймає підключення.

Натисніть на рядок пристрою, щоб перейти до екрану деталей пристрою.

Порожні стани

Екран огляду показує контекстні порожні стани:

  • Сканування — іконка лупи з анімацією завантаження, поки триває початкове сканування і ще не знайдено жодного пристрою.
  • Bluetooth вимкнено / не підтримується — перекреслена іконка Bluetooth із поточним станом і підказкою увімкнути Bluetooth.
  • Сканування зупинено — іконка Bluetooth із кнопкою Почати сканування, коли Bluetooth увімкнено, але сканування зупинено вручну і список порожній.

Екран деталей пристрою

Натискання на рядок пристрою відкриває окремий екран деталей. Екран поділений на область заголовка, індикатор сили сигналу та три вкладки з вмістом.

Заголовок і підключення

Заголовок містить:

  • Кнопку назад (< Devices) для повернення до екрана огляду.
  • Назву пристрою, що відображається помітно.
  • Індикатор стану підключення — кольорова крапка поруч із міткою:
    • Підключено (зелений)
    • Підключення (помаранчевий)
    • Відключено (червоний)
    • Відключення (помаранчевий)
  • Кнопку Підключити / Відключити (відображається лише для пристроїв, які підтримують підключення):
    • Підключити (синій) — ініціює BLE-підключення. Показується індикатор завантаження під час встановлення з'єднання.
    • Підключення... (синій, неактивний) — відображається під час спроби підключення.
    • Відключити (червоний) — розриває активне підключення.

Після встановлення підключення інструмент автоматично знаходить усі GATT-сервіси та їх характеристики. Читабельні характеристики зчитуються одразу, а ті, що підтримують сповіщення, підписуються автоматично.

Індикатор сили сигналу

Секція сили сигналу надає детальний, реальний огляд радіосигналу пристрою:

  • Круговий індикатор — дуга, що заповнюється від 0% до 100% з кутовим градієнтом (червоний → помаранчевий → жовтий → зелений). Поточне значення RSSI у dBm відображається в центрі.

  • Орієнтовна відстань — зручна оцінка, розрахована на основі RSSI:

    Діапазон RSSIМітка
    -30 до -50 dBmДуже близько
    -51 до -65 dBmБлизько
    -66 до -80 dBmСередньо
    -81 до -90 dBmДалеко
    Менше -90 dBmДуже далеко
  • Смуги сигналу — індикатор із 5 смуг, що заповнюються залежно від відсотка сили сигналу.

  • Якість сигналу — текстова мітка: Відмінно (>80%), Добре (>60%), Задовільно (>40%), Слабко (>20%), Дуже слабко (<=20%).

  • RSSI — сире значення у dBm.

  • TX Power — рівень потужності передавача у dBm, якщо пристрій його рекламує. Це значення відображає силу сигналу на відстані 1 метра від передавача і може використовуватися для оцінки відстані.

  • Історія сигналу — рухома гістограма останніх 20 значень RSSI, кольорове кодування (зелений >= -60, жовтий >= -75, червоний < -75). Це допомагає візуалізувати стабільність сигналу з часом.

Вкладка Інформація

Вкладка Інформація відображає загальні відомості про пристрій у вигляді рядків ключ-значення:

ПолеОпис
НазваРекламована або периферійна назва (або [No Name]).
ІдентифікаторUUID периферійного пристрою, призначений CoreBluetooth. Це локальний ідентифікатор, а не фактична MAC-адреса пристрою.
RSSIПоточна сила сигналу в дБ.
TX PowerПотужність передавача у dBm (відображається лише якщо рекламується пристроєм).
Можна підключитиЧи приймає пристрій BLE-підключення (Так / Ні).
СтанПоточний стан підключення (Підключено, Підключення, Відключено, Відключення).
ВиявленоЧас, коли пристрій був вперше знайдений під час цієї сесії сканування.
Останнє оновленняЧас останньої реклами або оновлення RSSI.

Під рядками ключ-значення з'являються дві додаткові секції, якщо пристрій надає відповідні дані:

  • Рекламовані сервіси — список UUID GATT-сервісів, які пристрій включає у свої рекламні пакети. Відомі стандартні сервіси відображаються з людиночитаною назвою поруч із UUID (наприклад, 180F (Battery Service), 180A (Device Information)). Див. Відомі сервіси для повного списку.
  • Виробничі дані — сирі виробничі дані з реклами, відображені у вигляді hex-рядка. Перші два байти кодують ідентифікатор компанії Bluetooth SIG (у форматі little-endian).

Вкладка Сервіси

Вкладка Сервіси доступна лише коли пристрій підключено. Вона показує повне дерево GATT-сервісів і характеристик, знайдених під час підключення.

Кожен сервіс відображається як розширюваний рядок:

  • Кольорова іконка, що вказує категорію сервісу:
    • Синій — Загальні сервіси (Generic Access 1800, Generic Attribute 1801)
    • Зелений — Battery Service (180F)
    • Помаранчевий — Device Information (180A)
    • Фіолетовий — Вендорські сервіси (UUID, що починаються з FE)
    • Сірий — Інші / невідомі сервіси
  • Назва сервісу (визначена за UUID для відомих сервісів) і сирий рядок UUID.
  • Мітка з кількістю характеристик, що належать до цього сервісу.
  • Шеврон, що обертається при розгортанні сервісу.

Відомі сервіси

UUIDНазва сервісу
1800Generic Access
1801Generic Attribute
180ADevice Information
180FBattery Service
1812HID (Human Interface Device)
1813Scan Parameters
1819Location and Navigation
181CUser Data
FE59Apple Notification Center

Розгортання сервісу відкриває його характеристики. Кожен рядок характеристики містить:

  • Кольорова іконка залежно від основної властивості (фіолетова для читання+запису, синя для лише читання, зелена для лише запису, помаранчева для лише сповіщення, сіра в інших випадках).
  • Назва характеристики (визначена за UUID для відомих GATT-характеристик) і сирий рядок UUID.
  • Мітки властивостей — невеликі кольорові позначки для кожної підтримуваної властивості:
    • Read (синя) — значення можна зчитати на вимогу.
    • Write (зелена) — значення можна записати з підтвердженням.
    • Write No Response (світло-зелена) — значення можна записати без підтвердження.
    • Notify (помаранчева) — характеристика може надсилати оновлення центральному пристрою.
    • Indicate (світло-помаранчева) — як Notify, але з підтвердженням.
    • Auth (фіолетова) — характеристика вимагає автентифікованого підписаного запису.
  • Кнопка-перемикач ока (відображається, якщо характеристика має значення). Натискання відкриває поточне значення характеристики у кількох форматах:
    • Hex — сирий байтовий рядок.
    • String — інтерпретація як UTF-8, якщо байти утворюють коректний текст.
    • Числовий — автоматична інтерпретація залежно від довжини байтів:
      • 1 байт: значення UInt8
      • 2 байти: значення UInt16
      • 4 байти: значення UInt32 і Float

Відомі характеристики

UUIDНазва характеристики
2A00Device Name
2A01Appearance
2A04Peripheral Preferred Connection Parameters
2A05Service Changed
2A19Battery Level
2A23System ID
2A24Model Number String
2A25Serial Number String
2A26Firmware Revision String
2A27Hardware Revision String
2A28Software Revision String
2A29Manufacturer Name String
2A2AIEEE 11073-20601 Regulatory Certification Data List
2A50PnP ID

Вкладка Дані

Вкладка Дані показує живі, інтерпретовані дані з підключеного пристрою. Якщо пристрій не підключено, відображається підказка з кнопкою Підключити (для пристроїв, які підтримують підключення) або інформаційне повідомлення.

Після підключення вкладка показує до трьох карток:

  • Виробничі дані — виробничий рекламний корисний навантаження:

    • ID виробника — визначається з перших двох байтів (little-endian) виробничих даних. Відомі ID: Apple (0x004C), Microsoft (0x0006), Samsung (0x0075), Xiaomi (0x038F), Bosch (0x01D7). Невідомі ID відображаються у hex (наприклад, ID: 0x1234).
    • Сирі дані — повний hex-дамп байтів виробничих даних.
    • Візуалізація байтів — горизонтальна гістограма, де кожна смуга відповідає одному байту. Висота смуги пропорційна значенню байта (0–255), що дозволяє швидко оцінити структуру даних.
  • Значення характеристик — список усіх характеристик, які мають читабельне значення. Кожен запис містить:

    • Назву характеристики (або UUID, якщо невідома).
    • Інтерпретоване значення (як байт, UInt16, UInt32/Float, UTF-8 рядок або hex залежно від довжини даних).
    • Невелику гістограму байтів для значень до 8 байтів, смуги кольорові за величиною (синій < 30%, зелений < 60%, жовтий < 80%, червоний >= 80%).
    • Значення оновлюються автоматично для характеристик, що підтримують сповіщення.
  • Інформація про підключення — метадані часу та сигналу:

    • Виявлено — час, коли пристрій був вперше знайдений, із зазначенням часу, що минув з моменту виявлення.
    • Останнє оновлення — час останнього оновлення даних, із TX Power, якщо доступно.

Дозволи та вимоги

  • Дозвіл на Bluetooth — CoreBluetooth вимагає, щоб користувач надав доступ до Bluetooth. Якщо дозвіл відхилено, Lirum показує екран дозволів із кнопкою для відкриття налаштувань iOS, щоб користувач міг повторно надати доступ.
  • Радіо Bluetooth — якщо Bluetooth вимкнено, інструмент залишається доступним, але елементи керування скануванням вимкнені, а порожній стан підказує увімкнути Bluetooth. У цьому випадку екран дозволу не відображається.
  • Дозвіл на Bluetooth керується системою; немає окремої кнопки "запросити дозвіл". Системне вікно з'являється автоматично при першій ініціалізації CoreBluetooth.

Технічні деталі

  • Інструмент працює як BLE Central за допомогою CBCentralManager. Він сканує всі навколишні периферійні пристрої (scanForPeripherals(withServices: nil)), тобто знаходить пристрої незалежно від того, які сервіси вони рекламують.
  • RSSI (Received Signal Strength Indicator) зазвичай знаходиться в діапазоні -30 dBm (дуже сильний, пристрій дуже близько) до -100 dBm (дуже слабкий, пристрій далеко або з перешкодами). Інструмент нормалізує цей діапазон до шкали 0–100% за формулою: (RSSI + 100) / 70.
  • Для підключених пристроїв RSSI опитується кожні 2 секунди за допомогою readRSSI(). Фільтр шуму пригнічує оновлення менше 2 дБ для зменшення візуальних стрибків.
  • При підключенні інструмент викликає discoverServices(nil) для переліку всіх GATT-сервісів, потім discoverCharacteristics(nil, for:) для кожного сервісу. Читабельні характеристики зчитуються автоматично через readValue(for:), а ті, що підтримують сповіщення, підписуються через setNotifyValue(true, for:).
  • TX Power (CBAdvertisementDataTxPowerLevelKey) відображає силу сигналу на відстані 1 метра від передавача. Коли відомі і TX Power, і RSSI, їх різниця може використовуватися для оцінки втрат на шляху та приблизної відстані.
  • Виробничі дані (CBAdvertisementDataManufacturerDataKey) відповідають формату Bluetooth SIG: перші два байти — ідентифікатор компанії у форматі little-endian, далі — вендорські байти.
  • Ідентифікатор периферійного пристрою, що відображається у вкладці Інформація, — це UUID, призначений CoreBluetooth на локальному пристрої. Він стабільний між запусками додатка для одного пристрою, але не є фактичною MAC-адресою Bluetooth (яку iOS не розкриває).

Примітки та обмеження

  • Доступна інформація залежить від того, що рекламує кожен периферійний пристрій і що iOS надає через CoreBluetooth. Деякі пристрої рекламують мінімум даних.
  • Багато пристроїв відображаються як [No Name], оскільки не включають локальну назву у свої рекламні пакети.
  • Оцінки орієнтовної відстані — це лише приблизні орієнтири на основі порогів RSSI. Фактична відстань може значно відрізнятися залежно від оточення, перешкод, орієнтації антени та потужності передавача.
  • Не всі пристрої, які підтримують підключення, успішно підключаються. Деякі вимагають попереднього спарювання через налаштування iOS, а деякі можуть відхиляти підключення від невідомих центральних пристроїв.
  • Класичні Bluetooth-пристрої (не BLE) не видно через CoreBluetooth і не з'являться у результатах сканування.
  • Значення RSSI можуть швидко змінюватися через багатошляхові перешкоди, поглинання тілом та інші фактори середовища. Гістограма історії сигналу допомагає візуально згладити ці коливання.

Усунення несправностей

  • Не знайдено пристроїв — переконайтеся, що Bluetooth увімкнено, залишайтеся на екрані Bluetooth кілька секунд і натисніть Почати сканування, якщо сканування зупинено.
  • Дозвіл відхилено — натисніть кнопку Відкрити налаштування на екрані дозволу та повторно надайте доступ до Bluetooth для Lirum у налаштуваннях конфіденційності iOS.
  • Не вдається підключитися — можливо, пристрій вимагає спарювання у налаштуваннях iOS, не підтримує підключення від сторонніх додатків або вийшов із зони дії.
  • Вкладка Сервіси порожня — деякі пристрої не надають сервісів або затримують їх виявлення. Зачекайте кілька секунд після підключення. Якщо сервіси не з'являються, пристрій може не підтримувати стандартні GATT-профілі.
  • Значення характеристик відображаються лише у hex — інструмент намагається інтерпретувати значення як UTF-8 текст і поширені числові типи. Якщо жодна інтерпретація не підходить, відображається сирий hex-дамп.