---
title: DVB-адаптеры
url: https://doc.pstreamer.tv/ru/manual/dvb.html
lang: ru
product: Perfect Streamer
version: 1.13.3.445
---

# 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](https://github.com/oe-alliance/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 не отображаются, выполнить следующие действия:

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