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

BLE SoC PHY6202

cool2000

Member
Но там вроде главное описано:
«Если инициатор отправил PDU CONNECT_IND в ответ на PDU ADV_IND или AD_DIRECT_IND и в одном или обоих PDU устройства поле ChSel установлено в 0, то в соединении должен использоваться алгоритм выбора канала № 1. В противном случае следует использовать алгоритм выбора канала №2».
По этому по умолчанию и пытался выставить CSA2
Именно, что в режиме расширенной рекламы в запросе на соединение от nRF Connect этот флажок (бит 0x20) не установлен, т. е. по стандарту должен использоваться алгоритм CSA, но соединяется только если на phy принудительно выставить CSA2. Если переключить рекламу на phy в Legacy Mode, то этот флажок в запросе присутствует.

Но в режиме coded PHY даже с принудительно выставленным CSA2 всё равно не получается установить соединение. Игрался с таймингами целый день сегодня. Ни единого раза не принял ни одного пакета в режиме RTLP. Пока вообще непонятно в чём причина, принимается ли хотя бы ответ от phy на запрос на соединение?
Надо пробовать с аппаратным сканером. У меня есть модуль с E104-BT12(TLSR8253F512). Ваш проект TLSR825x_ADV_BLE2UART можно для этого использовать?
 

pvvx

Активный участник сообщества
Ваш проект TLSR825x_ADV_BLE2UART можно для этого использовать?
Нет - он флаги не дает. У него другие цели.
Для приема всех флагов используете USB-BT адаптер на RTL8761BU в Linux. Можно глядеть в BT мониторе или исправить сканер.
Старый вариант hcitool (не знаю, будет ли работать с новым Bluez) который пробовал дописать - тут
Но для флагов и прочего лучше использовать Wireshark с BT сканером.
В Widows есть какая-то отладка https://learn.microsoft.com/ru-ru/windows-hardware/drivers/bluetooth/testing-btp-setup-package
Код:
Windows 10
Пакет разработчика оборудования для Windows, который включает инструмент, поддерживающий захват трафика Bluetooth непосредственно в Wireshark.

Установка
Скачайте и установите Wireshark .
Загрузите и установите программный пакет BTP .
Захват
Для захвата трафика Bluetooth:

Откройте терминал от имени администратора.
Стартовое меню поиска для cmd. (Powershell и Windows Terminal тоже подойдут.)
Щелкните правой кнопкой мыши командную строку и выберите « Запуск от имени администратора» .
Запустить C:\BTP\vX.X.X\x86\btvs.exe. Это должно автоматически запустить Wireshark в режиме захвата.
Версия должна соответствовать установленной версии - vX.X.X заменить на текущую версию.
 

pvvx

Активный участник сообщества
Запускаете BTP, потом в PHY62x2BTHome.html сканирование и в Wireshark глядим...
1711737482122.png
В данном случае адаптер PCIe WiFi6 с BT5.3 шедший с мамкой...
Т.е. любой имеющийся. Выходит некое подобие BT сканера в Винде.
 

cool2000

Member
Нет - он флаги не дает. У него другие цели.
Ясно.
pvvx написал(а):
Запускаете BTP, потом в PHY62x2BTHome.html сканирование и в Wireshark глядим...
Так уж получилось, что у меня нет под рукой компьютера с Windows. Не было необходимости несколько лет. На старом, на котором стояла 7-ка, умер HDD :(.

В идеале, мне только нужно сосканировать расширенную рекламу в LE coded, затем послать запрос на соединение и отобразить что принимается. Можно собрать сканер на CC2652, но хотелось бы попроще, чтобы обойтись без пайки.
 

pvvx

Активный участник сообщества
Но как это исправить (где и кого запатчить в винде) я не знаю:
101 21:34:21,501152 host controller 12 HCI_CMD Sent LE Set Extended Scan Parameters
1711738174439.png
Принудительно ставит сканирование только 1M PHY.
 

pvvx

Активный участник сообщества
Так уж получилось, что у меня нет под рукой компьютера с Windows.
В Linux команды переключения адаптера на Coded PHY давно давал.
Но утилиты, названные устаревшими в Bluez, но так и поставляемые с ним при сканировании и соединении переключают адаптер обратно.
Но это запатчить проще и вставить переключение на Coded PHY - к ним исходники есть.
Во всяком случае интеграция bluetooh в HA пока не переключает PHY адаптера. Пока, потом может встроят, чтобы было неповадно использовать LE LR обывателям :)
 

