Bluetooth PAN¶
Обзор¶
Bluetooth PAN (Personal Area Networking, персональная сеть) позволяет устройству SF32 подключаться к IP-сети по каналу классического Bluetooth. Для доступа в интернет обычно используется режим модема на телефоне. Это может позволить обойтись без отдельного радиомодуля Wi-Fi. PAN — один из профилей классического Bluetooth, описанных в статье Обзор Bluetooth, и один из вариантов транспорта OTA, рассмотренных в статье OTA и DFU.
Рассмотрите PAN для периодического или умеренного IP-трафика: прогноза погоды, синхронизации времени, вызовов облачных API, обмена данными голосового ассистента и загрузки прошивки. PAN позволяет обойтись без отдельной подсистемы Wi-Fi, если её стоимость, занимаемая площадь платы, затраты на интеграцию и энергопотребление перевешивают пользу для данного сценария. Оцените требования к соответствию нормам RF для выбранной аппаратуры и конечного изделия.
Как работает Bluetooth PAN¶
Bluetooth SIG определяет PAN как профиль классического Bluetooth (BR/EDR). Он передаёт пакеты Ethernet-типа по каналу Bluetooth ACL с помощью BNEP (Bluetooth Network Encapsulation Protocol). BNEP работает поверх L2CAP, а не RFCOMM. Для PAN нужны BR/EDR и совместимая реализация профиля, но поддержка BLE не обязательна. Поэтому PAN можно реализовать и на оборудовании, поддерживающем только классический Bluetooth.
PAN не работает поверх BLE. Однако отдельный профиль Internet Protocol Support Profile (IPSP) позволяет передавать IPv6 по BLE. Наличие такой возможности в протоколе не доказывает её поддержку в SiFli-SDK или сервисе раздачи интернета телефона. Ниже сравнивается передача данных GATT через приложение, а не IPSP.
Профиль определяет три роли:
| Роль | Назначение |
|---|---|
| NAP (Network Access Point) | Подключает устройства Bluetooth к внешней сети и пересылает пакеты между Bluetooth-пикосетью и этой сетью. Обычно эту роль выполняет телефон с включённой раздачей интернета/режимом Personal Hotspot. |
| PANU (PAN User) | Клиентская роль. Устройство подключается к NAP (или GN) и использует предоставленный сетевой доступ. Именно эту роль выполняют устройства SF32. |
| GN (Group Ad-hoc Network) | Пересылает пакеты между подключёнными устройствами PANU, не предоставляя доступа к внешней сети. Используется для одноранговой связи между устройствами, а не для выхода в интернет. |
PANU может обнаруживать ближайшие устройства через inquiry и определять их сервис PAN и роль через SDP. Признак Networking в Class of Device — подсказка при поиске, а не доказательство доступности сервиса NAP. После установления ACL и BNEP поверх L2CAP точка NAP пересылает трафик во внешнюю сеть через мост или маршрутизатор, в зависимости от реализации. NAP может быть телефоном или шлюзом LAN, как описано в спецификации PAN. Любая сторона может завершить соединение; в рассматриваемой схеме с раздачей интернета телефоном изменение состояния раздачи может потребовать повторного подключения.
Почему стоит использовать PAN вместо Wi-Fi¶
| Вариант | Когда подходит | Компромисс |
|---|---|---|
| Bluetooth PAN | В изделии уже используется двухрежимный Bluetooth, нужен периодический или умеренный IP-трафик, а телефон обычно находится рядом. | Пропускная способность и дальность связи зависят от BR/EDR и внешнего подключения NAP. Схема с раздачей интернета телефоном зависит от этого телефона; в других архитектурах можно использовать отдельный шлюз NAP. |
| Отдельный радиомодуль Wi-Fi | Изделию нужна высокая постоянная пропускная способность или подключение, не зависящее от телефона. | Добавляет радиомодуль, антенну, работы по интеграции и бюджет энергопотребления. Оцените требования к соответствию нормам RF для выбранного радиокомпонента или модуля и конечного изделия. |
| BLE GATT → приложение-компаньон → интернет | Изделие передаёт небольшие объёмы данных, которые приложение может пересылать в облако. | Такая собственная схема пересылки не даёт устройству прямого IP-подключения. BLE IPSP — отдельный вариант; нужно проверить его поддержку в стеке устройства и шлюзе. Это не PAN. |
Для изделий, которым двухрежимный Bluetooth уже нужен для аудио, сервисов GATT или профилей классического Bluetooth, PAN часто позволяет добавить доступ к интернету с минимальными дополнительными затратами и без второй радиоподсистемы — если сценарий допускает зависимость от находящегося рядом телефона с включённой раздачей интернета.
Передача данных в iOS: ретрансляция через BLE, классический Bluetooth и PAN¶
Важно различать три архитектуры подключения iPhone. Без уточнений утверждение «для классического Bluetooth требуется MFi» слишком широкое: iOS поддерживает стандартные профили Bluetooth, а функция Personal Hotspot также может использовать Bluetooth. Ограничение относится к ситуации, когда приложению iOS нужен собственный канал передачи данных к аксессуару Bluetooth Classic через механизм External Accessory/iAP от Apple. Apple указывает, что External Accessory связывается по Bluetooth с аксессуарами MFi, а в техническом разъяснении уточняет, что BLE-аксессуары используют Core Bluetooth и им не требуется соответствие MFi.
| Архитектура | Канал между устройством и телефоном | Что это означает для изделия под iOS | Скорость передачи данных и инженерные компромиссы |
|---|---|---|---|
| BLE → приложение → интернет | Собственный протокол GATT; приложение iOS принимает данные устройства и пересылает их в облако. | BLE может использовать Core Bluetooth без пути External Accessory/MFi. Приложение должно управлять сопряжением, формированием кадров, повторами, работой в фоне и передачей данных в облако. | Объём полезных данных и расписание BLE ограничены параметрами подключения и поведением iOS/приложения. Этот вариант подходит для небольших периодических объёмов данных, но не обеспечивает общий IP-канал и может стать практическим узким местом при непрерывном или интенсивном трафике. |
| Собственный канал Classic Bluetooth → приложение | Собственный канал данных между аксессуаром Bluetooth Classic и приложением iOS. | Фреймворк External Accessory предназначен для аксессуаров MFi; Apple указывает, что он работает только с аппаратурой MFi. Стандартные поддерживаемые профили — отдельный случай. | Для этого пути нужны аксессуар MFi и поддерживаемый им протокол аксессуара, а также интеграция приложения и проверка соответствия изделия требованиям. Сам по себе этот путь не обеспечивает устройству прямой IP-доступ к сети. |
| Bluetooth PAN → точка доступа телефона → интернет | Стандартное соединение PANU–NAP; SF32 использует Bluetooth-сервис Personal Hotspot/раздачи интернета телефона. | Устройство использует сетевой сервис телефона, а не собственный канал между приложением и аксессуаром. При этом необходимо проверить совместимость телефона, оператора и поведения режима раздачи. | SF32 выполняет собственный IP-клиент без ретрансляции через приложение. Это не доказывает преимуществ перед BLE по скорости или энергопотреблению. На целевых телефонах сравните скорость передачи полезных данных, длительность обновления и затраченную энергию, используя одинаковые данные и сервер. Результаты зависят от Bluetooth-соединения, политики телефона, внешней сети и сервера назначения. |
Для голосового ассистента, клиента OTA и других изделий, которым нужны непрерывная передача данных или прямой обмен по HTTP/WebSocket, PAN может избавить от промежуточного приложения-ретранслятора BLE, но рассматривайте его как кандидата сетевого пути в iOS только после проверки на целевом iPhone и в конфигурации SDK. В примере SiFli v2.5.1 также включён A2DP, чтобы обойти описанную проблему подключения только PAN в iOS; A2DP не является требованием протокола PAN. PAN не заменяет приложение для настройки изделия, аутентификации пользователя, уведомлений или локального управления; он лишь не даёт такой ретрансляции ограничивать канал передачи данных приложения. Голосовой помощник Xiaozhi на SF32 — работающий пример этой архитектуры.
Поддержка устройств SF32¶
Для SF32 выберите семейство с поддержкой классического Bluetooth и проверьте стек PAN, версию SDK и конфигурацию целевой платы. Семейства с поддержкой PAN в таблице используют двухрежимный Bluetooth; это свойство данных устройств SF32, а не требование протокола PAN.
| Семейство | Возможности Bluetooth | Поддержка PAN |
|---|---|---|
| SF32LB52x | Двухрежимный Bluetooth | Да |
| SF32LB55x | Только BLE | Нет — PAN требует классический Bluetooth |
| SF32LB56x | Двухрежимный Bluetooth | Да |
| SF32LB57x | Двухрежимный Bluetooth | Проверьте стек PAN и целевую плату; семейство не указано в примере PAN используемой здесь версии v2.5.1 |
| SF32LB58x | Двухрежимный Bluetooth | Да |
Общие рекомендации по выбору между BLE и двухрежимным Bluetooth см. в статье Обзор Bluetooth.
Пример PAN в SiFli-SDK¶
SiFli-SDK содержит работающую реализацию PANU в example/bt/pan. Она поддерживается на eh-lb52x, eh-lb56x, eh-lb58x и платах серии sf32lb52/56/58-lcd. Пример подключается к сервису PAN (NAP) телефона, а затем демонстрирует реальную работу с сетью с помощью команд оболочки Finsh, в том числе команды weather, которая получает текущий прогноз через установленное соединение PAN. На снимке README показаны поля ответа погодного сервиса: id, name, country, path, timezone, timezone_offset, txt, code, temperature и last_update. В примере указаны Чунцин (CN), Asia/Shanghai (+08:00), 多云 («облачно», код 4), температура 10 и время обновления 2025-01-13T15:54:09+08:00. Это данные прикладного уровня, а не поля PAN/BNEP; значения могут меняться.
При запуске пример включает Bluetooth inquiry и page scan, чтобы телефон мог обнаружить устройство и выполнить сопряжение с ним. Имя устройства Bluetooth по умолчанию — sifli_pan.
Для HTTPS настройте сертификаты по README примера PAN версии v2.5.1. Стандартные сертификаты CA находятся в external/mbedtls_228/certs/default; необходимые дополнительные сертификаты CA поместите в external/mbedtls_228/certs. Требуется формат PEM, а не DER: проверьте наличие -----BEGIN CERTIFICATE----- в содержимом, не полагаясь только на расширение файла. При включённом PKG_USING_MBEDTLS_USER_CERTS в proj.conf сборка объединяет файлы этого каталога в ports/src/tls_certificate.c. Проверьте доверенные корневые сертификаты для фактического сервера. Успешное подключение PAN не доказывает успешную проверку сертификата TLS; проверьте подлинность сервера и время устройства, если проверка срока действия сертификата зависит от него.
В README каталог назван mbedtls_288, но на снимках экрана и в коде генерации сертификатов версии v2.5.1 используется mbedtls_228. Выше указаны пути из реализации. Скрипт принимает только сертификаты, первая строка которых начинается с -----BEGIN CERTIFICATE; сохраняйте этот формат и проверяйте предупреждения сборки о пропущенных файлах.
| Команда | Действие |
|---|---|
pan_cmd conn_pan |
Подключается к PAN после включения на телефоне раздачи сети. |
pan_cmd ota_pan |
Загружает по каналу PAN и устанавливает образ прошивки, указанный в main.c. |
pan_cmd set_retry_flag 1 / 0 |
Включает или отключает автоматическое повторное подключение к PAN. |
pan_cmd set_retry_time N |
Задаёт максимальное число попыток автоматического повторного подключения. |
pan_cmd autoconnect |
Вручную запускает попытку повторного подключения после того, как телефон отключил и снова включил раздачу сети. |
Перед запуском примера проверьте следующие настройки по README указанной версии и для целевой платформы:
- Включите
CONFIG_BLUETOOTH,CONFIG_BT_PROFILE_CUSTOMIZE,CONFIG_CFG_PANиCONFIG_BSP_BT_CONNECTION_MANAGER. В примере также включён A2DP для обхода описанной проблемы iOS с подключением только PAN; протокол PAN сам по себе не требует A2DP. CONFIG_BT_FINSHвключает необязательные команды управления Bluetooth. Сохраните функции оболочки, необходимые для команд, которые планируете проверять.- Настройте
CONFIG_BSP_BLE_NVDS_SYNCв зависимости от процессора, на котором работает Bluetooth: README требует включать его для HCPU и отключать для LCPU. Не копируйте без изменений конфигурацию с другим распределением функций между процессорами. - Для повторного подключения к последнему устройству проверьте
CONFIG_BT_AUTO_CONNECT_LAST_DEVICEиCONFIG_PKG_USING_FLASHDB. Убедитесь, что настройки сохраняются после перезагрузки, и ограничьте число попыток средствами управления повторным подключением из таблицы выше, вместо бесконечных повторов.
Поддержка и проверка мобильных операционных систем¶
Телефон выступает в роли PAN NAP и входит в сетевой тракт изделия; это не просто инструмент первоначальной настройки. Рассматривайте его операционную систему, модель, тарифный план оператора и правила раздачи интернета как часть конфигурации поддерживаемого изделия. Успешного сопряжения Bluetooth недостаточно: телефон должен предоставлять сервис раздачи интернета по Bluetooth (PAN) и маршрутизировать трафик после подключения PANU.
| Мобильная ОС | Что указано в документации платформы | Рекомендации для запуска на SF32 | Границы проверки изделия |
|---|---|---|---|
| iOS / iPadOS с сотовой связью | В документации Apple по Personal Hotspot Bluetooth указан как способ подключения; также сказано, что Personal Hotspot раздаёт сотовый интернет телефона. | Следуйте инструкции SiFli для Xiaozhi на iOS: используйте телефон с активной услугой сотовой связи, включите Personal Hotspot до сопряжения, не отключайте Bluetooth и выполните сопряжение/подключение устройства SF32. Если sifli-pan не отображается, в руководстве SiFli отмечено, что может помочь перезапуск телефона. |
Доступность Personal Hotspot, лимиты трафика и число подключённых устройств зависят от оператора и модели iPhone. Проверьте каждую поддерживаемую версию iOS/iPadOS, класс телефона и тарифный план; не делайте вывод о поддержке только по работе точки доступа Wi-Fi. |
| Android | В справке Android сказано, что большинство телефонов Android могут раздавать мобильный интернет по Bluetooth: сначала выполните сопряжение, настройте сетевое Bluetooth-подключение на другом устройстве, затем включите Bluetooth tethering. | До выполнения pan_cmd conn_pan включите раздачу интернета по Bluetooth. Названия параметров и расположение меню зависят от производителя, версии Android и корпоративных политик; зафиксируйте точный путь для каждого проверенного телефона. |
Google указывает, что функция доступна у большинства, но не у всех телефонов Android. Операторы могут ограничивать раздачу или взимать за неё плату, а производители — скрывать или изменять настройку. Проверьте планируемые к выпуску сочетания телефона, ОС и оператора, а не полагайтесь только на версию Android. |
| HarmonyOS и другие мобильные ОС на основе Android | В этом руководстве нет утверждения о поддержке PAN всей платформой. Реализации Bluetooth и раздачи интернета могут быть основаны на Android, но различаться в зависимости от модели, рынка, версии, настроек оператора или политики управления устройством. | Найдите настройку раздачи интернета по Bluetooth, выполните сопряжение телефона и устройства SF32, затем подтвердите реальный IP-трафик с помощью примера PAN. | Считайте поддержку каждой конкретной комбинации модели телефона, сборки ОС, региона и оператора неподтверждённой, пока она не пройдёт ту же проверку, что и Android. Не заявляйте о поддержке только на основании марки телефона или успешного сопряжения Bluetooth. |
Настройка телефона¶

