5.3 KiB
5.3 KiB
Protocol 2 Worklog - 2026-04-14
Что подтверждено
- Устройство корректно находится по Protocol 2.
- Для
Orion MkII / boardID 5рабочий RX действительно идёт черезDDC2, то есть поток приходит сUDP 1037. - Реальное железо шлёт обратный трафик не на отдельные локальные порты
1025/1037/..., а на локальный ephemeral-порт сессии. - Поэтому схема с отдельными
QUdpSocketдля status/DDC не работала на реальном трансивере, хотя по tcpdump трафик был виден. - После перехода на приём через общий сокет входящие IQ начали реально доходить:
dgrams > 0samples > 0iqFrames > 0
iq_queueи упаковка в legacy-кадр уже не являются первичным блокером: спектр/водопад появляются хотя бы кратковременно.
Что уже исправлено в коде
Protocol 2 mapping и пакеты
- Добавлен high-end mapping
RX1 -> DDC2,RX2 -> DDC3дляboardID 3/4/5/10. High Priorityпишет RX частоты в реальные DDC-слоты.- Добавлена запись
DUC frequencyвHP bytes 329..332. DDC Specificотправляется полным пакетом1444байта.- Sample rate в
DDC Specificпередаётся вksps, а не вHz. - В
General Packetисправлены:DUC Specific port = 1026Mic data port = 1026Hardware watchdog enablePA enable
- Добавлен минимальный
DUC/TX Specificпакет.
Сокеты и входящий трафик
- Исходно была реализована схема с отдельными UDP-сокетами под
1025,1037и т.д. - По tcpdump выяснилось, что реальный Orion MkII шлёт status/DDC/mic обратно на локальный порт командного сокета.
- После этого реализован приём как в
pihpsdr:- один основной сокет с локальным session-port
- demux по
source port 1025 -> status1026 -> mic1035+N -> DDC IQ1027 -> wideband
Диагностика
- Добавлены счётчики:
dgramssamplesiqFrameshpTxhpRx
- Добавлен периодический лог состояния RX.
Что показывают последние логи
hpTxпродолжает расти.hpRxпродолжает расти.- Значит:
- общий UDP сокет работает
QSocket/readyRead()не является основным подозреваемым- status-трафик живой
- Но
dgramsпо DDC останавливаются на фиксированном числе. - Это означает, что после короткого времени именно радио перестаёт слать
DDC IQ, при том что control/status канал остаётся жив.
Что уже проверено как гипотезы
- Только
HPв heartbeat. HPкаждые50 ms.- Только
HP + DDC Specific. - Цикл, близкий к
pihpsdr:HPкаждые100 msTX Specific/RX Specificпо очередиGeneralраз в800 ms
Поведение меняется, но DDC поток всё равно обрывается.
Что нужно сделать следующим
Нужен лог с разбивкой по входящим source port, чтобы зафиксировать точную картину после остановки RX потока.
Ожидаемый лог теперь имеет вид:
Protocol2:: rx flow: ... ports[1025=..., 1026=..., 1037=...]
Критичный вопрос
Что происходит после остановки dgrams:
- если растут только
1025/1026, а1037стоит:- радио отключает именно DDC поток, при том что session/status живы;
- если
1037растёт, аdgramsнет:- ошибка в нашем demux/parse;
- если появляется другой неожиданный порт:
- нужно смотреть новую маршрутизацию/режим потока.
Главный вывод на текущий момент
Проблема уже не выглядит как:
- ошибка DSP,
- пустой
iq_queue, - неверные номера портов в
General, - мёртвый
QSocket.
Основной текущий подозреваемый:
- содержимое или cadence одного из Protocol 2 control-пакетов всё ещё не совпадает с тем, что ожидает реальный
Orion MkII, и из-за этого радио через короткое время прекращает выдачуDDC IQ, хотя status-канал продолжает жить.