pvvx

Активный участник сообщества
А интеграция Пассивного монитора переключает адаптер на 1M, т.к. использует Bleak. А Bleak не хочет чтобы пользователи могли использовать что-то современное с 2014 года.
Наверно им всем кто-то платит за такие услуги. Запросы на поддержку BT5+ просто будут закрывать...
 

pvvx

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

pvvx

Активный участник сообщества
Для сс2652 есть проект Sniffle на github. Попробую собрать и посмотреть насколько он рабочий.
От nRF сканер в Винде в Wireshark сканирует только 1M PHY. Как переключить с ходу не нашел.

----

Вспомнил - надо жать на круглую иконку. :)
1711747285248.png
1711747308918.png
 

pvvx

Активный участник сообщества
Никаких CSA в рекламе нет.
Для справки что выдает Wireshark на устройство в Coded PHY
Код:
Frame 3459: 64 bytes on wire (512 bits), 64 bytes captured (512 bits) on interface COM26-4.2, id 0
nRF Sniffer for Bluetooth LE
    Board: 26
    Header Version: 3, Packet counter: 49943
        Length of payload: 57
        Protocol version: 3
        Packet counter: 49943
        Packet ID: 2
    Length of packet: 10
    Flags: 0x21
        .... ...1 = CRC: Ok
        .... .00. = Aux Type: AUX_ADV_IND (0)
        .... 0... = Address Resolved: No
        .010 .... = PHY: LE Coded (2)
        0... .... = Reserved: 0
    Channel Index: 1
    RSSI: -76 dBm
    Event counter: 0
    Timestamp: 3223106253µs
    [Packet time (start to end): 3088µs]
    [Delta time (end to start): 334µs]
    [Delta time (start to start): 1502µs]
Bluetooth Low Energy Link Layer
    Access Address: 0x8e89bed6
    .... ..00 = Coding Indicator: FEC Block 2 coded using S=8 (0)
    Packet Header: 0x2507 (PDU Type: AUX_ADV_IND, TxAdd: Public)
        .... 0111 = PDU Type: 0x7 AUX_ADV_IND
        ...0 .... = Reserved: 0
        ..0. .... = Reserved: 0
        .0.. .... = Tx Address: Public
        0... .... = Reserved: 0
        Length: 37
    Extended Advertising Header
        ..00 1001 = Extended Header Length: 9
        01.. .... = Advertising Mode: Connectable Non-scannable (0x1)
        Extended Header Flags: 0x09
            .... ...1 = Advertiser Address: Present
            .... ..0. = Target Address: Not Present
            .... .0.. = CTE Info: Not Present
            .... 1... = Advertiser Data Info: Present
            ...0 .... = Aux pointer: Not Present
            ..0. .... = Sync Info: Not Present
            .0.. .... = TX Power: Not Present
            0... .... = Reserved: Not Present
        Advertising Address: TelinkSemico_61:4e:04 (a4:c1:38:61:4e:04)
        Advertiser Data Info: 0x01a5
            .... 0001 1010 0101 = Advertiser Data Identifier: 0x1a5
            0000 .... .... .... = Advertiser Set Identifier: 0x0
    Advertising Data
        Flags
            Length: 2
            Type: Flags (0x01)
            000. .... = Reserved: 0x0
            ...0 .... = Simultaneous LE and BR/EDR to Same Device Capable (Host): false (0x0)
            .... 0... = Simultaneous LE and BR/EDR to Same Device Capable (Controller): false (0x0)
            .... .1.. = BR/EDR Not Supported: true (0x1)
            .... ..1. = LE General Discoverable Mode: true (0x1)
            .... ...0 = LE Limited Discoverable Mode: false (0x0)
        Service Data - 16 bit UUID
            Length: 11
            Type: Service Data - 16 bit UUID (0x16)
            UUID 16: Allterco Robotics ltd (0xfcd2)
            Service Data: 4000c10c680b1000
        Device Name: MHO_614E04
            Length: 11
            Type: Device Name (0x09)
            Device Name: MHO_614E04
    CRC: 0x4980ed

