Lab046C: validate full 1400 MHz RF object transport
This commit is contained in:
@@ -1024,3 +1024,76 @@ commit и push не выполнялись.
|
|||||||
|
|
||||||
STOP. Новый RF, повтор Lab046C, изменение порога, JPEG, QPSK и изменение FEC
|
STOP. Новый RF, повтор Lab046C, изменение порога, JPEG, QPSK и изменение FEC
|
||||||
без отдельной постановки запрещены.
|
без отдельной постановки запрещены.
|
||||||
|
|
||||||
|
# Запись 032
|
||||||
|
|
||||||
|
## Дата
|
||||||
|
|
||||||
|
2 сентября 2026 года
|
||||||
|
|
||||||
|
## Тема
|
||||||
|
|
||||||
|
Lab046C: успешная полная передача объекта 16384 байта через аппаратный
|
||||||
|
радиоканал 1400 МГц, RESULT A.
|
||||||
|
|
||||||
|
## Выполнено
|
||||||
|
|
||||||
|
После отдельной точной авторизации выполнен один непрерывный процесс передачи
|
||||||
|
без повтора. Новый криптографически случайный объект 16384 байта разбит
|
||||||
|
существующей архитектурой Lab046 на 68 фрагментов и передан 68
|
||||||
|
последовательными защищёнными BPSK-кадрами. RF равна 1400 МГц, частота
|
||||||
|
дискретизации 8 МГц, символьная скорость 20 ксимв/с, цифровое смещение несущей
|
||||||
|
+50 кГц. Усиления сохранены: TX VGA 10 дБ, RX LNA/VGA 24/24 дБ, RF amplifier
|
||||||
|
и Bias-Tee выключены. MASTER reg29 `0x26`, SLAVE CLKIN `DETECTED`, SLAVE reg29
|
||||||
|
`0x26`; общий опорный генератор прошёл проверку.
|
||||||
|
|
||||||
|
Поток передачи содержит 156 835 200 комплексных отсчётов, 313 670 400 байт и
|
||||||
|
19,6044 с сигнала. Приём содержит 192 000 000 комплексных отсчётов,
|
||||||
|
384 000 000 байт и 24,0 с сигнала. Приём начался на 0,7525116 с раньше
|
||||||
|
передачи и закончился на 3,6341200 с позже. RX overruns 0, TX underruns 0,
|
||||||
|
clipping 0, near limit 0. После опыта оба CLKOUT выключены, оставшихся
|
||||||
|
процессов `hackrf_transfer` нет.
|
||||||
|
|
||||||
|
До полного декодирования по фону до передачи зафиксирован порог первого
|
||||||
|
каскада `Q99.9 + 4 * MAD`: Q99.9 `0.023181289434432983`, MAD
|
||||||
|
`0.0025865877978503704`, threshold `0.033527640625834465`. На независимом фоне
|
||||||
|
после передачи maximum `0.030997175723314285`, кандидатов 0. Порог после
|
||||||
|
начала декодирования не менялся. Исторический строгий
|
||||||
|
`IQ_PREAMBLE_THRESHOLD = 0.65`, Lab045, PHY и FEC не менялись.
|
||||||
|
|
||||||
|
Независимый приёмник обработал весь 24-секундный файл без смещений и периода
|
||||||
|
кадров передатчика, ожидаемого числа 68, пакетов, кодированных битов и
|
||||||
|
исходного объекта. Получено 295469 локальных максимумов, 35009 кандидатов
|
||||||
|
первого каскада и 95 обработанных неперекрывающихся гипотез. PHY-заголовок
|
||||||
|
PASS/FAIL `68/27`, FEC attempts/PASS/FAIL `68/68/0`, CRC PASS/FAIL `68/0`,
|
||||||
|
действительных кадров 68. Поиск завершился по концу записи и списка
|
||||||
|
кандидатов, а не по известному количеству кадров.
|
||||||
|
|
||||||
|
До открытия опорных данных передатчика `ObjectAssembler` независимо принял 68
|
||||||
|
уникальных фрагментов без дубликатов, конфликтов и пропусков: **OBJECT
|
||||||
|
COMPLETE = YES**. Только после фиксации этого вердикта выполнено сравнение с
|
||||||
|
передатчиком. Совпали 68/68 кадров, пропущено 0, ложных CRC PASS 0. До FEC
|
||||||
|
обнаружено 787 ошибок кодированных бит, после FEC 0 ошибок протокольных бит.
|
||||||
|
Восстановленный объект имеет 16384 байта, 0 ошибочных байт и 0 ошибочных бит.
|
||||||
|
SHA-256 исходного и восстановленного объектов совпадает:
|
||||||
|
`b5a27caaa3f03dfc468e71a857a06f18cf0259ca6ea21d3c42ccfde7168d1dfe`.
|
||||||
|
|
||||||
|
SNR min/median/max для 68 кадров равен `8.302870/8.909278/9.837726 дБ`, ошибки
|
||||||
|
преамбулы `0/3/9` из 1280, CFO
|
||||||
|
`-0.214661/0.016493/0.281551 Гц`. Медианный SNR по третям сеанса снижался
|
||||||
|
`9.29 -> 8.86 -> 8.57 дБ`, но потерь кадров и CRC FAIL не было. Итог:
|
||||||
|
**LAB046C HARDWARE RESULT = A; FULL RF OBJECT TRANSPORT = PASS; 68/68 FRAMES;
|
||||||
|
OBJECT COMPLETE = YES; SHA MATCH = YES; OBJECT BYTE ERRORS = 0.**
|
||||||
|
|
||||||
|
Большие сформированные артефакты оставлены вне Git в
|
||||||
|
`C:\Users\user\Documents\SDR_Rover_Lab046_raw\20260902_151819_1400MHz_full`.
|
||||||
|
Независимый проверяющий только чтением сверил аппаратные и независимые JSON,
|
||||||
|
арифметику порога, счётчики, размеры, SHA-256, побайтовое совпадение объектов,
|
||||||
|
временное покрытие RX над TX и очистку; расхождений не найдено. После опыта
|
||||||
|
`python tools/quick_gate.py` прошёл, `python -m pytest tests/ -q` дал 512
|
||||||
|
passed и 0 failed, `git diff --check` прошёл.
|
||||||
|
|
||||||
|
## Следующий этап
|
||||||
|
|
||||||
|
STOP. Новый RF, JPEG, видео, QPSK, 180 МГц и FEC 12+3 без отдельной постановки
|
||||||
|
не начинать.
|
||||||
|
|||||||
@@ -8,33 +8,91 @@
|
|||||||
|
|
||||||
**ПРОГРАММНАЯ ПРОВЕРКА НЕПРЕРЫВНОГО СЫРОГО IQ-ПОТОКА = PASS.**
|
**ПРОГРАММНАЯ ПРОВЕРКА НЕПРЕРЫВНОГО СЫРОГО IQ-ПОТОКА = PASS.**
|
||||||
|
|
||||||
**LAB046C HARDWARE RESULT = C.**
|
**LAB046C HARDWARE RESULT = A (FULL 1400 MHZ RF OBJECT TRANSPORT).**
|
||||||
|
|
||||||
**RF TX COUNT = 1.**
|
**FULL RF OBJECT TRANSPORT = PASS.**
|
||||||
|
|
||||||
**PREAMBLE CANDIDATES = 0. VALID FRAMES = 0. CRC PASS = 0.**
|
**RF TX PROCESS COUNT FOR THIS RESULT = 1.**
|
||||||
|
|
||||||
**OBJECT COMPLETE = NO.**
|
**VALID FRAMES = 68/68. CRC PASS = 68. CRC FAIL = 0.**
|
||||||
|
|
||||||
**POST-RUN TX-REFERENCE DIAGNOSTIC = 68/68 WAVEFORM TRACES DETECTED.**
|
**PRE-FEC CODED BIT ERRORS = 787. POST-FEC PROTOCOL BIT ERRORS = 0.**
|
||||||
|
|
||||||
**OFFICIAL RESULT CHANGED BY POST-RUN DIAGNOSTICS = NO.**
|
**OBJECT COMPLETE = YES. OBJECT SIZE = 16384 BYTES.**
|
||||||
|
|
||||||
**OFFLINE DETECTOR STUDY = COMPLETE.**
|
**SHA MATCH = YES. OBJECT BYTE ERRORS = 0. OBJECT BIT ERRORS = 0.**
|
||||||
|
|
||||||
**OFFLINE REPROCESSING OF ORIGINAL RX CAPTURE = FAIL.**
|
**HISTORICAL FIRST LAB046C AT 1080 MHZ = RESULT C.**
|
||||||
|
|
||||||
**OFFLINE VALID FRAMES = 0. OFFLINE OBJECT COMPLETE = NO.**
|
**THE HISTORICAL 1080 MHZ RESULT WAS NOT RECLASSIFIED.**
|
||||||
|
|
||||||
**ORIGINAL HARDWARE RESULT CHANGED = NO.**
|
**INDEPENDENT 1400 MHZ THRESHOLD = 0.033527640625834465.**
|
||||||
|
|
||||||
**CURRENT SOFTWARE GATE = PASS: quick_gate 506, pytest 506 passed,
|
**CURRENT SOFTWARE GATE = PASS: quick_gate 512, pytest 512 passed,
|
||||||
git diff --check clean.**
|
git diff --check clean.**
|
||||||
|
|
||||||
Lab046A/B остаются только программными лабами. Для Lab046C выполнен ровно один
|
Lab046A/B остаются только программными лабами. В истории Lab046C отдельно
|
||||||
заранее разрешённый непрерывный RF-сеанс без повтора. Ни JPEG, ни видео, ни
|
сохранены первый полный аппаратный результат C на 1080 МГц и новый полный
|
||||||
|
аппаратный результат A на 1400 МГц. В новом опыте выполнен ровно один заранее
|
||||||
|
разрешённый непрерывный процесс передачи без повтора. Ни JPEG, ни видео, ни
|
||||||
QPSK не запускались.
|
QPSK не запускались.
|
||||||
|
|
||||||
|
## Lab046C: полный аппаратный результат 1400 МГц, RESULT A
|
||||||
|
|
||||||
|
2 сентября 2026 года через два HackRF передан новый криптографически случайный
|
||||||
|
объект размером 16384 байта. Он был разбит существующей архитектурой Lab046 на
|
||||||
|
68 фрагментов и передан 68 последовательными защищёнными BPSK-кадрами одним
|
||||||
|
непрерывным процессом. Частота равна 1400 МГц, частота дискретизации 8 МГц,
|
||||||
|
символьная скорость 20 ксимв/с, цифровое смещение несущей +50 кГц. Усиления не
|
||||||
|
менялись: TX VGA 10 дБ, RX LNA/VGA 24/24 дБ, RF amplifier и Bias-Tee выключены.
|
||||||
|
|
||||||
|
Общий опорный генератор прошёл аварийно-безопасную проверку: MASTER reg29
|
||||||
|
`0x26`, SLAVE CLKIN `DETECTED`, SLAVE reg29 `0x26`. Приём начался на
|
||||||
|
`0.7525116 с` раньше передачи и закончился на `3.6341200 с` позже неё. Файл
|
||||||
|
передачи содержит 156 835 200 комплексных отсчётов, 313 670 400 байт и
|
||||||
|
19,6044 с сигнала; процесс передачи занял 19,6408497 с. Приём содержит
|
||||||
|
192 000 000 комплексных отсчётов, 384 000 000 байт и 24,0 с сигнала; процесс
|
||||||
|
приёма занял 24,0274813 с. Переполнения приёмника, опустошения передатчика,
|
||||||
|
ограничение АЦП и приближение к пределу отсутствуют.
|
||||||
|
|
||||||
|
До полного декодирования по фону до передачи зафиксировано правило первого
|
||||||
|
каскада `Q99.9 локальных максимумов + 4 * MAD`: Q99.9
|
||||||
|
`0.023181289434432983`, MAD `0.0025865877978503704`, порог
|
||||||
|
`0.033527640625834465`. После начала декодирования порог не менялся. На
|
||||||
|
независимом фоне после передачи максимум равен `0.030997175723314285`,
|
||||||
|
кандидатов выше порога нет. Исторический строгий порог
|
||||||
|
`IQ_PREAMBLE_THRESHOLD = 0.65`, Lab045, PHY и FEC не менялись.
|
||||||
|
|
||||||
|
Независимый приёмник обработал весь 24-секундный файл. Он не использовал
|
||||||
|
смещения и период кадров передатчика, ожидаемое число 68, пакеты, кодированные
|
||||||
|
биты или исходный объект. Первый каскад получил 295469 локальных максимумов и
|
||||||
|
35009 кандидатов. Строгий каскад обработал 95 неперекрывающихся гипотез:
|
||||||
|
PHY-заголовок PASS/FAIL `68/27`, FEC attempts/PASS/FAIL `68/68/0`, CRC
|
||||||
|
PASS/FAIL `68/0`, действительных кадров `68`. Поиск завершился по концу записи
|
||||||
|
и списка кандидатов, а не по достижении известного количества кадров.
|
||||||
|
|
||||||
|
`ObjectAssembler` принял 68 уникальных фрагментов. Дубликатов, конфликтующих
|
||||||
|
дубликатов и пропусков нет. Независимый вердикт: `OBJECT COMPLETE = YES`.
|
||||||
|
Восстановленный объект размером 16384 байта был записан до открытия опорных
|
||||||
|
данных передатчика. Только после этого выполнено сравнение: все 68 кадров
|
||||||
|
совпали с 68 переданными, пропущенных кадров и ложных CRC PASS нет. Ошибки до
|
||||||
|
FEC составили 787 кодированных бит, после FEC 0 протокольных бит. Ошибки
|
||||||
|
объекта равны 0 байт и 0 бит. SHA-256 исходного и восстановленного объектов:
|
||||||
|
`b5a27caaa3f03dfc468e71a857a06f18cf0259ca6ea21d3c42ccfde7168d1dfe`.
|
||||||
|
|
||||||
|
Для 68 принятых кадров SNR min/median/max равен
|
||||||
|
`8.302870/8.909278/9.837726 дБ`, ошибки преамбулы `0/3/9` из 1280, CFO
|
||||||
|
`-0.214661/0.016493/0.281551 Гц`. Медианный SNR по третям сеанса плавно
|
||||||
|
снижался `9.29 -> 8.86 -> 8.57 дБ`, но все кадры прошли FEC и CRC. Ошибки
|
||||||
|
начала кадра находились в пределах от -4 до +3 отсчётов.
|
||||||
|
|
||||||
|
Фактические внешние артефакты сохранены в
|
||||||
|
`C:\Users\user\Documents\SDR_Rover_Lab046_raw\20260902_151819_1400MHz_full`.
|
||||||
|
Большие `tx_stream.cs8`, `rx_stream.cs8`, `tx_object.bin` и
|
||||||
|
`recovered_object.bin` в Git не добавляются. После результата оба CLKOUT
|
||||||
|
выключены, процессов `hackrf_transfer` нет. Независимая проверка сохранённых
|
||||||
|
JSON, размеров, SHA-256, временного покрытия и счётчиков расхождений не нашла.
|
||||||
|
|
||||||
## Lab046C: подготовка аппаратного непрерывного объекта
|
## Lab046C: подготовка аппаратного непрерывного объекта
|
||||||
|
|
||||||
Добавлен `experiments/lab046c_hackrf_bpsk_object.py`, который не меняет
|
Добавлен `experiments/lab046c_hackrf_bpsk_object.py`, который не меняет
|
||||||
@@ -76,7 +134,7 @@ MASTER reg29 `0x26`, SLAVE CLKIN `DETECTED` после 141,51 мс, SLAVE reg29
|
|||||||
`0x26`; после проверки оба CLKOUT выключены, процессов `hackrf_transfer` нет,
|
`0x26`; после проверки оба CLKOUT выключены, процессов `hackrf_transfer` нет,
|
||||||
`RF TX = 0` на этапе подготовки.
|
`RF TX = 0` на этапе подготовки.
|
||||||
|
|
||||||
## Lab046C: первый аппаратный результат
|
## Lab046C: первый аппаратный результат 1080 МГц, исторический RESULT C
|
||||||
|
|
||||||
Выполнен ровно один непрерывный RF TX всего `tx_stream.cs8`; автоматического
|
Выполнен ровно один непрерывный RF TX всего `tx_stream.cs8`; автоматического
|
||||||
или ручного повтора не было. MASTER/TX
|
или ручного повтора не было. MASTER/TX
|
||||||
@@ -469,9 +527,9 @@ Goodput 6,69 кбит/с — это честная baseline при 20 ксимв
|
|||||||
|
|
||||||
## Ограничения и следующий шаг
|
## Ограничения и следующий шаг
|
||||||
|
|
||||||
Для Lab046A/B RF TX = 0; первый аппаратный Lab046C завершён с RESULT C и одним
|
Для Lab046A/B RF TX = 0. Первый полный аппаратный Lab046C на 1080 МГц сохранён
|
||||||
RF TX без повтора. Erasure-код 12+3 GF(256) не задействован. Порог PRBS7,
|
как исторический RESULT C. Новый полный аппаратный Lab046C на 1400 МГц
|
||||||
gain, PHY, FEC и detector после результата не менялись. Следующий этап
|
завершён как RESULT A: 68/68 кадров, объект 16384 байта восстановлен без
|
||||||
определяется отдельной постановкой. Offline weak-signal прогон с заранее
|
ошибок. Erasure-код 12+3 GF(256) не задействован, Lab045, PHY и FEC не
|
||||||
зафиксированным правилом уже завершён как FAIL и не повторяется с другим
|
менялись. Следующий этап определяется отдельной постановкой. Новый RF-сеанс,
|
||||||
порогом. Новый RF-сеанс автоматически не разрешён.
|
JPEG, видео, QPSK и переход к другой FEC автоматически не разрешены.
|
||||||
|
|||||||
Reference in New Issue
Block a user