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

TLSR8251 + LCD + термометр = LYWSD03MMC XIAOMI Bluetooth термометр

pvvx

Активный участник сообщества

nikolz

Well-known member
Кто может подсказать, каким образом в OpenWT 22.03.2 на 4-х ядерном CPU график нагрузки превышает 4-ре (ядра)?
Посмотреть вложение 13070
Правда нагрузочный тест CPU специализированный, нереальный для типовых приложений и тестов от обывателей...
5 означает, что у Вас система перегружена.
Для 4 ядер это значение не должно быть больше 4.
 

sL0n1k

Member
Тут меня натолкнули на мысль, что нет повода этому всему блютузу не работать под древними андроидами.
Понятно, что безо всяких лонг рэнжей.
Достал свой древний Philips завел его (еле-еле).
Результат такой (после некоторых правок):

все устройства находятся, причем даже с очень редкой рекламой.

А вот коннект с версией 4.32 не устанавливается (даже с частой рекламой).
С остальными девайсами (канонический Xiaomi и собственные девайсы) коннект устанавливается даже на редкой рекламе.
Есть подозрение, что это связано с установленным битом CLASSIC, хотя..

Фото тут
 

selevo

Member
Надо сделать материал от начала и до конца по этим микроконтроллерам в одном месте например какой-нибудь группе ВКонтакте потому что на этом форуме всё очень раздробленно , неудобно работать с информацией.
К тому же паршивый движок форума и его настройки не позволяют редактировать первую страницу для сбора информации и обновления
 

pvvx

Активный участник сообщества
5 означает, что у Вас система перегружена.
Для 4 ядер это значение не должно быть больше 4.
Это специальный тест нагрузки адаптированный к архитектуре ядер, в данном случае для A55.
При этом прогрев проца предельный, а не как у горе тестировщиков. Потребление при этом более чем заявлено производителем платы.... Ну а писатели системы подсчета нагрузки не в курсе, что проц может так пахать :)
 

pvvx

Активный участник сообщества
все устройства находятся, причем даже с очень редкой рекламой.

А вот коннект с версией 4.32 не устанавливается (даже с частой рекламой).
С остальными девайсами (канонический Xiaomi и собственные девайсы) коннект устанавливается даже на редкой рекламе.
Это из-за ограниченного не по спецификации таймаута при соединении. Утянутые ошибки из Linux в старых Android. Решается патчем и пересборкой ядра :)
Редкая реклама по спецификации от Bluetooth SiG - это с паузами в 10 сек.
 

pvvx

Активный участник сообщества
А кто-то взял и несколько лет назад встроил "исправление" в Linux с ограничением до 2-х секунд. Ну чтобы все пересобрали себе сами kernel :) Далее были версии с разными +- этого таймаута... Так и не исправили по сей день, но сделали интерфейс для смены этого таймаута, т.е. из константы сделали динамическую переменную и функцию её изменения, хотя в стандарте BLE её значение десяток лет не менялось... :) Ну в Android это безобразие Google исправил уже несколько лет назад.
 

pvvx

Активный участник сообщества
Надо сделать материал от начала и до конца по этим микроконтроллерам в одном месте например какой-нибудь группе ВКонтакте потому что на этом форуме всё очень раздробленно , неудобно работать с информацией.
К тому же паршивый движок форума и его настройки не позволяют редактировать первую страницу для сбора информации и обновления
Кол-во кривостей с BLE в разных дистрибутивах Linux и утилитах превышает все разумные пределы и у форума не хватит памяти для их перечисления, а ещё надо описание как их обходить... И это не только ошибки по тематике BLE в Linux - всё остальное в Linux аналогично. Никто читать такое не будет.
 

pvvx

Активный участник сообщества
Для 4 ядер это значение не должно быть больше 4.
В вашей ссылке описана какая-то глупость. При нагрузке даже тем тестом сеть с Ethernet не просаживает и на 50%. Одновременно и пару Iperf работают и не жужат - держат трафик за 600 мегабит всегда на 1 Гбит сетке. Они же на прерываниях... а не тупой idle со счетчиком.
 

pvvx

Активный участник сообщества
Я думаю, можно выжать и 10 единиц загрузки на одном ядре :) Причины в алгоритме счета бездействия CPU.
Ну не доходит до самого низкого уровня задачи idle со счетом "загрузки" и как это может отразиться на задачах с изначально большим приоритетом чем этот idle? Ну занят CPU - он просто работает и все задачи так же отрабатывают... кроме счета бездействия :) Это не Arduino и не Lua.
 

pvvx

Активный участник сообщества
5 означает, что у Вас система перегружена.
Раз уж вы такой "разбирающийся" в градусниках, тогда что тут градусники показывают?
1682157511440.png
Как 0.8 Вт жрет камень c реал пиковым TDP за 200Вт и отводом тепла в 300Вт, при этом греется на +14С от внешнего воздуха и частоту в 200 МГц как AMD посчитало? :)
Вот так и в OpenWRT все подсчеты ныне пыонеры делают...
 

sL0n1k

Member
Это из-за ограниченного не по спецификации таймаута при соединении. Утянутые ошибки из Linux в старых Android. Решается патчем и пересборкой ядра :)
Редкая реклама по спецификации от Bluetooth SiG - это с паузами в 10 сек.
Нет, это не связано с проблемой тайм- аута в 2 сек. Коннект не устанавливается только с перешитыми датчиками на Андроиде 5. С чем это связано - пока нет ясности. Но в любом случае установленный бит classic в рекламе устройства - искажает картину мира. Разве датчик поддерживает classic? Почему бы Вам не сбросить это бит?
 

pvvx

Активный участник сообщества
Нет, это не связано с проблемой тайм- аута в 2 сек. Коннект не устанавливается только с перешитыми датчиками на Андроиде 5. С чем это связано - пока нет ясности. Но в любом случае установленный бит classic в рекламе устройства - искажает картину мира. Разве датчик поддерживает classic? Почему бы Вам не сбросить это бит?
Где там "бит classic" ?
 

pvvx

Активный участник сообщества
Термометры передают "BLE Advertising Data Flags Field" с битом "BR/EDR not supported" и "LE General Discoverable Mode".
"BR/EDR not supported" как раз и говорит, что это не LE classic, а BLE.
И в опциях есть отключение передачи структуры с флагами, но это сделано чтобы уменьшить потребление и чтобы в типовых системных меню BT термометр не отображался у каждого "пионера", т.к. нет флага "LE General Discoverable Mode".
 

pvvx

Активный участник сообщества
Коннект не устанавливается только с перешитыми датчиками на Андроиде 5.
Фрейм передачи рекламы идентичен с официальными прошивками на термометрах.
Различие только в интервалах. И они соответствуют диапазонам спецификации для BLE от Bluetooth SIG.
 

pvvx

Активный участник сообщества
LE only. Возможно 5ый андроид это как то некорректно отрабатывает, да и зачем там classic? Я вообще вижу 'classic and ble' только у Вас. Что это значит, поясните?
Это означает, что передача Flags отключена в меню конфигурации термометра и каждая программа воспринимает как ей нравится.
Путаницы это не создает. Если программа соединяется в режиме с переключением адаптера в LE Classic то соединения не будет, а если в режиме BLE - будет.
 
Сверху Снизу