0000   1a 39 00 03 17 c3 02 0a 21 01 4c 00 00 cd b2 1c   .9......!.L.....
0010   c0 d6 be 89 8e 00 07 25 49 09 04 4e 61 38 c1 a4   .......%I..Na8..
0020   a5 01 02 01 06 0b 16 d2 fc 40 00 c1 0c 68 0b 10   .........@...h..
0030   00 0b 09 4d 48 4f 5f 36 31 34 45 30 34 92 01 b7   ...MHO_614E04...
 

pvvx

Активный участник сообщества
Wireshark pcapng соединения nRFConnect с устройством в другой комнате в LE LR .
 

Вложения

pvvx

Активный участник сообщества
Запрос: Master_0x69d8853c Slave_0x69d8853c 36 LE LL Control Opcode: LL_FEATURE_REQ

Feature Set: 0x000000000701f9ff
.... ...1 = LE Encryption: True
.... ..1. = Connection Parameters Request Procedure: True
.... .1.. = Extended Reject Indication: True
.... 1... = Slave Initiated Features Exchange: True
...1 .... = LE Ping: True
..1. .... = LE Data Packet Length Extension: True
.1.. .... = LL Privacy: True
1... .... = Extended Scanner Filter Policies: True
.... ...1 = LE 2M PHY: True
.... ..0. = Stable Modulation Index - Transmitter: False
.... .0.. = Stable Modulation Index - Receiver: False
.... 1... = LE Coded PHY: True
...1 .... = LE Extended Advertising: True
..1. .... = LE Periodic Advertising: True
.1.. .... = Channel Selection Algorithm #2: True
1... .... = LE Power Class 1: True
.... ...1 = Minimum Number of Used Channels Procedure: True
.... ..0. = Connection CTE Request: False
.... .0.. = Connection CTE Response: False
.... 0... = Connectionless CTE Transmitter: False
...0 .... = Connectionless CTE Receiver: False
..0. .... = Antenna Switching During CTE Transmission (AoD): False
.0.. .... = Antenna Switching During CTE Reception (AoA): False
0... .... = Receiving Constant Tone Extensions: False
.... ...1 = Periodic Advertising Sync Transfer - Sender: True
.... ..1. = Periodic Advertising Sync Transfer - Receiver: True
.... .1.. = Sleep Clock Accuracy Updates: True
.... 0... = Remote Public Key Validation: False
...0 .... = Connected Isochronous Stream - Central: False
..0. .... = Connected Isochronous Stream - Peripheral: False
.0.. .... = Isochronous Broadcaster: False
0... .... = Synchronized Receiver: False
.... ...0 = Connected Isochronous Stream (Host Support): False
.... ..0. = LE Power Control Request: False
.... .0.. = LE Power Control Request: False
.... 0... = LE Path Loss Monitoring: False
...0 .... = Periodic Advertising ADI support: False
..0. .... = Connection Subrating: False
.0.. .... = Connection Subrating (Host Support): False
0... .... = Channel Classification: False
.... ...0 = Advertising Coding Selection: False
.... ..0. = Advertising Coding Selection (Host Support): False
.... .0.. = Periodic Advertising with Responses - Advertiser: False
.... 0... = Periodic Advertising with Responses - Scanner: False
0000 .... = Reserved bits: 0

