• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

TLSR825x и Offloaded scan batching

aloika

Active member
Тут интересное выяснилось. Устройство на TLSR8253 в моем исполнении не виделось некоторыми моделями телефонов OnePlus, Honor и Redmi. Т.е. просто в результатах сканирования устройство не появлялось и всё. Как будто бы его нет. Как будто рекламы нет.

Но оказалось, что если в NFR Connect в параметрах сканирования включить Offloaded scan batching (500 ms), то устройство начинает сканироваться на этих телефонах.

1666882985405.jpeg

Кто-нибудь знает, что это? Почему так?
 

pvvx

Активный участник сообщества
"в моем исполнении" байтики пакета рекламы и рекламный интервал в студию.
Причин может быть несколько.
Linux был испорчен кентами из Intel - если рекламный интервал более 2-х секунд, то фиг вам всё в Linux...
Windows не видит устройства, если в рекламе нет структуры "флага"...
 

pvvx

Активный участник сообщества
+ ещё про смарты, современные, модели этого года с 5G и т.д.:
Тестировал несколько смартфонов и разные USB-BT5. Все программы и спецификация говорит что тянут BT5+ (LongRange-CodedPHY и 2M модуляции).
1666916099140.png
Но ни один из протестированных не ловит расширенную рекламу в LongRange-CodedPHY, описанную в стандарте BT5. Ловят только на 1M PHY. И пофиг цена смарта или адаптера. (В инете рекомендуют какой-то специфический смарт и спец.адаптер - типа они могут :))
На 1M PHY дрова Андроида заточили, переключение при соединении на любую PHY - тоже, но остальное забросили, хотя там сложности для реализации = нулю. Кто-то мешает. Наверно ZigBee :), т.к. иначе дальность связи у BLE увеличиться в 3..4 раза (за 1 км по прямой).
В "nRF Connect" надо переключать галку в setup (что-то связанное с типовыми - забыл какую) чтобы смарт принимал типовую расширенную рекламу на 1M PHY.
1666916276810.png
Ещё не пробовал точно, что там с "Periodic Advertisement" - но в совсем древней статье (по приведенной ссылке) указано:
"Примечание . Периодическая реклама — это новая функция. это еще не реализовано в телефонах. Следовательно, периодические рекламные пакеты не будут видны на мобильных платформах и в приложениях для сканирования Bluetooth."

Интересно, сколько ещё десятков лет пройдет, пока впихнут полную реализацию в смарты BT5.0?

А вы страдаете с первыми недо-реализациями BT4.0 (даже не 4.2) в совсем дешевых смартах?
 

pvvx

Активный участник сообщества
включить Offloaded scan batching (500 ms)
Google "Offloaded scan batching"
Android 5.0 - Официальный выход состоялся 3 ноября 2014 года... смартам 8 лет?

Для проверки рекламы "в моем исполнении" всё есть в "nRF Connect". Копируете байтики своей рекламы в соответствующем меню, ставите интервал и включаете. На другом аппарате смотрите...
 

aloika

Active member
"в моем исполнении" байтики пакета рекламы и рекламный интервал в студию.
Причин может быть несколько.
Linux был испорчен кентами из Intel - если рекламный интервал более 2-х секунд, то фиг вам всё в Linux...
Windows не видит устройства, если в рекламе нет структуры "флага"...
blc_ll_setAdvParam(ADV_INTERVAL_50MS, ADV_INTERVAL_50MS, ADV_TYPE_CONNECTABLE_UNDIRECTED, OWN_ADDRESS_PUBLIC, 0, NULL, BLT_ENABLE_ADV_ALL, ADV_FP_NONE);

C:
const u8    tbl_advData[] = {
     12, DT_COMPLETE_LOCAL_NAME,                 'S','W','B','D','d','r','v','_','m','c','5',
     2,     DT_FLAGS,                                 0x05,                     // BLE limited discoverable mode and BR/EDR not supported
     3,  DT_APPEARANCE,                         0x80, 0x01,             // 384, Generic Remote Control, Generic category
     5,  DT_INCOMPLT_LIST_16BIT_SERVICE_UUID,    0x12, 0x18, 0x0F, 0x18,    // incomplete list of service class UUIDs (0x1812, 0x180F)
};
 

