11 KiB
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 целиком переносить не нужно.
Порядок программного развёртывания
-
Выяснить ОС и разрядность ноутбука, доступную оперативную память, Python, модель и serial подключаемой именно к нему HackRF, тип USB-порта/контроллера и физический путь общей опоры 10 МГц. До этого драйвер не выбирать.
-
В новом каталоге ноутбука разместить только перечисленный исходный код,
requirements-video.txt,tools/video_iq_replay.pyи нужные тесты. Не переносить всю Conda-среду, пользовательские настройки, ключи или архив IQ. -
Создать чистое окружение 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. -
Проверить импорт программного RX и быстрые тесты без устройства. Для сравнения кодеков передать только согласованный MP4. Основной опыт VIDEO-001 использует видео Udacity с движением камеры и автомобилей:
udacity_project_video.mp4, 25 268 015 байт, SHA-256651949922042c223375d40bf8929def97dbb62c6ade651d1f5b08eea47127d5f..\.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 -
Полный повтор 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 по радио. Подготовлен воспроизводимый программный пакет и перечень сведений, которых не хватает для конкретной установки.