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

BLE SoC PHY6202

pvvx

Активный участник сообщества
PHY внешний. Но значит AMD должна пилить стек. Поглядим, как это произойдет, т.к. в спеках заявлено:
*OS SupportWindows 11 - 64-Bit Edition , Windows 10 - 64-Bit Edition , RHEL x86 64-Bit , Ubuntu x86 64-Bit
Или AMD начиталось китайцев и Coded PHY и прочее откинет как необязательное для BT5.4 :) :)
 

cool2000

Member
Как обычно, налепят блобов.
Скорее всего уже это сделали. Останется только драйверы подтянуть для взаимодействия с ОС
 

pvvx

Активный участник сообщества
Проблема в Linux в том, что блобами ничего не исправить. Нет API, а кернел не умеет правильно управлять котроллером BT.
Т.е. если у вас BT адаптер 5.0, то соединения с Coded PHY не получить. И прочие фишки - нет всей части 5.0 для управления через DBUS.
Как итог - адаптер будет работать в максимуме как BT4.2, да ещё с неправильными настройками, не по стандарту от Bluetooth SIG.
 

pvvx

Активный участник сообщества
А невозможность прогонять команды BT5.0 через DBUS - это значит нет возможности прокинуть работу в вируталку, Docker, ...
И там в конце сидит Home Assistant и прочие "Вумные домики", где как раз и требуется работа с IoT.
И это не лечится добавкой костылей в Bluez. Там нужно переписывать весь интерфейс, который уже и так наворочен в сторону бардака.
 

pvvx

Активный участник сообщества
Из-за навороченного бардака по HCI с адаптером уже проще работать, чем через API Bluez и Bleak. От этого и продвинутые пользователи не могут освоить Bluetooth. :p
В Zigbee ситуация не лучше. Там отсебятины 90%, особенно в Z2M.
 

cool2000

Member
Итак, получилось переключиться в Coded PHY в проекте simpleBlePeripheral.
После правки интервала pGlobal_config[LL_HW_RX_TO_TX_INTV_500KPHY] = 10; переключение заработало. У китайцев стояло 2. Только почему-то phyplus отвечает в Coded_S2, а не в Coded_S8. Скорее всего у китайцев путаница с enum-ами. Что ещё интересно: g_system_clk = SYS_CLK_XTAL_16M;. В проекте с расширенной рекламой extBlePeripheral и неработающим соединением g_system_clk = SYS_CLK_DLL_48M;.
 

cool2000