aloika

Active member
Для проверки рекламы "в моем исполнении" всё есть в "nRF Connect". Копируете байтики своей рекламы в соответствующем меню, ставите интервал и включаете. На другом аппарате смотрите...
Да, было бы проще, если бы у меня был в доступе такой телефон, на котором это проявляется. На всех моих телефонах корректно работает. Нет у меня ни OnePlus, ни Хоноров, ни Redmi...
 

aloika

Active member
В продолжение темы.

Есть такой вот телефон - он рекламу не видит ни в какую:
1667732179637.png
А есть вот такая древность - отлично работает:
1667732421349.jpeg

Как угадать заранее? От чего зависит?
 

pvvx

Активный участник сообщества
Зависимость возможна от флагов в рекламном пакете:
У вас "LE limited discoverable mode", а для обнаружения в Windows системном меню BT желательно "LE General Discoverable Mode".
С этими флагами по сей день большая путаница. Было нечеткое описание в стандарте и производители имеют разную реализацию что с этими флагами делать. Путаница и неоднозначности по сей день, теперь в Bluez...

Режимы обнаружения

  • Необнаруживаемый режим — другие сканирующие устройства не могут обнаружить присутствие периферийного устройства в необнаруживаемом режиме. Периферийное устройство использует этот режим, чтобы не быть обнаруженным и не подключенным к одноранговому устройству. Для того же эффекта периферийное устройство может объявить с флагами ADV_NONCONN_IND или ADV_SCAN_IND, установленными в поле Flag AD в рекламном пакете.
  • Режим ограниченного обнаружения — в поле флага AD рекламного пакета устанавливается флаг ограниченного обнаружения, и устройство может быть обнаружено в течение ограниченного времени с более низким приоритетом. Периферийное устройство в режиме ограниченного обнаружения может быть обнаружено только центральным устройством, которое следует процедуре ограниченного обнаружения.
  • Общий режим обнаружения — в этом режиме периферийное устройство может быть обнаружено центральным устройством, пока оно рекламирует. Как правило, цель состоит в том, чтобы быть обнаруженным и установить соединение, поэтому общий флаг обнаружения устанавливается в поле флага AD рекламного пакета.
 

pvvx

Активный участник сообщества
В Android так-же ранее были шатания. Но с "LE General Discoverable Mode" должно работать. Последнее, что можно найти не капая сам код Android-а - типа эти флаги передаются в приложение и ему решать что творить.
Но видно, что с этими флагами будет ещё много подводных камней - к примеру с активным сканированием. Пока все рассмотренные мной реализации игнорируют эти флаги и лепят запрос сканирования любому, что тоже есть неоднозначность в определении смысла данных флагов...
 

pvvx

Активный участник сообщества
Есть такой вот телефон - он рекламу не видит ни в какую:
...
Как угадать заранее? От чего зависит?
От производителя. На некоторых моделях, особенно на дорогих, есть ошибки именно с этим флагом. И их никто справлять не собирается. Есть много запросов на исправление, но писателям софта к этим моделям - пофиг. Так и дублируют с новой версией Android.
Возможно что им не понять что это за флаги из-за запутанного описания в стандарте BT или из-за сложностей перевода и тупости (какие-то индусы не владеющие переводчиком или просто тупые).
В iOS та-же каша...
 

aloika

Active member
Флаг в рекламном пакете поменял на LE General Discoverable Mode (0x06), всё то же самое. Гипотеза не сработала, к сожалению...

Тут еще мысль появилась. Другое устройство на телинке на этом телефоне видно, а это не видно. Рекламу уже одинаковую сделал - всё равно такая ситуация. А разница у них в маках: на одном A4:C1:38:xx:xx:xx (оно видно), на другом 94:C9:60:xx:xx:xx (оно не видно).

Сейчас человек попробует залить в устройство с "видимым" маком прошивку от "невидимого" устройства. Проверим. Может, вообще не в прошивке дело, а в маке.

