• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 и заброшено.
 
Сверху Снизу