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 и CI/CAM. Основное условие — корректно установленный и работающий драйвер адаптера; экран «DVB-адаптеры» (DVB-адаптеры) доступен, когда в системе обнаружены DVB-устройства. Устройства DVB-ASI подключаются иначе — файловым входом потока по пути устройства, без записи DVB-адаптера.
Адаптеры¶
Адаптер — это запись, привязывающая физический тюнер (пару «адаптер/устройство» в системе) к параметрам приёма; при захвате сигнала адаптер отдаёт MPTS-мультиплекс транспондера. Адаптер добавляется в окне «Добавить DVB-адаптер» (Редактор DVB-адаптера):
Режим: Stream — приём потока; Frontend monitor — только мониторинг сигнала, без чтения потока (устаревшее значение Scanner не используется). Режим и «Система вещания» задаются при создании и не меняются.
Оборудование — тюнер выбирается из списка обнаруженных в системе; занятые помечаются.
Настройка — параметры зависят от системы вещания: частота (для спутника — в МГц, для эфира и кабеля — в кГц), «Символьная скорость, ksym/s», «FEC», «Модуляция», «Спектральная инверсия», «Stream id (ISI/PLP)» (см. ниже); для эфирного приёма — «Полоса пропускания», «Режим передачи», «Защитный интервал», «Иерархия».
Оборудование обязательно в обоих режимах — монитор фронтенда тоже наблюдает за конкретным тюнером, — а для DVB-S, DVB-S2 и DVB-C в режиме Stream обязательны ещё частота и символьная скорость. Узел объявляет эти ключи со значением по умолчанию ниже собственной нижней границы и проверяет их при создании адаптера, поэтому подставить умолчание нельзя: окна создания и правки не дают сохранить адаптер, пока значения не заданы (Редактор DVB-адаптера).
Для спутниковых систем настраивается секция «LNB»: частоты гетеродинов (универсальный Ku — 9750/10600, переключение 11700 МГц; для круговой поляризации и C-диапазона — свои значения), «Поляризация» (адаптер управляет питанием конвертера: 18 В — горизонтальная, 13 В — вертикальная), «Порт DiSEqC» и «Принудительный тон 22 kHz».
Поляризацию адаптер режима Stream обязан получить явно: автоматического режима нет, по умолчанию она не выбрана, и с невыбранной поляризацией адаптер не настраивается — он остаётся в состоянии ошибки и сообщает, что поляризация не задана. Окна создания и правки адаптера не дают сохранить спутниковый адаптер режима Stream, пока не выбрана горизонтальная или вертикальная. Выбрать её нужно и при «Совместном использовании LNB»: там значение ни на что не влияет, потому что питанием управляет владелец конвертера, но без неё адаптер всё равно не настроится.
«Совместное использование LNB» отключает управление питанием, поляризацией и тоном — их выставляет другой приёмник, владеющий конвертером. Режим используется, когда несколько тюнеров подключены к одному LNB через разветвитель (принимать можно только поляризацию и диапазон, выбранные владельцем), а также чтобы разнести разные PLP одного транспондера по отдельным адаптерам — номер каждому из них задаётся полем «Stream id (ISI/PLP)».
«Stream id (ISI/PLP)» отбирает на уровне тюнера один поток из многопотокового транспондера: ISI для DVB-S2 multistream, PLP для DVB-T2. Начиная с 2.0.2.291 у поля три различимых состояния, и они не синонимы:
- -1
«Авто» — фильтр не применяется, тюнер берёт поток по умолчанию драйвера. Так и написано в подсказке под полем; в самом поле стоит число. С этим значением создаётся новый адаптер.
- 0
Явный выбор потока с номером ноль. Это настоящий фильтр, а не «не задано».
- 1 и далее
Поток с указанным номером.
Интерфейс принимает значения от -1 до 255: номер PLP восьмибитный, и этот предел — ограничение интерфейса и сканера, а не узла. До 2.0.2.291 значения «авто» не было: минимумом и значением по умолчанию был ноль, и означал он «не задано» — фильтр не применялся. После обновления узла сохранённый ноль становится настоящим фильтром, поэтому адаптер, у которого в настройках стоит 0, начнёт принимать только нулевой поток; если фильтр не нужен, поставьте -1. На узле старее 2.0.2.291 интерфейс «авто» не предлагает и подсказывает, в какой версии оно появится; введённое там -1 сохраняется как 0.
Ключи дескремблирования и список программ CAM применяются на лету; изменения параметров настройки перенастраивают фронтенд. Настройка «Экспорт EPG» записывает программу передач мультиплекса в базу EPG узла (Импорт EPG/XMLTV).
Подключение к потокам¶
Принятый мультиплекс используется двумя способами:
целиком — вход типа dvb у MPTS-потока: весь транспондер уходит в транзит или на пересборку (MPTS-потоки);
отдельными программами — вход-демультиплексор у SPTS-потоков (Демультиплексор): программа выбирается по PNR из списка обнаруженных сервисов.
В списке программ адаптера видно, какие программы уже потребляются: пометка «Активна» с уточнением — извлекается как отдельная программа (SPTS) или читается в составе полного мультиплекса (MPTS). Пока на адаптер ссылается хотя бы один поток, удалить его нельзя.
Сканирование¶
Чтобы не вводить параметры приёма вручную, встроен сканер транспондеров (окно «Сканирование DVB», Сканирование DVB). Сканер обходит транспондеры выбранного спутника или регионального диапазона, выполняет захват каждого, собирает таблицы PSI/SI и формирует список мультиплексов с программами: PNR, имя сервиса, провайдер, признак скремблирования и основные PID. Любой найденный мультиплекс одной кнопкой превращается в настроенный адаптер; можно выбрать и добавить сразу несколько.
Особенности:
источник частот — «Каталог» (справочники спутников и региональных диапазонов) либо «Слепое сканирование» по синтезированной сетке частот с необязательным диапазоном и шагом. В справочниках сотни строк, поэтому они отсортированы по названию и над списком стоит поиск (Сканирование DVB);
для спутника выбирается «Пресет LNB» (универсальный Ku, круговая поляризация, C-диапазон) или свои частоты гетеродинов;
сканер занимает физический тюнер целиком — нужен тюнер, не занятый ни системой, ни другими активными записями; приостановленная запись тюнер освобождает, поэтому работающий адаптер можно временно поставить на паузу и просканировать; занятые тюнеры видны в списке с указанием причины и не выбираются;
сканирование на узле одно — общее на все адаптеры. Запуск нового прохода прекращает предыдущий и занимает его место; отказывает узел только тогда, когда предыдущий проход не освободил тюнер за отведённое время, — тогда запуск повторяют через несколько секунд;
проход прекращают кнопкой «Стоп»; он же прекращается, когда окно сканирования закрывают — любым способом, включая добавление найденного мультиплекса. Остановка результатов не стирает: найденные мультиплексы остаются на экране, пока их не убрать кнопкой «Новое сканирование» или не закрыть окно;
ждать конца прохода, чтобы поднять адаптер на том же тюнере, не нужно: настроенный адаптер тюнер забирает. Столкнувшись со сканером, он просит его освободить тюнер; на одну попытку адаптер уходит в ошибку с сообщением о занятом устройстве и поднимается со следующей — примерно через секунду. Сканирование при этом заканчивается отменённым, а его результаты остаются доступны. Приоритет здесь односторонний: прерывается всегда сканирование, даже если оно началось первым и прошло уже большую часть транспондеров. Касается это только адаптеров режима Stream — режим Frontend monitor читает тюнер, не занимая его, и со сканером не сталкивается;
по умолчанию сканер проходит транспондер один раз: по тому PLP, который задан для него в справочнике, а если не задан — без фильтра, на том, на котором захватился тюнер. Поле «Проверять PLP до» добавляет перебор: сканер дополнительно настраивается на PLP с первого по указанный номер и останавливается на первом, где ничего нет. Перебираются только транспондеры DVB-T2; каждый несуществующий PLP стоит около пяти секунд ожидания, поэтому по умолчанию перебор выключен. Каждый найденный PLP становится отдельной строкой результатов со своим списком программ, а его номер переносится в «Stream id (ISI/PLP)» созданного адаптера. Отдельные строки на одной частоте появляются и без перебора — там, где разные PLP перечисляет сам справочник;
внутрь T2-MI сканер не заходит: параметры декапсуляции задаются уже в настройках созданного адаптера. Перебор PLP, о котором выше, к T2-MI отношения не имеет — это PLP на уровне тюнера, уровнем ниже несущих.
Декапсуляция T2-MI¶
T2-MI (T2-Modulator Interface, ETSI TS 102 773) — формат транспортировки потоков DVB-T2 по распределительным каналам, обычно спутниковым DVB-S/S2 (в том числе multistream): внешний транспондер переносит одну или несколько несущих T2-MI, каждая из которых инкапсулирует BBFRAME с одним или несколькими PLP. После декапсуляции извлекается внутренний MPEG-TS с программами и таблицами PSI/SI.
Perfect Streamer работает в режиме multi-carrier: один адаптер одновременно отдаёт внешний мультиплекс и все декапсулированные несущие T2-MI. Настройки (секция «T2-MI»):
- «Режим T2-MI»
Off — декапсуляция выключена, внешний поток передаётся как есть (при обнаружении T2-MI в мультиплексе узел подсказывает об этом в журнале); Manual — декапсуляция всегда включена; Auto — несущие обнаруживаются автоматически по таблицам PMT, без них адаптер работает как обычный мультиплекс.
- «T2-MI PID»
Предварительное создание несущей на известном PID до прихода таблиц; остальные несущие всё равно обнаруживаются автоматически.
- «T2-MI PLP»
Номер PLP, извлекаемый из каждой несущей; отдельного значения на несущую нет — для разных PLP настраиваются отдельные адаптеры с совместным использованием LNB. Если BBFRAME с заданным PLP не приходят, узел пишет в журнал список наблюдаемых PLP; он же виден в статистике адаптера, в секции «Несущие T2-MI». Поле «Фильтр T2-MI TSID (-1 = любой)» зарезервировано.
Это другой PLP, не тот, что в «Stream id (ISI/PLP)»: здесь номер выбирается внутри несущей, уже после декапсуляции, а там — на уровне тюнера, до неё. Различается и смысл -1: у фильтра TSID это «любой», у «Stream id (ISI/PLP)» — «авто».
Программы внутренних мультиплексов появляются в общем списке программ адаптера с пометкой PLP. Для подключения такой программы к SPTS-потоку используется составной PNR — номер несущей × 65536 + PNR внутри неё (Демультиплексор); несущая 0 — внешний мультиплекс. Программы внутри одной несущей, у которых совпадает набор медийных PID, узел считает зеркалами друг друга и помечает «[test]» — все до единой, без «настоящей» среди них; так же помечаются тестовые фиды, узнанные по имени (распознаются английские названия вида «test card» и «feeds»). Помеченная программа не поднимает тревог о собственном состоянии: дубликат, которому из-за общих PID не достаётся своих пакетов, иначе выглядел бы непроверенным. Но пометка не скрывает программу — подключить её можно наравне с остальными, и в списке выбора программы такие строки стоят последними.
Дескремблирование¶
BISS. Программный дескремблер BISS-1 / BISS-E (секция «Дешифрование BISS»). Задаются пары «слот — ключ»; на одном адаптере может быть активно несколько дескремблеров:
слот — номер программы (PNR) внешнего мультиплекса: расшифровываются все PID программы;
слот — PLP несущей T2-MI: ключ применяется ко всей несущей до декапсуляции. Это обязательно для зашифрованных multistream-потоков — без ключа декапсулятор отбрасывает каждый зашифрованный пакет.
Слот выбирается из списка «Программа / PLP»: строки помечены · BISS ·
у программы с ECM BISS, · CA · у прочих закодированных, · T2-MI ·
у несущих и · clear · у открытых программ — открытые идут последними.
Они в списке намеренно: ключ нередко задают заранее, а событийный фид
между событиями открыт, и на мультиплексе без единой закодированной
программы список иначе оказывался пустым. Список берётся из живого
снимка адаптера, поэтому у нового и у остановленного адаптера его нет —
поле называется «Id слота (PNR ≥ 0, или -(plp+1))», и номер вводится
вручную.
Формат ключа определяется по длине: 12 шестнадцатеричных цифр — BISS-1 (контрольные байты вычисляются автоматически), 16 — BISS-E. Ключи применяются на лету, без перезапуска адаптера. Работу ключа видно по счётчикам в статистике адаптера: рост «расшифровано» — ключ работает; рост «нет ключа» — ключ не задан или задан не на том уровне; рост «ошибки» — ключ неверен.
CI/CAM. Адаптер с установленным CAM-модулем дескремблирует выбранные программы через Common Interface (секция «Дешифрование CI/CAM»): перечисляются номера программ, модуль расшифровывает их прямо в тракте приёма. Список применяется на лету и не зависит от системы вещания. Состояние модуля, поддерживаемые CA-системы и статус дешифрования каждой программы видны в статистике адаптера и на экране «Оборудование» (Оборудование); извлечение модуля, отсутствие подписки и ошибки CA вызывают оповещения (Каталог кодов алертов).
«Удалять CA из расшифрованного выхода» (дополнительная настройка) очищает таблицы и сообщения CAS из уже расшифрованных программ — аналогично фильтру потока «Удалять CAT / ECM / EMM» (Фильтрация MPEG-TS).
Контроль сигнала¶
В списке адаптеров видны захват сигнала, уровень, SNR, BER и входной битрейт каждого адаптера. Окно статистики адаптера (Статистика адаптера) показывает историю сигнала (уровень, SNR, BER, неисправленные блоки), текущие метрики фронтенда, список программ с медиаданными, счётчики несущих T2-MI и дескремблеров, состояние CAM-модуля и журнал; накопительные счётчики сбрасываются кнопкой «Сбросить статистику». Для контроля антенны без чтения потока адаптер создаётся в режиме Frontend monitor.
Потеря захвата, падение уровня или качества сигнала, рост ошибок BER и неисправленных блоков вызывают оповещения с настраиваемыми порогами (Оповещения (алертер), пороги — в настройках оповещателя).
Буфер приёма. «Буфер демультиплексора (блоки)» (дополнительная настройка) задаёт размер кольцевого буфера приёма в блоках по 64 КБ. Значение по умолчанию 512 (32 МБ) покрывает полнотранспондерные сценарии DVB-S/S2 с несколькими потребителями; для слабонагруженных или встраиваемых систем его можно уменьшить. При переполнениях буфера (счётчик виден в статистике, сообщение — в журнале) увеличьте буфер или сократите объём принимаемых данных — например, откажитесь от чтения полного мультиплекса, если он не нужен. Учитывайте память: каждый адаптер резервирует «блоки × 64 КБ».
Права доступа на устройства¶
Если DVB-адаптеры в Perfect Streamer не отображаются, а в системе они
есть, выдайте службе права на устройства DVB. Создайте файл
/etc/udev/rules.d/99-dvb-permissions.rules со строкой:
SUBSYSTEM=="dvb", GROUP="video", MODE="0660"
Затем добавьте пользователя службы в группу video и примените права:
sudo usermod -aG video pss
sudo chown -R root:video /dev/dvb/*
sudo systemctl restart pss
После перезагрузки системы права выставит правило udev автоматически.