Member
Похоже, что переключение в Coded_S8 через LL Setup вообще не предусмотрено.
C:
void llSetNextPhyMode0( llConnState_t* connPtr )
{
    ...
    else if((connPtr->phyUpdateInfo.m2sPhy & LE_CODED_PHY) >0)
    {
        connPtr->llRfPhyPktFmt = PKT_FMT_BLR500K;
    }
 

cool2000

Member
Поменял в llSetNextPhyMode1 connPtr->llRfPhyPktFmt = PKT_FMT_BLR125K; //PKT_FMT_BLR500K; и поправил интервал pGlobal_config[LL_HW_RX_TO_TX_INTV_125KPHY] = 32;, заработало переключение в Coded_S8. Каким-нибудь образом регламентируется, какой вариант должно выбирать периферийное устройство в ответ на запрос на переключение?
C:
void init_config(void)
{
...
#if USE_CODED_PHY
    JUMP_FUNCTION(LL_SET_PHY_MODE)                  =   (uint32_t)&LL_SetPhyMode1;
    JUMP_FUNCTION(LL_PHY_MODE_UPDATE)               =   (uint32_t)&LL_PhyUpdate1;
    JUMP_FUNCTION(LL_SET_NEXT_PHY_MODE)             =   (uint32_t)&llSetNextPhyMode1;
#endif
Думаю, что и расширенная реклама заработает в режиме LE Coded PHY, если поставить g_system_clk = SYS_CLK_XTAL_16M;. Подождём, что ответят китайцы.
 

cool2000

Member
Судя по всему, активировать алгоритм CSA2 в режиме Legacy Advertising не обязательно, переключается в Coded и если не выставлять флажок CONN_CSA2_ALLOW.
 

pvvx

Активный участник сообщества
Каким-нибудь образом регламентируется, какой вариант должно выбирать периферийное устройство в ответ на запрос на переключение?
В других SDK задается при инициализации как приоритет при подключении просто параметром функции, аналогично с 1M, 2M, Coded PHY.
 

cool2000

Member
В других SDK задается при инициализации как приоритет при подключении
Ясно, тогда можно добавить по аналогии.

В общем, я разобрался. Это я протупил и не проверил инициализацию g_system_clk в patch.c.
Оказалось, что из EFUSE_BLOCK_3 читаются одни нули. А там, по идее, должно быть записано всяко-разно, chip version, lotnum, timestamp и т.д. В результате, получалось, что принудительно ставился g_system_clk = SYS_CLK_DBL_32M; и все ТЧ для RF блока формировались по-другому. Это кстати касается и версии Keil.
В текущёй версии Coded PHY принимается без задержек только с g_system_clk SYS_CLK_XTAL_16M и SYS_CLK_DLL_48M. Скорее всего это можно исправить, но без описания регистров это будет гадание на кофейной гуще.
В общем соединение Coded PHY в режиме расширенной рекламы работает, осталось убрать отладку, немного причесать и подстроить интервалы поточнее и тему можно считать закрытой.
 

pvvx

Активный участник сообщества
А как быть с Zigbee? :)
Там 250K PHY поддерживается?
 

cool2000

Member
А как быть с Zigbee? :)
Там 250K PHY поддерживается?
Теоретически ;). Радио часть есть в DTM, но нет библиотеки самого стека ZigBee. Если есть такое в открытом доступе, желательно с открытой лицензией, то можно прикрутить.

Пока пытаюсь раскрутить китайцев на исходники. Прислали обновление библиотеки libphy6222_rf.a для gcc, но опять без исходников и без расширенной рекламы.

При внимательном рассмотрении всё равно оказалось, что задержка прерывания в режиме приёма Coded PHY не 40, а 100мкс. Но после корректного выставления частоты g_system_clk = SYS_CLK_DLL_48M; стали укладываться в 150мкс на ответ: ~40мкс теперь требуется для подготовки и отправки ответа.
 

pvvx

Активный участник сообщества
А ESP32 Zigbee разве без исходников? (конкретно не смотрел ещё)

Посмотрел - блобы :)

ZBOSS и Espressif Zigbee SDK предоставляются в виде предварительно созданной библиотеки:

  • esp-zboss-lib : библиотеки ZBOSS для SoC серии ESP32.
  • esp-zigbee-lib : Espressif Zigbee SDK и библиотеки API.
 

pvvx

Активный участник сообщества
Всё как всегда закрытое - https://dsr-zboss.com/#!/

У Silabs вроде всё просто, всё скачал, но не собирал, мельком глядел описание... Собрать координатор там просто - для этого готовые заготовки от Silabs.
По этой причине энтих прошивок для Z2M и прочих море...
 

pvvx

Активный участник сообщества
У Telink в Zigbee сокрыты только функции непосредственно работающие с RF, а сам стек и обвязка - открытые.

> Есть смысл делать комбинированную прошивку BLE Legacy/Coded phy?

Без этого никак. Без Legacy никто не сможет подключиться - Web Bluetooth API не умеет сканировать Coded PHY и доработка этого API закрыта - виновник Linux.
В Win-де через силу ещё можно добраться до Coded PHY соединения, но в Linux - нет.
А Google ориентирован на Android - там половину пробили и бросили из-за других ОС...
 

pvvx

Активный участник сообщества
Уже писал - если при сканировании в Chrome на Android включить Legacy или ext.рекламу на 1M, а когда устройство появится в списке, переключить рекламу и соединение на CodedPHY, то соединение все равно произойдет. Ему для соединения нужен MAC. А сканирование в Coded PHY не задействовано.
На этой стадии Web API и заброшено.
 
Сверху Снизу