Настройка oscam.dvbapi 2026: полный гайд

Если ты уже поднял OScam, ридер отвечает, но каналы не открываются — скорее всего, проблема в oscam.dvbapi. Именно этот файл управляет тем, как OScam взаимодействует с демультиплексором твоего ресивера. Я разберу настройку oscam.dvbapi 2026 от синтаксиса до диагностики, потому что большинство гайдов просто дают готовый файл и не объясняют, что за что отвечает.

Зелёный экран, фриз каждые несколько секунд, OScam не цепляет демукс — всё это лечится, если понять логику работы файла. Поехали.

Что такое oscam.dvbapi и зачем он нужен

OScam сам по себе умеет расшаривать карточки и получать ECM. Но чтобы ресивер с Enigma2 мог реально открыть канал — нужен мост между OScam и DVB-стеком ресивера. Этим мостом и является DVBAPI.

Роль DVBAPI в цепочке декодирования

Когда тюнер принимает сигнал, он передаёт зашифрованный поток в демультиплексор (demux). DVBAPI — это интерфейс, через который OScam получает от Enigma2 информацию о PIDs и CAIDs канала, делает запрос к ридеру, получает CW (control word) и пишет его обратно в demux. Весь этот обмен регулируется файлом oscam.dvbapi совместно с секцией [dvbapi] в oscam.conf.

Без корректного файла OScam либо не знает, какой CAID запрашивать при мультикрипте, либо гоняет лишние ECM-запросы к ридерам, которые всё равно не ответят.

Где лежит файл: пути к конфигу

Путь зависит от образа. Основные варианты:

  • /etc/tuxbox/config/oscam.dvbapi — классика на старых образах OpenDreambox и Gemini
  • /var/etc/oscam.dvbapi — OpenPLi, OpenATV, некоторые сборки VTi
  • /etc/oscam/oscam.dvbapi — если OScam запущен с -c /etc/oscam/
  • /usr/keys/oscam.dvbapi — встречается на нестандартных сборках

Точный путь определяется параметром ConfigDir — смотри, с каким флагом запущен демон: ps | grep oscam. Если видишь oscam -c /var/etc/, значит все конфиги читаются оттуда. Создавать файл в другом месте бессмысленно.

Связь с oscam.conf и секцией [dvbapi]

Файл oscam.dvbapi — это только половина истории. Без активной секции [dvbapi] в oscam.conf он вообще не читается. Минимальный рабочий набор в oscam.conf:

[dvbapi]
enabled = 1
au = 1
pmt_mode = 0
request_mode = 0
boxtype = dreambox
user = dvbapi_user

Если секции нет или enabled = 0 — oscam.dvbapi просто игнорируется. Это первое, что нужно проверить при любых проблемах.

Синтаксис файла: priority, ignore, map, delay

Файл читается сверху вниз, строка за строкой. Первое совпадение по CAID/PROVID/SID применяется, остальные игнорируются. Это важно: порядок строк напрямую влияет на то, какой CAID будет запрошен первым.

Формат строки: P/I/M/D и CAID:PROVID:SRVID

Базовый формат любой строки:

[тип]: [CAID]:[PROVID]:[SRVID]

Примеры реальных строк:

P: 0500:032830
P: 0500:032830:1234
I: 0100:000080
M: 0600:000000:0100:000000
D: 0:0:500

CAID — четырёхзначный hex-идентификатор системы условного доступа. PROVID — провайдер внутри системы. SRVID — Service ID конкретного канала. Поля можно опускать или заменять на 0000/000000 для wildcard-поведения.

Параметр priority (P) — выбор нужного CAID

Строка P: говорит OScam: «При мультикрипте запрашивай этот CAID первым». Если на транспондере есть и 0500, и 1702 — без P: OScam будет запрашивать в произвольном порядке или согласно внутренним весам. Это часто приводит к задержке при переключении канала.

# Запрашивать Viaccess первым, провайдер 032830
P: 0500:032830

# Для конкретного канала с SID 03E9 — тоже Viaccess
P: 0500:032830:03E9

Строки с конкретным SID имеют более высокий приоритет над общими. Так можно задать разное поведение для разных каналов на одном транспондере.

Параметр ignore (I) — отсев лишних ECM

Строка I: полностью исключает CAID из обработки. Это не «запрашивай последним», это «вообще не трогай». Типичное применение — убрать локальный CAID смарт-карты, которая физически вставлена в ресивер, но её шаринг не нужен или она не работает с этим провайдером:

# Исключить Seca CAID — нет ридера для этой системы
I: 0100:000080

