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>).