Хотя тут оба мака проверяются корректно.
 

aloika

Active member
Флаг в рекламном пакете поменял на LE General Discoverable Mode (0x06), всё то же самое. Гипотеза не сработала, к сожалению...

Тут еще мысль появилась. Другое устройство на телинке на этом телефоне видно, а это не видно. Рекламу уже одинаковую сделал - всё равно такая ситуация. А разница у них в маках: на одном A4:C1:38:xx:xx:xx (оно видно), на другом 94:C9:60:xx:xx:xx (оно не видно).

Сейчас человек попробует залить в устройство с "видимым" маком прошивку от "невидимого" устройства. Проверим. Может, вообще не в прошивке дело, а в маке.

Хотя тут оба мака проверяются корректно.
Нет, от мака не зависит. От прошивки зависит.
 

aloika

Active member
В общем, пока не могу понять, в чем дело. Есть две прошивки, на разных SDK (single и multi). Параметры рекламы стоят одинаковые, в nrf connect выглядят одинаково, посмотрел сниффером (там, правда, не особо что видно) - но тоже одинаково.
И этим вот загадочным телефоном (не моим) реклама одной прошивки (single) видится, а реклама другой - нет. Моими телефонами обе видны.

Девайсы перешивали крест-накрест - дело в прошивке, не в девайсах.
 

aloika

Active member
Проблема вроде бы решилась. По крайней мере, на том телефоне, на котором реклама не виделась - теперь нормально видится. Просто пересобрал прошивку под самую новую (на данный момент) мульти-сдк. И всё заработало.

В чем именно дело - непонятно. В nrf-connect обе рекламы выглядят одинаково, в сниффере -тоже. Других инструментов исследования нет. Или я о них не знаю.

Я рад, конечно.
 

pvvx

Активный участник сообщества
В некоторых SDK для BLE есть устанавливаемая задержка паузы при передаче рекламы между каналами (там ещё должно быть и время приема запроса на сканирование/соединения после TX, но этих установок не видел). Для Telink я не смотрел где она (есть куча всяких структур описанных в хидерах), т.к. всё работает и так.
Это тоже может влиять. Адаптер может не успевать следовать за каналами, т.к. при сканировании они обычно смотрят-прыгают за рекламой по 3 каналам. А сниффер опрашивает один канал...
 

Riska

New member
+ ещё про смарты, современные, модели этого года с 5G и т.д.:
Тестировал несколько смартфонов и разные USB-BT5. Все программы и спецификация говорит что тянут BT5+ (LongRange-CodedPHY и 2M модуляции).
Посмотреть вложение 12458
Но ни один из протестированных не ловит расширенную рекламу в LongRange-CodedPHY, описанную в стандарте BT5. Ловят только на 1M PHY. И пофиг цена смарта или адаптера. (В инете рекомендуют какой-то специфический смарт и спец.адаптер - типа они могут :))
На 1M PHY дрова Андроида заточили, переключение при соединении на любую PHY - тоже, но остальное забросили, хотя там сложности для реализации = нулю. Кто-то мешает. Наверно ZigBee :), т.к. иначе дальность связи у BLE увеличиться в 3..4 раза (за 1 км по прямой).
В "nRF Connect" надо переключать галку в setup (что-то связанное с типовыми - забыл какую) чтобы смарт принимал типовую расширенную рекламу на 1M PHY.
Посмотреть вложение 12459
Ещё не пробовал точно, что там с "Periodic Advertisement" - но в совсем древней статье (по приведенной ссылке) указано:
"Примечание . Периодическая реклама — это новая функция. это еще не реализовано в телефонах. Следовательно, периодические рекламные пакеты не будут видны на мобильных платформах и в приложениях для сканирования Bluetooth."

Интересно, сколько ещё десятков лет пройдет, пока впихнут полную реализацию в смарты BT5.0?

А вы страдаете с первыми недо-реализациями BT4.0 (даже не 4.2) в совсем дешевых смартах?
Подскажите, пожалуйста, какой софт используется на данных скринах?
 
Сверху Снизу