Ответ: Slave_0x69d8853c Master_0x69d8853c 36 LE LL Control Opcode: LL_FEATURE_RSP

Feature Set: 0x000000000000593d
.... ...1 = LE Encryption: True
.... ..0. = Connection Parameters Request Procedure: False
.... .1.. = Extended Reject Indication: True
.... 1... = Slave Initiated Features Exchange: True
...1 .... = LE Ping: True
..1. .... = LE Data Packet Length Extension: True
.0.. .... = LL Privacy: False
0... .... = Extended Scanner Filter Policies: False
.... ...1 = LE 2M PHY: True
.... ..0. = Stable Modulation Index - Transmitter: False
.... .0.. = Stable Modulation Index - Receiver: False
.... 1... = LE Coded PHY: True
...1 .... = LE Extended Advertising: True
..0. .... = LE Periodic Advertising: False
.1.. .... = Channel Selection Algorithm #2: True
0... .... = LE Power Class 1: False
.... ...0 = Minimum Number of Used Channels Procedure: False
.... ..0. = Connection CTE Request: False
.... .0.. = Connection CTE Response: False
.... 0... = Connectionless CTE Transmitter: False
...0 .... = Connectionless CTE Receiver: False
..0. .... = Antenna Switching During CTE Transmission (AoD): False
.0.. .... = Antenna Switching During CTE Reception (AoA): False
0... .... = Receiving Constant Tone Extensions: False
.... ...0 = Periodic Advertising Sync Transfer - Sender: False
.... ..0. = Periodic Advertising Sync Transfer - Receiver: False
.... .0.. = Sleep Clock Accuracy Updates: False
.... 0... = Remote Public Key Validation: False
...0 .... = Connected Isochronous Stream - Central: False
..0. .... = Connected Isochronous Stream - Peripheral: False
.0.. .... = Isochronous Broadcaster: False
0... .... = Synchronized Receiver: False
.... ...0 = Connected Isochronous Stream (Host Support): False
.... ..0. = LE Power Control Request: False
.... .0.. = LE Power Control Request: False
.... 0... = LE Path Loss Monitoring: False
...0 .... = Periodic Advertising ADI support: False
..0. .... = Connection Subrating: False
.0.. .... = Connection Subrating (Host Support): False
0... .... = Channel Classification: False
.... ...0 = Advertising Coding Selection: False
.... ..0. = Advertising Coding Selection (Host Support): False
.... .0.. = Periodic Advertising with Responses - Advertiser: False
.... 0... = Periodic Advertising with Responses - Scanner: False
0000 .... = Reserved bits: 0
 

cool2000

Member
Никаких CSA в рекламе нет.
Из 2.3.3.1. CONNECT_IND and AUX_CONNECT_REQ
The ChSel field in the AUX_CONNECT_REQ PDU header is reserved for future use.
Значит ли это, что для соединения после расширенной рекламы должен использоваться только CSA2?

Нет под рукой чем открыть pcapng, содержимое и тайминги отдельных пакетов отображаются, в частности ответ на AUX_CONNECT_REQ?
 

cool2000

Member
Обновил файлы в репозитории. Пока не доделан sleep (для выставления точных интервалов используется TIM6, а он не сохраняется/восстанавливается) и не работает соединение для расширенной рекламы в режиме LE Coded.
 

cool2000

Member
Сканер сделали?
В процессе. Пока собрал проект с настройками по умолчанию. API UART у Texas немного поменялось. И надо кое-что ещё переделать в проекте. У меня нет LaunchPad-а, только модуль с CC2652 от EBYTE. У модуля управление антенным усилителем и переключателем отличается от LaunchPad-ов TI, под которые проект заточен.
Уже подзабылось за пару лет, когда собирал ZigBee координатор и к тому же HDD с настроенной средой сборки умер. Хорошо что остались копии.
Дальше будет отдельный квест с подключением и прошивкой модуля. В этом плане LaunchPad конечно удобнее. В своё время пожидился, не купил, теперь уже купить очень сложно.
 
Сверху Снизу