Это иллюстративная справка по настройкам, а не точный снимок экрана операционной системы. Формулировки и расположение меню зависят от версии iOS/iPadOS, производителя Android и политики управления телефоном. В iOS/iPadOS ищите Allow Others to Join (разрешить подключение других), а в Android — Bluetooth tethering. На снимке iOS для SiFli v2.5.1 также включена Maximize Compatibility. Это пример настройки телефона, а не требование PAN; проверьте, нужна ли она на каждом целевом устройстве.
Для каждого проверяемого телефона выполните следующие действия:
- Проверьте внешнее подключение телефона. Personal Hotspot от Apple раздаёт мобильный интернет; убедитесь, что оператор разрешает раздачу. Некоторые телефоны Android также могут раздавать подключение Wi-Fi, но эту возможность нужно проверить на конкретной модели и сборке ОС.
- До запроса PAN со стороны SF32 включите на телефоне Bluetooth tethering или Personal Hotspot.
- Выполните сопряжение телефона с устройством; если ОС требует, оставьте телефон доступным для обнаружения.
- Выполните
pan_cmd conn_pan, затем проверьте IP-обмен — например, командуweatherиз примера, — а не только успешное Bluetooth-подключение. - Отключите раздачу, переведите телефон в спящий режим и разбудите его, затем унесите телефон за пределы радиуса действия; проверьте, соответствует ли повторное подключение требованиям изделия.
Если раздача включена только после установления Bluetooth-соединения, явно восстановите соединение PAN командой pan_cmd conn_pan.
Составление матрицы поддерживаемых телефонов¶
Для потребительского изделия публикуйте поддерживаемые сочетания модель телефона + версия ОС + оператор/регион, а не просто «iOS» или «Android». Для каждого телефона-кандидата фиксируйте как минимум модель, сборку ОС, оператора, активную услугу сотовой связи и состояние SIM/eSIM, название настройки раздачи, время первого подключения, поведение при повторном подключении после блокировки экрана и потери радиосвязи, результат длительной передачи данных и действия пользователя, необходимые для восстановления связи. Повторяйте проверку после изменения приложения, прошивки PAN, ОС телефона или профиля оператора.
Доставка OTA через PAN¶
В примере PAN поддержка OTA включена по умолчанию: команда pan_cmd ota_pan загружает и устанавливает по тому же каналу Bluetooth PAN, что используется для сетевого трафика, образ прошивки через путь OTA DFU_PAN, описанный вместе со службой обновления прошивки SiFli-SDK. Такой вариант подходит изделиям, которые уже используют PAN для передачи данных и не хотят добавлять второй транспорт OTA. Сравнение PAN с BLE и другими способами обновления см. в статье OTA и DFU; планируйте откат и восстановление независимо от выбранного транспорта.
README также описывает ошибку сборки, когда для выбранной платформы нет подходящего OTA-файла ptab.json. На снимках показано отключение подпроекта DFU и поддержки обновления прошивки в промежуточном ПО (middleware), чтобы проверить пример без OTA. Такой диагностический приём убирает OTA и не подходит для выпуска изделия, которому нужны обновления. Перед включением OTA подготовьте и проверьте правильную разметку разделов и конфигурацию обновления.
PAN предоставляет транспорт, а не гарантию подлинности прошивки или восстановления. Перед выпуском проверьте аутентификацию сервера, подлинность и целостность образа, совместимость платформы и версии, а также восстановление после прерываний. Испытайте потерю связи и отключение питания и подтвердите фактическое восстановление или откат загрузчика; не предполагайте, что команда загрузки образа обеспечивает эти механизмы.
Пример реального изделия SF32 с PAN¶
Проект Голосовой помощник Xiaozhi на SF32 — конкретный работающий пример PAN на SF32: он получает доступ к интернету через сопряжённый телефон и передаёт голосовые данные облачному сервису по этому соединению. Это полезный пример того, как в полном изделии вместе работают сеть PAN, прикладной трафик WebSocket/HTTP и зависимость от раздачи интернета телефоном.
Устранение неполадок¶
README также рекомендует проверять выделение Bluetooth-адреса. Прочитайте адрес командой nvds get_mac. Используйте только OUI, выделенный вашей организации или разрешённый для изделия, и назначайте устройствам уникальные адреса; не копируйте OUI другого производителя из примера. В команде nvds update addr 6 xxxxxxYYYYYY значение YYYYYY означает OUI с обратным порядком байтов, а xxxxxx — остальные три байта адреса. Соблюдайте порядок байтов команды, а не вставляйте отображаемый MAC-адрес без изменений.
CONFIG_NVDS_AUTO_UPDATE_MAC_ADDRESS может перезаписать ручное изменение. Если разрешённый тестовый адрес не сохраняется, README рекомендует отключить эту настройку, пересобрать и записать прошивку, затем снова задать адрес. Это диагностический приём для тестирования, а не политика выделения адресов для производства: перед выпуском проверьте поведение выбранной автоматической или заводской настройки после перезагрузки.
| Симптом | Проверки и действия |
|---|---|
PAN подключён, но сетевые команды (например, weather) завершаются ошибкой |
Проверьте установление BNEP, выделенный IP-адрес, маршрут, DNS, доступность сервера и при необходимости ошибки TLS. README также рекомендует проверять OUI Bluetooth MAC-адреса командой nvds get_mac; изменяйте его через nvds update addr 6 ... только в соответствии с разрешённой политикой выделения адресов. Некорректный OUI — не единственная возможная причина. |
| Телефон не видит устройство или не подключается к нему | Убедитесь, что раздача сети на телефоне включена до подключения, а устройство доступно для обнаружения (активны inquiry/page scan). |
Телефон сопряжён, но weather или другая IP-операция не работает |
Сопряжение не подтверждает наличие сервиса PAN NAP. Проверьте раздачу по Bluetooth/Personal Hotspot и внешнее подключение телефона. Для мобильного интернета нужно разрешение оператора; для раздачи Wi-Fi на Android — поддержка конкретной модели и ОС. Сверьте проверяемое сочетание со списком поддерживаемых. |
| PAN отключается после изменения сетевого состояния телефона | Такое возможно; проверьте поведение на каждом поддерживаемом телефоне. Подключитесь повторно командой pan_cmd conn_pan или включите pan_cmd set_retry_flag 1, ограничив автоматические попытки описанной выше настройкой числа повторов. |
| OTA через PAN прерывается до завершения | Действуйте как при сбое любого транспорта OTA: проверьте URL образа, разметку разделов и откат по инструкции OTA и DFU, а не считайте причиной сам PAN. |
Контрольный список запуска¶
- Проверьте поддержку классического Bluetooth аппаратурой и стек/конфигурацию PAN для конкретных SDK и платы. Пример перечисляет SF32LB52x/56x/58x; SF32LB57x требует отдельной проверки. SF32LB55x поддерживает только BLE.
- Решите, подходит ли зависимость PAN от раздачи интернета телефоном модели подключения изделия или действительно нужен отдельный радиомодуль Wi-Fi.
- Запустите
example/bt/panна целевой плате и проверьте настройку раздачи на телефоне (Personal Hotspot в iOS/iPadOS или Bluetooth tethering в Android). - Проверьте реальное соединение PAN и хотя бы одну сетевую операцию от начала до конца (например, команду
weatherиз примера). - Проверьте каждую предполагаемую модель телефона, сборку ОС, регион/тарифный план оператора и путь к настройке раздачи; не выпускайте изделие с общей формулировкой «поддерживается iOS/Android».
- До использования сетевых функций проверьте корректность OUI Bluetooth MAC-адреса устройства.
- Если PAN используется для OTA, перед выпуском полностью проверьте путь
pan_cmd ota_pan, включая откат. - Настройте повторное/автоматическое подключение (
set_retry_flag,set_retry_time) с учётом того, как часто телефон будет находиться в радиусе действия.
Основные выводы¶
- Bluetooth PAN передаёт IP-трафик Ethernet-типа по BR/EDR с помощью BNEP поверх L2CAP. Поддержка BLE не обязательна. Для IPv6 по BLE используется отдельный профиль IPSP, а не PAN; необходима проверенная поддержка в стеке и шлюзе.
- Устройства SF32 используют клиентскую роль PANU и обычно подключаются к телефону в роли NAP через tethering/Personal Hotspot.
- В iOS BLE-аксессуары могут использовать Core Bluetooth без MFi, но для собственного канала данных между приложением и аксессуаром Bluetooth Classic через External Accessory/iAP требуется MFi. PAN использует сервис раздачи телефона, поэтому SF32 может работать со своим IP-клиентом без ретрансляции через приложение BLE.
- В примере PAN перечислены целевые устройства SF32LB52x/56x/58x. SF32LB57x имеет двухрежимную аппаратуру, но требует отдельной проверки стека PAN и платы; SF32LB55x поддерживает только BLE и не может использовать PAN.
example/bt/panиз SiFli-SDK — работающая эталонная реализация с командами Finsh для подключения, повторного подключения и доставки OTA через PAN.- PAN через телефон подходит для периодического или умеренного IP-трафика, если телефон обычно находится рядом. Для высокой постоянной скорости или работы независимо от телефона оцените отдельный Wi-Fi либо другой независимый сетевой канал; возможен и NAP-шлюз, не являющийся телефоном.
Последнее обновление: