Lab056: compare 20 and 500 ksymbol/s in controlled RF session

This commit is contained in:
LittleSam129
2026-09-10 13:58:11 +03:00
parent 5add95ecb8
commit 92477a4632
27 changed files with 6518 additions and 0 deletions

View File

@@ -2218,3 +2218,229 @@ HEAD прежний0368c6d3e930f4d245e056223fd4e5c4f70e6b49, main; предыд
изменения Lab054 сохранены. Git add/commit/push/pull/fetch не выполнялись.
Следующий этап: STOP и согласование измерительной схемы, приборов и допустимой
частоты; никакого автоматического аппаратного продолжения.
# Запись 047
## Дата
9 сентября 2026 года
## Тема
Lab055 — фиксация результата; Lab056 — программная подготовка эфирного ABAB
## Выполнено
По новому явному разрешению пользователя Lab055 зафиксирована коммитом
5add95ecb8865f59075bbbced08d97b183fb3b48 с сообщением
Lab055: audit received signal energy across symbol rates.
В коммите семь файлов только Lab055: анализатор, тесты, отчёт, два JSON,
запись 046 и раздел индекса. Предшествующие изменения Lab054 сохранены
незакоммиченными. Перед коммитом quick_gate 823/28/13 PASS, pytest 823 passed.
Push не выполнялся. Исторический Lab054 NOT_A, 0/16, не изменён;
повторная проверка SHA-256 всех 34 входов Lab055 не выявила изменений.
Прямой выбор пользователя — эфирный опыт вместо предпочтительного кабеля
из приложения. Подготовлен один TX-файл ABAB: 20/500/20/500 ксимв/с,
прежние PRBS7/BPSK/RRC, Fs 8 Мвыб/с и цифровая несущая +50 кГц.
Созданы experiments/lab056_abab_energy.py, lab056_capture_runner.py,
tests/test_lab056_preparation.py, docs/lab056_current_state.md и малые
результаты data/processed/lab056. Большие CS8 находятся в data/raw/lab056.
TX RMS всего сегмента A/B: 44,004413/44,001925 код; разница мощности
−0,000491 дБ. Активные участки отдельно: −0,042606 дБ; клиппинг 0.
TX 10 588 544 отсчёта, 1,323568 с; RX планируется 3 с с упреждением 0,5 с.
A1=A2 и B1=B2 побайтно. Пять gaps по 0,1 с содержат нулевой цифровой IQ
при работающем TX-процессе: это не доказательство выключенного RF.
Анализатор сохраняет полную и AC-мощность RX, локальный фон, устойчивую
разность мощностей, комплексный коэффициент передачи, согласованную
компоненту, остаток и интегральный спектр. Мощность и энергия символа
выводятся отдельно. RX не выравнивается по амплитуде после приёма.
Искусственные записи с одинаковым усилением и падением B на 6,020600 дБ
обработаны успешно: оценки разницы коэффициента передачи соответственно
+0,001786/−0,002894 дБ и −6,014144/−6,022175 дБ для двух пар.
Это программные проверки, не аппаратный результат.
Подготовлен RX-first runner с единственной конечной TX-попыткой, без повтора,
проверкой процессов, SHA, размеров, счётчиков потерь и cleanup. Common clock
проверен только mock-тестами; реальные reg29/CLKIN сейчас NOT_PERFORMED.
Частота не назначена: 1400 МГц пересекает запрещённую для излучения полосу
1400–1427 МГц (ITU RR2024, п. 5.340). Для будущего опыта нужны допустимая
частота/полоса, страна и подтверждение антенн/неизменной геометрии.
Эфирный ABAB измеряет весь путь, включая антенны и распространение;
он не изолирует внутренние аппаратные потери HackRF и не измеряет dBm.
Verifier независимо пересчитал коэффициенты, проверил TX и mock-отказы.
Воспроизведённая ошибка разбора счётчиков с префиксом RX/TX исправлена;
повторная проверка закрыла находку. Остаточных воспроизведённых находок нет.
34 целевых теста PASS; итоговые quick_gate 857/30/13 PASS,
pytest 857 passed, 0 failed, 96,50 с; git diff --check PASS.
HackRF не запускался, RF TX=0. Lab056 не коммитилась; push не выполнялся.
Следующий этап: STOP, согласование допустимой эфирной конфигурации и отдельное
разрешение на конкретный однократный RF-сеанс перед аппаратным preflight.
# Запись 048
## Дата
10 сентября 2026 года
## Тема
Lab056 — принятое пользователем изменение методики на контролируемый OTA
## Выполнено
Пользователь сообщил об отсутствии необходимого SMA-переходника и осознанно
выбрал эфирный ABAB. Кабельный TX → 30 дБ → RX отложен до получения
переходника как отдельная проверка. Центральную частоту определяет пользователь:
RF_FREQ = USER_AUTHORIZED_RF_HZ. Конкретное значение пока не сообщено;
обязательные поля страны/регуляторной полосы убраны из параметров runner,
национальная регуляторика повторно не исследовалась. В отчёте подготовлены
поля антенн, расстояния, ориентации/поляризации, LOS/NLOS и частоты.
Готовый ABAB waveform, метаданные, прежние результаты и исходная сводка
857 passed сохранены. RMS A/B 44,004413/44,001925 код, разница мощности
−0,000491 дБ, TX 1,323568 с, RX 3 с. Усиления TX10/RX24/24,
Fs 8 Мвыб/с и несущая +50 кГц не менялись; внешних PA/LNA нет.
В runner оформлен отдельный RX-only preflight: common clock с обоими
reg29=0x26 и SLAVE CLKIN=DETECTED, 0,1 с приёма фона для проверки уровня,
сохранение результата и cleanup, затем STOP перед отдельным разрешением TX.
При частоте UNKNOWN аппаратных действий нет. capture_once требует PASS
этой конфигурации, отдельной авторизации и свежей проверки опоры.
При клиппинге до TX — RF TX=0; при обнаружении только в записи ABAB —
RF TX=1 и отказ без повтора. Счётчик уже выполненной передачи не обнуляется.
Ни частота, ни gains автоматически не подбираются.
Добавлен явный комплексный h прежней модели, сводки X/Y/Z и повторяемость
A2/A1, B2/B1. Те же искусственные IQ прочитаны повторно с новыми именами
выходных JSON. Для равного усиления X/Y/Z −0,046404/−0,000553/−14,025804 дБ;
для ослабления B на 6,020600 дБ: −6,039124/−6,018156/−20,018524 дБ.
Это программные значения, не аппаратный результат Lab056. Эфирный опыт
будет характеризовать весь путь, а не отдельно внутренние потери HackRF.
44 целевых теста PASS. Итоговые quick_gate 867/30/13 PASS,
pytest 867 passed, 0 failed, 89,32 с; git diff --check PASS.
Verifier независимо исполнил 44 случая с данными в памяти, без записи
и оборудования; воспроизведённых находок нет. Исторический Lab054 NOT_A
сохранён. HEAD 5add95ecb8865f59075bbbced08d97b183fb3b48, Lab056 не коммитилась,
push не выполнялся. Аппаратных команд нет, RF TX=0.
Следующий этап: получить RF_FREQ, выполнить разрешённый RX-only аппаратный
preflight, остановиться с кратким отчётом и ждать отдельного разрешения
на один ABAB-сеанс. Кабельный контроль и PA автоматически не добавляются.
# Запись 049
## Дата
10 сентября 2026 года
## Тема
Lab056 — аппаратный common-clock и RX-only preflight на частоте пользователя
## Выполнено
Пользователь задал RF_FREQ=1400000000 Гц только для текущей лабораторной
проверки. Это не рабочая частота SDR_Rover; ориентир полевых работ около
180 МГц и варианты 50/144 МГц здесь не исследуются. Задана геометрия OTA:
имеющиеся антенны 1400 МГц, LOS, неподвижное оборудование, одинаковые
поляризация/ориентация, расстояние примерно 3–5 м. Точные модели антенн
и измеренное расстояние не сообщены; описание сохранено без выдуманных данных.
Выполнен только разрешённый аппаратный preflight. Инвентаризация подтвердила
MASTER ...323b97d3 и SLAVE ...2e5327d3. После коротких RX-start обоих устройств
MASTER reg29=0x26, SLAVE reg29=0x26, SLAVE CLKIN=DETECTED; опора обнаружена
первым запросом через 67,787 мс ожидания. Затем SLAVE записал 800 000
комплексных отсчётов, 0,1 с, на той же частоте, Fs 8 Мвыб/с, RX24/24 дБ,
RF amplifier/Bias-Tee OFF. Внешних PA/LNA нет. TX не запускался.
CS8 1 600 000 байт, SHA-256
c4257f26e4cc8562eb32228f9a50fdeb055879c928af0744cdf4a81cf7cd085b.
RMS 2,203152571 код, мощность 4,85388125 код², AC-мощность 0,6658039582 код²,
максимумы абсолютных I/Q 4/6 код. Клиппинг 0 из 800 000 отсчётов, overruns 0.
Отсутствие клиппинга фона без TX не гарантирует отсутствие перегрузки
при будущем включении TX. После проверки CLKOUT обеих плат выключены,
процессы CLEAR до/после, cleanup без ошибок.
Сохранены исходный RX, preflight_result/attempt, план и журнал фактических
команд. Три hackrf_transfer-команды были только RX: два коротких запуска
для опоры и запись фона; TX-команд 0. Отчёт docs/lab056_rx_preflight.md.
Verifier только по сохранённым файлам подтвердил 12 команд, регистры,
CLKIN, параметры и cleanup; пересчитал SHA и мощность/клиппинг вторым
способом. Воспроизведённых расхождений нет, PASS, аппаратных команд не было.
Код и готовый TX не менялись; SHA совпадают с проверенной версией.
Последние программные проверки этой версии: 44 целевых теста,
quick_gate 867/30/13 PASS, pytest 867 passed. Git diff --check PASS.
Lab054 NOT_A сохранён. HEAD 5add95ecb8865f59075bbbced08d97b183fb3b48;
Lab056 не коммитилась, push не выполнялся. RF TX=0.
Следующий этап: STOP с техническим READY FOR SINGLE ABAB TX=YES;
дождаться отдельного разрешения пользователя на единственный ABAB TX.
# Запись 050
## Дата
10 сентября 2026 года
## Тема
Lab056 — единственный OTA ABAB 20/500 ксимв/с; большой провал не воспроизведён
## Выполнено
После отдельного явного разрешения пользователя выполнен один конечный
ABAB TX с неизменным ранее подготовленным файлом 10 588 544 отсчёта,
1,323568 с. RX запущен первым и сохранил 24 000 000 комплексных отсчётов,
48 000 000 байт, 3 с. Частота 1400000000 Гц только для Lab056,
Fs 8 Мвыб/с, TX10/RX24/24 дБ, несущая +50 кГц, прежние PRBS7/BPSK/RRC;
RF amplifier/Bias-Tee OFF, внешних PA/LNA нет. Геометрия по заданию
пользователя: имеющиеся антенны 1400 МГц, LOS, примерно 3–5 м,
неподвижность и одинаковые поляризация/ориентация. Параметры между A/B
не менялись. Код, пороги, timing, FEC/CRC и цифровой TX не менялись.
Свежая опора перед сеансом PASS: оба reg29=0x26, SLAVE CLKIN=DETECTED
через 137,359 мс штатного ожидания. По журналу RX стартовал на 0,517342 с
раньше TX. RX overruns=0, TX underruns=0, клиппинг 0 до и после ABAB.
Полный RX RMS 2,235380477 код, максимумы абсолютных I/Q 5/6 код.
Все 14 аппаратных команд сохранены; среди них один TX без повтора.
CLKOUT после опыта выключены, процессы CLEAR, cleanup без ошибок.
Подготовленный анализатор нашёл четыре сегмента с корреляцией 0,384366.
Начала A1/B1/A2/B2 в RX: 5 254 791 / 7 709 991 / 10 149 062 /
12 604 263; общий сдвиг относительно TX расходится лишь на один отсчёт.
Все активные окна 0,2048 с, порядок ABAB и gaps подтверждены.
Полезные мощности после фона A1/B1/A2/B2:
0,462680958 / 0,476010015 / 0,414075173 / 0,423007891 код².
Согласованные компоненты: 0,312320987 / 0,297815525 /
0,299566893 / 0,285847043 код². Raw/AC/фон/комплексный h/остаток/спектры
по каждому сегменту приведены в docs/lab056_rf_result.md и rf_analysis.json.
Итоги по средним линейным мощностям:
X, принятая мощность B/A после вычитания фона: +0,108895 дБ;
Y, коэффициент передачи abs(h)² B/A: −0,163042 дБ;
Z, энергия символа этой же принятой мощности: −13,870505 дБ.
Повтор A2/A1 по мощности −0,482024 дБ, B2/B1 −0,512676 дБ;
по abs(h)² −0,181074/−0,178136 дБ. Парные оценки B/A близки.
Прежний провал порядка 15,41 дБ в одной короткой OTA-сессии не воспроизвёлся.
Это не выделяет собственные потери HackRF из антенн и распространения
и не объясняет причину старого различия раздельных опытов. Кабельный контроль
после SMA-переходника остаётся отдельным необходимым этапом для такого
разделения. PA не назначен. Packet/PHY PASS, видео и FEC не исследовались.
Исторический Lab054 NOT_A, 0/16 сохранён; 34 исходных SHA Lab055 не изменились.
Verifier только по сохранённым файлам независимо подтвердил команды,
SHA/размеры/клиппинг, четыре начала, мощности/фон и комплексный МНК;
расчёты согласованы до 1e−12, воспроизведённых находок нет.
RX SHA e336dd653fa554058052fcf851e9f2462f66b8cf7c710815ca2b9a09ffc23ad4.
TX SHA 5b34bbe1a8e6d037d2d6d367a74e9eb84e8940db7da61600ffaa7f7497d4f600.
Сохранены raw IQ, журналы, машинная сводка rf_result.json и график
data/processed/lab056/rf_overview.png. Код прежний: последние проверки
44 целевых теста, quick_gate 867/30/13, pytest 867 passed; diff check PASS.
HEAD 5add95ecb8865f59075bbbced08d97b183fb3b48. Lab056 не коммитилась,
push не выполнялся. Выполненных TX=1, сейчас RF TX=0, повторов нет.
Следующий этап: STOP и рассмотрение отчёта пользователем; никакого
автоматического второго RF-сеанса, кабельного контроля или добавления PA.