# Исключить Nagravision для всех провайдеров
I: 1800:000000

Без I: OScam будет пытаться найти ридер для каждого CAID, который есть в PMT канала. Если ридера нет — просто потеряет время на таймаут. На каналах с 4-5 CAID это заметно по скорости открытия.

Параметры map (M) и delay (D)

Строка M: переназначает CAID — говорит OScam обрабатывать один CAID как другой. Используется редко, но бывает нужна при работе с ридерами, которые не знают исходный CAID канала:

# Маппить CAID 0600 на 0100
M: 0600:000000:0100:000000

Строка D: задаёт задержку в миллисекундах перед запросом ECM. Формат: D: CAID:PROVID:задержка_мс. Применяется когда несколько ридеров гоняются за одним CW и создают нагрузку — задержка даёт основному ридеру фору:

# Задержать запрос для CAID 0500 на 500 мс
D: 0500:000000:500

Настройка секции [dvbapi] в oscam.conf

Эта секция связывает всё вместе. Ошибка здесь — и oscam.dvbapi просто не работает, даже если сам файл написан идеально.

Выбор boxtype (dreambox, enigma, dbox2, coolstream)

Параметр boxtype определяет, какой API использует OScam для связи с демультиплексором. Актуальные значения:

  • dreambox — для Dreambox и большинства образов Enigma2 (OpenPLi, OpenATV, OpenDreambox)
  • enigma — для Enigma1 (старые ресиверы DBox2)
  • dbox2 — legacy, практически не используется
  • coolstream — для CoolStream Neo, Trinity и совместимых
  • pc — для запуска OScam на PC с USB DVB-тюнером

Неправильный boxtype — и OScam вообще не найдёт demux. На Dreambox DM900/DM920 с OpenPLi 8.x нужно dreambox. На VU+ с OpenATV — тоже dreambox.

pmt_mode и request_mode

Это самые важные параметры для диагностики фриза. pmt_mode определяет, как OScam получает список PIDs от Enigma2:

  • 0 — стандартный режим, OScam читает PMT самостоятельно через /dev/dvb
  • 3 — Enigma2 сама передаёт PMT в OScam (рекомендуется при проблемах с автообновлением)
  • 4 — похож на 3, но с другой логикой обновления при смене канала
  • 6 — комбинированный режим, часто помогает при фризах на двухтюнерных ресиверах

request_mode = 0 означает, что OScam запрашивает новый CW только по истечении старого. request_mode = 1 — запрашивает заранее, до истечения. На нестабильных линиях режим 1 снижает вероятность фриза.

user и listen_port для подключения

Параметр user в секции [dvbapi] привязывает DVBAPI к конкретному пользователю из oscam.user. Этот пользователь должен существовать и иметь доступ к нужным группам ридеров через параметр group:

# oscam.conf
[dvbapi]
enabled = 1
user = dvbapi_user

# oscam.user
[account]
user = dvbapi_user
pwd = password
group = 1,2
au = 1

Если пользователь не имеет доступа к группе ридера — ECM не уйдёт никуда. Это частая ошибка, которую легко пропустить.

Параметр listen_port нужен только если OScam и Enigma2 работают на разных машинах (например, OScam на роутере, Enigma2 на ресивере). В этом случае Enigma2 подключается к OScam по TCP, и порт должен совпадать с настройками плагина на ресивере.

delayer и au для autoupdate

au = 1 включает автообновление EMM для карточек, которые это поддерживают. Без него карты со временем перестают работать. delayer задаёт задержку в мс между запросами — полезно при большой нагрузке на ридер:

[dvbapi]
enabled = 1
au = 1
delayer = 60
pmt_mode = 0
request_mode = 0
boxtype = dreambox
user = dvbapi_user

Диагностика: почему канал не открывается

Когда что-то не работает — первым делом смотри лог. OScam пишет достаточно подробно, если правильно настроить уровень отладки.

Чтение лога: found, group, no matching reader

Включи отладку в oscam.conf:

[global]
logfile = /tmp/oscam.log
loghistorysize = 4096
maxlogsize = 2048
debug = 1

Ключевые строки для DVBAPI в логе:

  • dvbapi: New program number XXXX — OScam получил PMT нового канала. Если этой строки нет — проблема в pmt_mode или boxtype
  • dvbapi: Found ECM stream — найден зашифрованный поток
  • no matching reader — нет ридера для этого CAID. Проверь группы пользователя dvbapi
  • ECM rejected — ридер есть, но CW не вернул. Проблема с линией или картой
  • found (XXX ms) — успешный ответ, время в миллисекундах

