Files
SDR-Rover/docs/video/SECOND_COMPUTER_SETUP.md

144 lines
11 KiB
Markdown
Raw Permalink 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.
# VIDEO-001: подготовка второго компьютера
16 сентября 2026 года. Это ведомость и инструкция для будущей программной
установки приёмника. Второй ноутбук не подключали, USB-плату не открывали,
драйверы и прошивки не меняли. `RF TX = 0`.
## Что проверено на основном ПК
| Компонент | Фактическое состояние |
|---|---|
| ОС и Python | Windows NT 10.0.19045, 64 бита; CPython 3.13.1 x64, `C:\Users\user\AppData\Local\Programs\Python\Python313\python.exe`. |
| Приёмник сохранённого IQ | NumPy 2.2.6, SciPy 1.18.0, Pillow 12.0.0, Numba 0.61.2, llvmlite 0.44.0. Numba/llvmlite сейчас доступны из `C:\Users\user\Desktop\projects\SDR_Rover\.lab053_cpu_runtime\packages`. Это локальная добавка к Python, не переносимая среда. |
| Сравнение видеокодеков | OpenCV 4.12.0.88, PyAV 16.0.1, psutil 6.1.0; `libx264` открыт через PyAV. Доступны FFmpeg `libavcodec 62.11.100`, `libavformat 62.3.100`, `libavutil 60.8.100`. Отдельные команды `ffmpeg`/`ffprobe` в PATH не найдены. |
| Базовые пакеты | matplotlib 3.11.1, pytest 9.1.1. Проверенные версии для VIDEO-001 записаны в `requirements-video.txt`; они точнее фактического `opencv-python==4.12.0` в старом `requirements.txt`. |
| HackRF host tools | Conda-метаданные: `hackrf 2024.02.1`, `libhackrf0 2024.02.1`. Проект указывает `C:\Users\user\Tools\HackRF\Library\bin\hackrf_transfer.exe`; рядом есть `hackrf_info.exe`, `hackrf_clock.exe`, `hackrf-0.dll`. Файлы `hackrf_transfer.exe` и `hackrf-0.dll` побайтно совпадают с экземплярами в `C:\Users\user\radioconda\Library\bin`. В этом задании утилиты не запускались, фактическое устройство заново не опрашивалось. |
| Конфигурация радио | Код Lab066: BPSK 500 ксимв/с, Fs 8 Мвыб/с, 16 выборок/символ, пауза 5 мс, общая опора 10 МГц. Это сохранённая точка предыдущего опыта, а не команда к новому запуску. |
## Разделение ролей
**Основной ПК, будущий передатчик.** Здесь остаются исходное видео, подготовка
JPEG и сигналов (`lab047_jpeg_object_transport.py`, `lab045_hackrf_bpsk_fec.py`,
`lab049_bpsk_symbol_rate.py`), TX HackRF и его параметры. Рабочего отправителя
непрерывного H.264 пока нет. Программный `tools/video_compare.py` кодирует
ролик в файл и не формирует радиопакеты.
**Ноутбук, будущий приёмник.** На первом этапе можно проверить импорт модулей,
тесты и, при наличии отдельно переданного сохранённого IQ, повтор Lab053.
`tools/video_iq_replay.py` читает файл, а не USB. Готового адаптера «USB HackRF
на ноутбуке → непрерывные IQ-блоки → экран» нет. Процесс на основном ПК не может
непосредственно открыть USB-плату ноутбука.
Для программного сравнения на ноутбуке достаточно `tools/video_compare.py`,
`requirements-video.txt` и одного разрешённого к копированию MP4. Для проверки
приёмника без копирования всего архива нужен следующий замкнутый набор исходных
модулей из ветки `video-development` (статический граф локальных импортов
`lab053_pipeline`/`ImageSink`/`lab053_streaming_receiver`; 38 файлов):
```text
protocol/bit_interleaver.py
protocol/bpsk_carrier_tracking.py
protocol/bpsk_radio.py
protocol/control_messages.py
protocol/convolutional_fec.py
protocol/image_fragments.py
protocol/link_packet.py
protocol/packet.py
protocol/priority_scheduler.py
protocol/video_age_policy.py
protocol/video_frame_scheduler.py
experiments/lab042_pluto_image_loopback.py
experiments/lab043_bpsk_asymmetry_diagnostics.py
experiments/lab043_hackrf_bpsk.py
experiments/lab043_hackrf_hardware.py
experiments/lab043_pluto_to_rtlsdr.py
experiments/lab043_prbs11_hardware.py
experiments/lab044_hackrf_bpsk_packet.py
experiments/lab045_hackrf_bpsk_fec.py
experiments/lab046_bpsk_object_transport.py
experiments/lab046b_continuous_iq.py
experiments/lab046c_hackrf_bpsk_object.py
experiments/lab046c_offline_recovery.py
experiments/lab047_jpeg_object_transport.py
experiments/lab049_bpsk_symbol_rate.py
experiments/lab049_independent_iq.py
experiments/lab050_streaming_receiver.py
experiments/lab050_video_stream.py
experiments/lab051_receiver_performance.py
experiments/lab051_receiver_profile.py
experiments/lab051_streaming_receiver.py
experiments/lab052_candidate_detection.py
experiments/lab052_detector_study.py
experiments/lab053_packet_processing.py
experiments/lab053_pipeline.py
experiments/lab053_receiver_profile.py
experiments/lab053_streaming_receiver.py
experiments/lab053_viterbi.py
```
Сохранить каталоговую структуру и `tools/video_iq_replay.py`. Перечень
проверен импортом этих 38 модулей из отдельного временного каталога с
изолированным путём Python: `IMPORT_OK`. Он показывает зависимость нынешнего
кода от старых лабораторных модулей;
он не означает, что аппаратные функции будут вызваны при импорте. Это пока
слишком широкая зависимость для удобной установки, поэтому перед живым RX
полезно выделить минимальный приёмный пакет отдельной программной задачей.
`data/raw` и `data/processed` целиком переносить не нужно.
## Порядок программного развёртывания
1. Выяснить ОС и разрядность ноутбука, доступную оперативную память, Python,
модель и serial подключаемой именно к нему HackRF, тип USB-порта/контроллера
и физический путь общей опоры 10 МГц. До этого драйвер не выбирать.
2. В новом каталоге ноутбука разместить только перечисленный исходный код,
`requirements-video.txt`, `tools/video_iq_replay.py` и нужные тесты. Не
переносить всю Conda-среду, пользовательские настройки, ключи или архив IQ.
3. Создать чистое окружение Python 3.13.1 и установить зафиксированные пакеты:
```powershell
py -3.13 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements-video.txt
.\.venv\Scripts\python.exe -c "import av; print(av.codec.Codec('libx264', 'w').name)"
```
Если пакет отсутствует или установка не прошла, записать `NOT_RUN` и текст
ошибки. Не выдавать отсутствие зависимости за `PASS`.
4. Проверить импорт программного RX и быстрые тесты без устройства. Для
сравнения кодеков передать только согласованный MP4. Основной опыт VIDEO-001
использует [видео Udacity с движением камеры и автомобилей](https://github.com/udacity/CarND-Vehicle-Detection/blob/master/project_video.mp4):
`udacity_project_video.mp4`, 25 268 015 байт, SHA-256
`651949922042c223375d40bf8929def97dbb62c6ade651d1f5b08eea47127d5f`.
```powershell
.\.venv\Scripts\python.exe -c "from experiments.lab053_streaming_receiver import StreamingReceiver; from experiments.lab051_receiver_performance import ImageSink; print('IMPORT_OK')"
.\.venv\Scripts\python.exe -B -m pytest tests\test_video_001_compare.py -q -p no:cacheprovider --basetemp video001_pytest_tmp
```
5. Полный повтор IQ выполнять лишь когда 386 842 624-байтный файл действительно
нужен для оценки скорости ноутбука. Его нельзя молча включать в пакет
переноса. Сверку эталонных JPEG держать после вердикта приёмника:
```powershell
.\.venv\Scripts\python.exe -B tools\video_iq_replay.py --source <путь_к_source.c64> --fixture-json <путь_к_source_fixture.json> --numba-packages .venv\Lib\site-packages --output <новый_результат.json>
```
Ожидаемый размер файла 386 842 624 байта и записанный SHA-256
`9b4f5469b21985f796a77e22981f93bcd3b7a203b573349e8bdf7ea55891bea0`
проверяются до сравнения.
Замер на основном ПК приведён в `VIDEO_001.md`; скорость ноутбука **NOT_RUN**.
## Граница аппаратного этапа
Драйвер и расположение `libhackrf` на ноутбуке выбираются после определения его
ОС и оборудования; автоматической установки здесь нет. Прошивку HackRF Plus
не менять. Первый будущий аппаратный порядок: общая опора 10 МГц включена и
проверена на обеих платах → приёмник ноутбука готов и подтверждён → отдельное
прямое разрешение на TX. Проверка независимых генераторов вне VIDEO-001.
Частоту, усиления, антенны и роль устройств по старому скрипту автоматически
не переносить. При ошибке приёма или счётчиках потерь сеанс останавливают;
повторную передачу отдельно согласуют.
**NOT_RUN:** развёртывание на втором ноутбуке, проверка его USB и драйвера,
приём вживую, непрерывный экран, передача и восстановление H.264 по радио.
Подготовлен воспроизводимый программный пакет и перечень сведений, которых
не хватает для конкретной установки.