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