Зелёный экран и freeze каждые N секунд

Зелёный экран почти всегда означает: OScam не пишет CW в demux. Причины:

  1. Неверный boxtype — OScam не может открыть /dev/dvb/adapterX/demuxY
  2. pmt_mode не совпадает с ожиданиями образа — попробуй последовательно 0, 3, 4, 6
  3. Пользователь dvbapi не имеет прав на нужный ридер

Фриз каждые несколько секунд — это обычно проблема CW-обновления. CW действует примерно 10 секунд, и если OScam не успевает получить следующий — картинка зависает на момент смены ключа. Здесь помогает request_mode = 1 или уменьшение задержки ридера.

Ещё один сценарий фриза: конкуренция CAID. Если на транспондере 0500 и 1702, OScam запрашивает оба, получает ответ от обоих с разным временем — и если второй ответ приходит позже смены ключа, получаем рваный декодинг. Здесь помогает I: для лишнего CAID.

Проверка ecm.info и времени ответа

Файл /tmp/ecm.info (или /var/volatile/ecm.info зависимости от образа) показывает последний успешный ECM-ответ:

CaID: 0x0500
Provider: 0x032830
Ecmtime: 340 ms
Reader: my_reader_name

Время больше 3000 мс — линия плохая. Больше 9000 мс — канал просто не откроется стабильно, ключ устареет быстрее, чем придёт ответ. Норма — до 1500 мс, хорошо — до 500 мс.

Логи через WebIF и oscam.server

WebIF доступен по адресу http://IP_ресивера:8888 (порт задаётся в oscam.conf в секции [webif]). Вкладка «Services» покажет активные каналы и их статус. Вкладка «Readers» — состояние каждого ридера. Кнопка «Reload» перечитывает конфиг без перезапуска демона — важно использовать после правки oscam.dvbapi.

Тонкая настройка приоритетов под мультикрипт

Мультикрипт — это когда один канал зашифрован сразу несколькими системами. Типичный пример: спутниковый канал с 0500 (Viaccess), 1802 (Nagravision) и 0604 (Irdeto) в PMT одновременно. Без грамотного oscam.dvbapi OScam будет запрашивать все три и конкурировать сам с собой.

Раздача каналов с несколькими CAID

Правильная стратегия: убрать через I: те CAID, для которых нет ридера, и через P: указать предпочтительный. Если есть и локальная карта, и сетевой ридер с одним CAID — это отдельный случай. OScam запустит два ECM-запроса параллельно, и кто первый ответит — тот и выиграет. Это нормальное поведение, но если локальная карта медленная — её лучше вынести в отдельную группу с низким приоритетом или вовсе добавить D: для неё.

# Предпочитаем Viaccess, игнорируем Irdeto (нет ридера)
P: 0500:032830
I: 0604:000000

Связка с oscam.services и группами

Файл oscam.services (или oscam.srvid в зависимости от версии) позволяет ограничить, какие каналы видит каждый ридер. Если у тебя два ридера — один для пакета A, второй для пакета B — через services можно жёстко разграничить, что кто декодирует. Это снижает количество ECM-запросов и нагрузку на линии.

В oscam.server для каждого ридера можно указать services = +package_a — и ридер будет обрабатывать только каналы из этого сервис-листа. Связка oscam.dvbapi + oscam.services + oscam.server даёт полный контроль над тем, кто что декодирует.

Порядок строк и производительность

Поскольку файл читается сверху вниз, ставь наиболее частые и специфичные строки выше. Общие wildcard-строки (P: 0500:000000) — ниже. Это ускоряет обработку при переключении каналов: OScam быстрее находит совпадение и не проходит весь файл.

На двухтюнерных ресиверах при одновременном просмотре и записи активны два demux одновременно. OScam обрабатывает их параллельно — каждый как отдельный «программный номер». Конфликтов не будет, если файл написан без привязки к конкретному SID там, где это не нужно. Но если записываешь канал с динамическим SID (встречается на некоторых спутниках) — жёсткая привязка SID в строках P: или I: сломает декодирование. Для таких каналов пиши строки только с CAID и PROVID, без третьего поля.

Если понимаешь, как работает каждая строка — настройка oscam.dvbapi 2026 перестаёт быть магией и становится обычным конфигом. Главное помнить: это не просто список правил, это активное управление тем, как твой ресивер разговаривает с системой условного доступа.

Где находится файл oscam.dvbapi на моём ресивере?

