Это вы чипам BLE расскажите. Они вас не понимают и работают на значительно большую дистанцию при Coded PHY.Модуляция не понижается, может только повыситься в два раза, до 2 Мбит, все остальное,мы общем-то просто повтор передачи либо в 2 раза s2, либо в 8 - s8, код там по-моему Хэмминга, а может Соломона))
А такой рекламы не бывает. Все первичные ограничены 31 байтом и должны быть в 1M PHY для BT4.2, а в BT5.0+ там возможен только заголовок без ваших данных и только о указании на вторичный канал, где и будут данные хоть 1 Мегабайт.Ну, как бы ничего))
Я не использую вторичные каналы никак ни на Андроиде ни внизу только первичные s2 8
Где-то на git уже раз 5-ть считал и писал... Точно не помню, но любой знакомый с электроникой может подсчитать сам.Как сильно жрет запись во флеш? У Вас
Это в соответствии со спецификацией)Это вы чипам BLE расскажите. Они вас не понимают и работают на значительно большую дистанцию при Coded PHY.
А такой рекламы не бывает. Все первичные ограничены 31 байтом и должны быть в 1M PHY для BT4.2, а в BT5.0+ там возможен только заголовок без ваших данных и только о указании на вторичный канал, где и будут данные хоть 1 Мегабайт.
Малина моя домашняя работает в таком режиме уже лет шесть, карту не менялBluez при активном сканировании постоянно переписывает файлы с найденными устройствами и если у вас много BLE датчиков, то этот поток непрерывен и все SD в RPi умрут
А опция пассивного сканирования пока "экспериментальная", и встроена в HA bluetooth то после долгих указаний на это безобразие.
Но с эти связаны ещё некотjрые фичи. Проявятся опсоля...
Ка-же долго, уже с 2016 года, Linux не может поддерживать BLE...
Интересно - уже избавились от детсадовского кода в ядре по поводу блокировки BT адаптера на время сканирования?
И так и продолжают при соединении ожидать минимум 2 рекламных события (пару adv интервалов)?
С первого получения-обнаружения рекламы от нужного устройства адаптер BT соединяется влет. Но не в linux.
Про коллизии, я изначально тоже так думал, а потом передумал))Бедные обманутые пользователи Home Assistant.
Чтобы адаптер был помечен как High Performance, должны быть выполнены следующие требования:
- Установить соединение примерно за 1 с или меньше
- Обрабатывать не менее одной рекламы в секунду с устройства без потери данных
- 95% попыток подключения успешны в течение двух попыток
- Соответствует вышеуказанным требованиям с Home Assistant Core 2022.11.1 или более поздней версии и операционной системой Home Assistant 9.3 или более поздней версии.
- Должен быть в состоянии удерживать пять (5) соединений одновременно
Время соединения зависит от интервала рекламы. Смотреть, что там делает Bluez. А так-же смотреть какое соединение у вас выйдет если интервал рекламы установлен на максимум стандарта BLE в 10 секунд и отработает ли ваш адаптер это когда либо. Пользователи Apple плачут...
Количество принятых реклам на нормальном адаптере может достигать более сотни в секунду. И определяется тупым кодом его прошивки и шиной соединения.
Минимально нормальная скорость USB2.0 – это HiSpeed. Никаких FS, как это имеют большинство описанных на странице адаптеров.
Из них только CSR A10 имеет USB2.0 HS. Но он всего BT4.2. И на нем успевают пролезать по шине заголовки HCI составляющие большую часть трафика.
Ограничение скорости PHY у BLE с HCI интерфейсами учитывать нет смысла – там данные зажаты заголовками и прочим превосходящим мусором.
И если у вас рой BLE, то коллизии обеспечены - следовательно потери приема будут обязательно.
PS: в данной статейке только недавно убрали пометку "LongRange" у адаптеров с внешней антенной
Да, так и есть, в моем инструменте разработки я сам это правил, это qt. Могу сообщить, что даже последняя версия Qt, не позволит вам видить long range advert. Но для России Qt все равно уже не доступен. Но это не важно. Поодержка ble браузерами разная. Сафари это не поддерживал вообще, хром и Эдж - рудиментарно только, но месяц назад, мне сообщили, что Гугл приложил просто невероятные усилия, чтобы в ближайшее время все это работало, как из пулемета, ждать осталось недолго ))4 апреля 2022 г., 16:30Google Issue Tracker
issuetracker.google.com
Это эхоВыпуск 148487283, и влияет на все телефоны Android.
Это происходит потому, что BluetoothLeScanner.startScan https://developer.android.com/reference/android/bluetooth/le/BluetoothLeScanner#startScan(java.util.List%3Candroid.bluetooth.le.ScanFilter%3E,%20android.bluetooth.le .ScanSettings,%20android.app.PendingIntent) никак не использовал getPhy() и весь стек вызовов сводится к вызову https://cs.android.com/android/platform/superproject/+/masterackages/modules /Bluetooth/system/stack/btm/btm_ble_gap.cc;l=1937;drc=c7b713eba636b891d4c9710555cf0b6cac65ec6c , которые вызывают btsnd_hcic_ble_set_extended_scan_params https://cs.android.com/android/platform/superproject/+/masterackages/system /стек/btm/btm_ble_gap.cc;l=1937;drc=c7b713eba636b891d4c9710555cf0b6cac65ec6c с жестко запрограммированным 1 Мб физ.
Поэтому невозможно сканировать в режиме Coded Phy.
Тут ничего не могу сказать, но setphy это правильный путь только не с таким параметром, сейчас не помню точно, если надо посмотрюНичего?
Понижение модуляции дает прибавку в дальности и в совокупности с доп. кодированием это дает теоретическое увеличение дальности связи в не менее 4 раза. Практика и все сторонние тесты устойчиво показывает что дальность свзяи увеличивается от 2-х раз. Читайте спецификации, тесты и сами проверьте.
И вот пример на английском, раз вы не понимаете по русски, что такое и как включить LongRange :
Я тестирую на двух телефонах: Pixel 4 с Android 10 и Sony Xperia L3.
Оба утверждают, что поддерживают Bluetooth LE PHY Coded (BluetoothAdapter#isCodedPhySupported).
Я использую nRF Connect для Android для тестирования. Приложение может сканировать пакеты только в том случае, если основной PHY имеет значение PHY LE 1M. Если и первичный, и вторичный PHY настроены на «Закодировано», эти телефоны ничего не найдут. Однако OnePlus 6 возвращает результат примерно через 10 секунд, что указывает на проблему с контроллером.
Протестировано с S=8. Я вижу пакеты с помощью Ellisys Bluetooth Analyzer. Когда основная реклама отправляется по PHY-коду, эти 2 телефона не возвращают ни одного устройства.
Это также можно проверить с двумя телефонами и nRF Connect, установленным на обоих. Используйте один для рекламы и один для сканирования. Если реклама настроена на использование закодированного физического уровня как для первичного, так и для вторичного физического уровня, пакеты будут видны на анализаторе Ellisys, но не на телефоне.
Кроме того, когда BluetoothLeScanner использует ScanSettings.Builder#setPhy(BluetoothDevice.PHY_LE_CODED), сканер также возвращает только 1M пакетов, и не выдается никаких ошибок, что закодированный phy не будет поддерживаться. В этом случае ожидаемым результатом будет как минимум отсутствие сообщений об устройствах.
Что-то я не совсем понимаю. Вы мне прислали это скрин где Ваш девайс переключен в long range и Вы это видите своим телефоном, так? Если так, то Вы не верите своим глазам или что? )) Проясните плизТестовая прошивка с поддержкой 'Extended Advertising' и 'LongRange' для LYWSD03MMC.
Файл https://github.com/pvvx/ATC_MiThermometer/blob/master/LR_v99.bin
.
После сброса питания прошивка работает в стандартном протоколе '1M PHY'.
Сброс и замена питания отключает 'Расширенную рекламу' и 'LongRange'.
Для включения режима «Расширенная реклама» в TelinkMiFlasher установите:
'EXT.ADV' без 'LongRange' включает передачу рекламы в формате LEGACY_CONNECTABLE_SCANNABLE_UNDIRECTED.
'LongRange' - включает передачу основной и расширенной рекламы в формате 'Coded PHY' c S8 и версию EXTENDED_CONNECTABLE_UNDIRECTED.
Далее следует, что приемная сторона поддерживает 'Расширенную рекламу' в режиме 'LongRange', а если нет – вытащите и вставьте батарейку.