DVB-адаптеры

Perfect Streamer поддерживает работу с любыми DVB-адаптерами, установленными в системе. Осуществляется поддержка стандартов DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, ATSC. Дополнительно реализована декапсуляция T2-MI (ETSI TS 102 773) и дескремблирование BISS-1 / BISS-E.

Основное условие — корректно установленный и работающий драйвер адаптера в системе.

Раздел DVB появится, только если в системе есть валидные DVB-адаптеры. Переконфигурирование на лету не поддерживается, требуется рестарт стримера.

Подключение адаптера

Для добавления нового DVB-адаптера необходимо перейти в соответствующий раздел и добавить адаптер:

  • Задать имя адаптера.

  • Выбрать адаптер из списка доступных в системе.

  • Выбрать режим Stream.

  • Указать тип delivery system: DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C.

  • Указать параметры настройки приёма: Частота несущей, Поляризация, Символьная частота, FEC, Модуляция, ID DVB-потока, Частота гетеродина, Гетеродин верхнего диапазона, Граница верхнего диапазона, Режим DiSEqC 1.0 и прочие параметры в зависимости от типа.

Опционально может быть включена запись EIT в БД EPG (Записывать EIT в БД EPG).

Повторить добавление для каждого адаптера, присутствующего в системе.

Сканирование DVB

Чтобы не вводить параметры приёма (частоту, поляризацию, символьную скорость, FEC, модуляцию) вручную, в Perfect Streamer встроен сканер транспондеров. Сканер обходит транспондеры выбранного спутника (DVB-S/S2) или регионального диапазона (DVB-C, DVB-T/T2), выполняет тюнинг и захват каждого, собирает таблицы PSI/SI (PAT, PMT, SDT) и формирует итоговый список мультиплексов с программами. Любой найденный мультиплекс одной кнопкой добавляется в список DVB-адаптеров.

Сканер задействует физический адаптер целиком — для запуска нужен адаптер, не используемый ни ядром операционной системы, ни одной активной записью DVB-адаптера в Perfect Streamer.

Свободные адаптеры

При открытии экрана сканирования в админке отображается список физических DVB-адаптеров системы с признаком занятости:

  • free — адаптер доступен для сканирования.

  • kernel — устройство держит другой процесс операционной системы.

  • pss-id-N — адаптер уже используется записью DVB-адаптера в Perfect Streamer с указанным идентификатором. Сканер на нём запустить нельзя, пока эта запись активна. Чтобы временно освободить адаптер, существующую запись DVB-адаптера следует приостановить (флаг Pause в её настройках).

Справочники транспондеров

Сканер ориентируется на справочники в формате Enigma2: списки спутников satellites.xml и регионов cables.xml / terrestrial.xml. Каждый файл содержит набор транспондеров для известной орбитальной позиции или регионального DVB-T/C диапазона (подробнее — на сайте проекта oe-alliance-tuxbox-common).

Файлы размещаются в каталоге sat/ относительно pss.json (стандартно — /etc/pss/sat/). Они входят в дистрибутив Perfect Streamer и загружаются при открытии экрана сканирования. При необходимости их можно обновить заменой соответствующего XML-файла.

В админке справочники представлены тремя списками:

  • Спутник — орбитальные позиции (например, Hot Bird 13.0°E, Astra 19.2°E).

  • Кабельный регион — страна или провайдер DVB-C.

  • Эфирный регион — регион DVB-T/T2.

Если нужного спутника или региона в справочнике нет, можно обновить XML или воспользоваться слепым сканированием (см. ниже).

Запуск

В диалоге сканирования последовательно задаются:

  • Свободный физический адаптер.

  • Тип delivery system: DVB-S, DVB-S2, DVB-T, DVB-T2 или DVB-C.

  • Источник:

    • для DVB-S/S2 — орбитальная позиция из списка спутников и LNB-параметры (частоты гетеродина LO1 и LO2, граница верхнего диапазона, DiSEqC-порт);

    • для DVB-C — кабельный регион;

    • для DVB-T/T2 — эфирный регион.

После нажатия Старт скан выполняется в фоне. Прогресс отображается в админке:

  • процент выполнения по числу обработанных транспондеров;

  • текущая частота и поляризация;

  • счётчики Найдено мультиплексов и Найдено программ;

  • дерево уже найденных мультиплексов с раскрытием программ.

Сканер — общий ресурс на весь стример: одновременно выполняется не более одного скана. Если запустить новый скан во время уже идущего, предыдущий автоматически отменяется. Кнопка Отмена прерывает скан и очищает накопленный список.

Длительность скана зависит от количества транспондеров в выбранном справочнике (типично — до 5 секунд на транспондер: до 2 секунд на захват сигнала и до 5 секунд на сбор PSI). Типичные значения:

  • DVB-S Hot Bird 13.0°E — около 2 минут (44 транспондера).

  • DVB-S Astra 19.2°E — около 1.5 минуты.

  • DVB-T регион Европы — менее минуты.

Результат

