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

11 KiB
Raw Permalink Blame History

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 файлов):

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 и установить зафиксированные пакеты:

    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 с движением камеры и автомобилей: udacity_project_video.mp4, 25 268 015 байт, SHA-256 651949922042c223375d40bf8929def97dbb62c6ade651d1f5b08eea47127d5f.

    .\.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 держать после вердикта приёмника:

    .\.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 по радио. Подготовлен воспроизводимый программный пакет и перечень сведений, которых не хватает для конкретной установки.