Files
SDR-Rover/docs/lab064_rx_preflight.md
2026-09-15 12:03:48 +03:00

121 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Lab064: подготовка и RX-only preflight
14 сентября 2026 года завершена программная подготовка измерения уровня и
линейности текущего OTA-тракта. Затем выполнена одна аппаратная проверка общей
опоры и RX-фона. Preflight прошёл. Передатчик не запускался: `RF TX = 0`.
## Условия
| Параметр | Значение |
|---|---|
| Центральная частота | 1400000000 Гц |
| Скорость символов | 20000 символов/с |
| Частота дискретизации | 8000000 комплексных отсчётов/с |
| Цифровая несущая | +50000 Гц |
| TX VGA | 10 дБ |
| RX LNA / VGA | 24 / 24 дБ |
| RF amplifier / Bias-Tee | выключены |
| Расстояние TX–RX | примерно 1,2 м |
| Геометрия | прямая видимость, помещение |
| TX | плата и антенна возле окна |
| RX | плата и антенна на столе пользователя |
| Антенны | имеющиеся антенны на 1400 МГц |
| Поляризация | одинаковая |
| Общая опора | 10 МГц TCXO → MASTER → MASTER CLKOUT → SLAVE CLKIN |
Антенны, платы, длинный кабель общей опоры, USB-подключение и остальные
кабели не перемещались. Усиления не менялись.
## Измерительный TX-файл
Подготовлен один детерминированный PRBS7/BPSK/RRC-сигнал с уровнями −18, −12,
−6 и 0 дБ относительно номинального waveform. Он состоит из 100 мс начальных
нулей, четырёх участков по 100 мс, трёх промежутков по 50 мс и 100 мс конечных
нулей. Полная длительность равна 0,75 с, длина составляет 6000000 комплексных
отсчётов и 12000000 байт.
| Уровень | TX RMS, код | max \|I\| / \|Q\|, код | Фактический уровень, дБ | Шаг, дБ |
|---|---:|---:|---:|---:|
| L0 | 5,556137 | 9 / 9 | −17,973685 | — |
| L1 | 11,056978 | 17 / 17 | −11,996415 | +5,977270 |
| L2 | 22,056892 | 34 / 35 | −5,998257 | +5,998157 |
| L3 | 44,000457 | 69 / 69 | 0 | +5,998257 |
Цифрового clipping нет. SHA-256:
`fa260719659b2984fe29588238415622cd75c6daefec6cc9130ba1bf851bd3f9`.
Синтетический линейный канал с известным комплексным коэффициентом, DC и
шумом прошёл software gate. После независимой проверки анализатор изменён так,
чтобы промежуточный ненулевой счётчик нельзя было скрыть финальным нулём. При
любой потере сохраняются диагностические метрики, но A/B/C-классификация
запрещается и результат получает статус `INVALID_CAPTURE`.
## Common clock
Свежая инвентаризация подтвердила две HackRF One r9 с firmware/libhackrf
2024.02.1. Роли сохранены:
- MASTER `000000000000000097c063dc323b97d3`;
- SLAVE `000000000000000097c063dc2e5327d3`.
Аппаратная проверка получила:
```text
MASTER reg29 = 0x26
SLAVE reg29 = 0x26
SLAVE CLKIN = DETECTED
CLKIN query = 1
time to detect = 66.793 ms
```
## RX-only фон
SLAVE записал 800000 комплексных отсчётов, 0,1 с, при 1400 МГц и RX LNA/VGA
24/24 дБ.
| Метрика | Значение |
|---|---:|
| Полный RMS IQ | 2,193193 кода |
| AC RMS после удаления среднего | 0,832038 кода |
| Средние I / Q | 0,933738 / 1,801650 кода |
| max \|I\| / \|Q\| | 4 / 5 кодов |
| Максимальная комплексная амплитуда | 5,385165 кода |
| Clipping | 0 / 800000 отсчётов |
| RX overruns | 0, максимум и финальное значение |
| Неожиданно сильный сигнал | нет |
Порог STOP для неожиданно сильного цифрового фона: AC RMS не менее 20 кодов
или max |I|/|Q| не менее 100 кодов. Измеренные значения значительно ниже.
Отсутствие rail-кодов не доказывает отсутствие аналоговой компрессии при
будущей передаче. Абсолютная RF-мощность без измерительного прибора неизвестна.
SHA-256 RX-only записи:
`02d87adcbb621027290a77d5f8fd3190c299d13e89f887cd294d4af352a6ef52`.
Процессы до и после preflight имели состояние `CLEAR`. Оба CLKOUT выключены,
ошибок очистки нет. Preflight сохранил все две строки счётчика RX overruns;
обе равны нулю. Вызовов `hackrf_transfer -t` не было, `rf_tx_count = 0`.
## Проверки и артефакты
- quick gate: 984 теста ядра, 37 функциональных проверок, 13 пропусков;
- pytest: 984 passed, 0 failed;
- целевые тесты Lab064: 13 passed;
- `git diff --check`: PASS;
- независимая read-only проверка: чисто.
Артефакты:
- [подготовка](../data/processed/lab064/preparation.json);
- [software gate](../data/processed/lab064/software_gate.json);
- [preflight](../data/processed/lab064/preflight_result.json);
- CS8 и исходные аппаратные журналы находятся в `data/raw/lab064/` и в Git не
входят.
`READY FOR SINGLE LAB064 TX = YES` означает техническую готовность только этой
конфигурации. Передача требует отдельного явного разрешения пользователя.
`RF TX = 0`. STOP.
Lab064 не коммитируется до аппаратного результата. Push не выполняется.
Lab065 автоматически не начинается.