Результат скана отображается деревом мультиплекс → программы.

Параметры мультиплекса:

  • частота, поляризация, символьная скорость;

  • FEC, модуляция, delivery system;

  • идентификатор транспортного потока (TSID);

  • показания фронтэнда на момент окончания сбора PSI — SNR, Signal, BER;

  • счётчики pmt-total / pmt-recv — сколько PMT-таблиц объявил PAT и сколько фактически собрано за тайм-аут.

Параметры программы:

  • PNR (program_number) — идентификатор сервиса в мультиплексе;

  • Имя и Провайдер — из таблицы SDT, в UTF-8;

  • scrambled — признак скремблирования. Источник определяется в следующем порядке: бит free_CA_mode из SDT (декларация вещателя) → флаги транспортного скремблирования из PMT. Если ни SDT, ни PMT за тайм-аут не пришли, значение по умолчанию — 0 («не кодирован»); реальное состояние выясняется при попытке приёма;

  • video-pid, audio-pid, pcr-pid — основные элементарные потоки сервиса.

Применение результата

Выбранный в дереве мультиплекс одной кнопкой добавляется в список DVB-адаптеров. Создаётся новая запись с параметрами из результата скана (частота, поляризация, символьная скорость, FEC, модуляция, delivery system) плюс LNB-параметры и пара adapter/device, заданные на старте скана. Имя адаптера задаётся пользователем; дополнительные параметры (BISS-ключи для скремблированных каналов, T2-MI, общий LNB и т.п.) заполняются после создания записи в её настройках.

Программы из найденных мультиплексов применяются отдельно — через создание потока (Stream) с входным demuxer-источником по PNR (см. раздел Подключение SPTS-потока к сервису DVB-мультиплекса).

Слепое сканирование

Слепой режим используется, когда:

  • нужного спутника нет в справочнике (нестандартная орбитальная позиция, локальный uplink);

  • регионального справочника DVB-T/C недостаточно или он устарел для конкретной локации;

  • нужно перепроверить участок диапазона безотносительно списка известных транспондеров.

В этом режиме сканер не обращается к справочнику, а синтезирует список транспондеров из частотной сетки. По умолчанию используются типовые диапазоны:

  • DVB-S/S2 Ku — 10700..12750 МГц, шаг 4 МГц, обе поляризации (H и V), типовые символьные скорости 22000 / 27500 / 30000 ксим/с.

  • DVB-C — 47000..862000 кГц, шаг 8000 кГц, QAM-64 и QAM-256, типовые символьные скорости 6875 / 6900 / 6952 ксим/с.

  • DVB-T/T2 — 174000..862000 кГц, шаг 8000 кГц.

Полный слепой проход Ku-диапазона занимает порядка 100 минут (несколько тысяч точек тюнинга). На практике в админке диапазон сужают вручную — минимальная/максимальная частота и шаг сетки. Например, прогон 11700..11800 МГц с шагом 4 МГц для одного LNB-диапазона — около 5 минут.

Формат результата слепого скана идентичен обычному. Особенности:

  • поля FEC и Модуляция найденных мультиплексов фиксируются в значении AUTO — сканер не определяет их точное значение;

  • delivery system равна запрошенной (DVB-S, DVB-S2, …). Для смешанных сетей рекомендуется выполнить два прохода — отдельно DVB-S и отдельно DVB-S2.

Применение мультиплекса из слепого скана выполняется так же, как и из обычного — через кнопку добавления в список DVB-адаптеров. Поля FEC и Модуляция обычно оставляют в AUTO и при необходимости уточняют после стабильного захвата сигнала на конкретном транспондере.

Размер kernel-буфера приёма

Параметр buffer-size (целое, по умолчанию 512) задаёт размер кольцевого буфера kernel DVB demux в блоках по 65536 байт.

  • 512 (32 МБ) — рекомендованное значение по умолчанию. Покрывает полнотранспондерные сценарии DVB-S/S2 (>= 33 Мбит/с) с одним или несколькими MPTS-потребителями. Подобран по результатам тестирования на стенде с TBS-адаптером при полной загрузке транспондера.

  • 8..64 (512 КБ .. 4 МБ) — допустимо для embedded-систем с ограниченной RAM или для адаптеров в режимах Scanner / Femon, где трафик невелик.

  • 0 — оставить значение по умолчанию драйвера (как правило, 8..32 КБ). Подходит только для очень слабонагруженных сценариев. На потоках более 10 Мбит/с будут потери.

При появлении в логе сообщения вида:

DVB adapter X/Y dvr buffer overflow (NN so far, KK pids);
raise 'buffer-size' or reduce pid filter

следует увеличить buffer-size или сократить число PID, проходящих через фильтр (например, отказаться от MPTS-выхода, если он не нужен).

Расход памяти: значение N даёт N × 64 КБ на адаптер kernel-памяти. При большом числе адаптеров (8 и более) это стоит учитывать (8 × 32 МБ = 256 МБ).

Подключение SPTS-потока к сервису DVB-мультиплекса

