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

6.4 KiB
Raw Permalink Blame History

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.

Аппаратная проверка получила:

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 проверка: чисто.

Артефакты:

READY FOR SINGLE LAB064 TX = YES означает техническую готовность только этой конфигурации. Передача требует отдельного явного разрешения пользователя. RF TX = 0. STOP.

Lab064 не коммитируется до аппаратного результата. Push не выполняется. Lab065 автоматически не начинается.