Зависит от образа и способа запуска OScam. Чаще всего это /etc/tuxbox/config/ на OpenDreambox, /var/etc/ на OpenPLi и OpenATV, или /etc/oscam/ если демон запущен с флагом -c /etc/oscam/. Самый надёжный способ узнать точно — выполнить ps | grep oscam и посмотреть значение параметра -c. Именно в этой папке OScam ищет все свои конфиги, включая dvbapi.

Чем отличается priority (P) от ignore (I)?

Строка P: задаёт порядок запроса: «при мультикрипте начинай с этого CAID». Строка I: полностью исключает CAID из обработки — OScam даже не будет пытаться найти для него ридер. I: нужен для локальных CAIDs, которые не расшариваются, или для систем, на которые нет ридера вообще. Использование I: вместо того, чтобы просто не указывать P:, — это принципиальная разница: без I: OScam всё равно попробует запросить CAID и потеряет время на таймаут.

Что делать, если канал замерзает каждые несколько секунд?

Фриз с периодичностью 8-12 секунд — это почти всегда проблема с обновлением CW. Сначала проверь pmt_mode: попробуй последовательно значения 0, 4, 6 — сохраняй, перезапускай, проверяй. Если не помогло — добавь I: для CAID, которые конкурируют за тот же канал. Ещё вариант: переключи request_mode = 1, чтобы OScam запрашивал следующий CW заранее. И посмотри время ответа в ecm.info — если больше 5000 мс, проблема в качестве линии, а не в конфиге.

Почему после правки файла ничего не меняется?

OScam не перечитывает конфиги автоматически. После изменения oscam.dvbapi нужно либо зайти в WebIF и нажать «Reload» (или «Restart»), либо перезапустить демон командой /etc/init.d/oscam restart. Ещё проверь права доступа — файл должен читаться пользователем, от которого запущен OScam: chmod 644 /var/etc/oscam.dvbapi. И сверь синтаксис: лишний пробел или неправильный разделитель могут молча сломать строку.

Нужно ли указывать SID в строках dvbapi?

Нет, SID необязателен. Строка P: 0500:032830 отлично работает без него и применяется ко всем каналам с этим CAID и провайдером. SID добавляют только для точечной настройки конкретного канала — например, когда один канал в мультиплексе нужно декодировать иначе, чем остальные. Но если канал имеет динамический SID (он меняется при каждом обновлении транспондера) — жёсткая привязка через SID сломает декодирование. В таких случаях ограничивайся CAID и PROVID.

Как понять, какой CAID использует канал?

Несколько способов. Первый — WebIF OScam: вкладка «Services» или «Status» показывает активный канал с его CAID и PID в реальном времени. Второй — файл /tmp/ecm.info, там записан последний успешный ECM с полем CaID. Третий — включить debug-лог и найти строку dvbapi: New program number — после неё идёт список всех CAIDs из PMT канала. Ещё вариант: воспользоваться встроенным пикером Enigma2 через плагин CI-Provider или аналогичный.

Практические советы для стабильного просмотра

Даже самая стабильная линия CCCam или OSCam требует пары простых подготовительных шагов. Обновляйте прошивку ресивера, раз в неделю очищайте ECM‑кеш и держите 15–20% свободного места на USB‑накопителе или во встроенной памяти, чтобы кардридер записывал ключи без задержек.

При настройке антенны оставляйте запас по MER/BER: смещение на два градуса или ослабленный F‑коннектор чаще становится причиной “фризов”, чем сам кардшаринг. Держите под рукой короткий патч‑корд для проверки другого роутера и сохраните два профиля в OSCam — под TCP и под UDP — чтобы мгновенно переключиться, если провайдер начнёт фильтровать протокол.

Utgard.tv следит за каждым хабом 24/7, однако вы можете ускорить диагностику, если будете вести небольшой журнал действий. Записывайте время переключения канала, активный CAID и то, использовали ли вы Wi‑Fi или Ethernet. Такой мини‑отчёт позволит инженерам воспроизвести вашу конфигурацию в лаборатории и предложить решение не за часы, а за минуты.

  • Держите активными две линии: если первый сервер уходит на обслуживание, второй тут же подхватывает поток без повторного ввода логина.
  • Раз в месяц делайте замер скорости и задержек. Стабильных 1–2 Мбит/с при пинге до 80 мс достаточно для SD/HD, но если джиттер превышает 20 мс — переведите роутер на провод.
  • Сохраните в закладки страницу статуса Utgard.tv и Telegram‑бота @utgard_tv_bot — там появляются уведомления о работах раньше, чем успеют среагировать SEMrush или внешние мониторы.