При добавлении нового SPTS-телеканала в input у стрима выбираются:

  • Тип demuxer.

  • Источник DVB-адаптер.

  • Мультиплекс, созданный у DVB-адаптера, по имени адаптера.

  • PNR — выбирается из всплывающего списка выявленных в мультиплексе сервисов или вводится вручную.

Права доступа на устройства DVB

Если DVB-адаптеры в Perfect Streamer не отображаются, выполнить следующие действия:

sudo nano /etc/udev/rules.d/99-dvb-permissions.rules
SUBSYSTEM=="dvb", GROUP="video", MODE="0660"

sudo usermod -aG video pss
sudo chown -R root:video /dev/dvb/*
sudo reboot

Декапсуляция T2-MI

T2-MI (T2-Modulator Interface, ETSI TS 102 773) — формат транспортировки потоков DVB-T2 по DVB-S2 multistream. Внешний транспондер DVB-S/S2 переносит один или несколько T2-MI carrier-PID, каждый из которых инкапсулирует BBFRAME с одним или несколькими PLP (Physical Layer Pipe). После декапсуляции из BBFRAME извлекается внутренний MPEG-TS, содержащий программы и таблицы PSI/SI.

Реализация Perfect Streamer работает в multi-carrier режиме: один физический адаптер одновременно отдаёт внешний DVB-S/S2 мультиплекс и все декапсулированные T2-MI carrier (по одному на каждый carrier-PID, найденный в PMT внешнего потока).

Параметры конфигурации

t2mi-mode (Int, 0..2, по умолчанию 0) — режим декапсуляции:

  • 0 — отключено. Внешний MPEG-TS передаётся без обработки. При обнаружении дескриптора T2-MI (tag 0x51) в PMT в лог выводится одноразовая подсказка.

  • 1 — ручной режим. Декапсуляция включена постоянно. Если t2mi-pid не равен 0, на старте предсоздаётся carrier на этом PID. Дополнительные carrier продолжают обнаруживаться по PMT автоматически.

  • 2 — автоматический режим. Carrier обнаруживаются автоматически из PMT внешнего мультиплекса по всем ES, выглядящим как T2-MI (дескриптор 0x51 либо единственный ES с stream_type=0x06 на сервисе без других A/V ES). Если carrier не найдены, адаптер работает как обычный DVB-мультиплекс.

t2mi-pid (Int, 0..8191, по умолчанию 0) — PID для предсоздания carrier на старте, до прихода PMT:

  • 0 — без предсоздания. Carrier обнаруживаются по PMT (рекомендовано для автоматического режима 2).

  • 1..8191 — предсоздать carrier на этом PID. Дополнительные T2-MI ES, найденные в PMT, всё равно получают свои carrier.

В multi-carrier режиме параметр t2mi-pid не является селектором единственного carrier — каждый обнаруженный T2-MI ES получает собственный carrier с собственным декапсулятором. Параметр обеспечивает раннюю инициализацию для известного PID.

t2mi-plp (Int, 0..255, по умолчанию 0) — идентификатор PLP, извлекаемого из каждого T2-MI carrier на адаптере. Применяется ко всем carrier — индивидуальное переопределение на carrier в текущей версии не поддерживается. Если в эксплуатации разные carrier несут разные PLP, следует:

  • указать PLP, общий для всех carrier, либо

  • настроить отдельные адаптеры на разные PLP с помощью lnb-sharing.

Это идентификатор поля plp_id BBFRAME, не ISI multistream DVB-S2 (он задаётся параметром dvb-stream-id). Это разные идентификаторы на разных уровнях.

Диагностика выбора PLP:

  • Через 5 секунд после старта carrier, если для заданного PLP не получено ни одного BBFrame, но другие PLP видны — в лог пишется предупреждение со списком наблюдаемых plp_id.

t2mi-tsid (Int, -1..255, по умолчанию -1) — зарезервировано на будущее. Селектор идентификатора T2-MI потока, когда несколько T2-MI потоков делят один carrier-PID. В текущей версии игнорируется.

Композитный PNR — подключение SPTS из T2-MI

Один адаптер может предоставлять несколько логических мультиплексов:

  • carrier-id = 0 — внешний DVB-S/S2 мультиплекс (обычные A/V сервисы).

  • carrier-id = 1..N — декапсулированные T2-MI carrier (по одному на внешний T2-MI ES).

Дескремблирование BISS

Поддерживается дескремблирование зашифрованных потоков DVB по BISS-1 (режим E1) и BISS-E (режим E2). Применимо к системам передачи DVB-S, DVB-S2, DVB-T, DVB-T2.

Реализация позволяет одновременно поддерживать активными несколько дескремблеров на одном адаптере:

  • По PNR во внешнем мультиплексе (обычный сервис).

  • По plp_id для дешифрования carrier-PID T2-MI до декапсуляции (требуется для зашифрованных multistream-потоков — без этого декапсулятор отбрасывает каждый зашифрованный пакет, см. счётчик <t2mi scrambledDropped>).