Настройка 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/dvb3— 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 или boxtypedvbapi: Found ECM stream— найден зашифрованный потокno matching reader— нет ридера для этого CAID. Проверь группы пользователя dvbapiECM rejected— ридер есть, но CW не вернул. Проблема с линией или картойfound (XXX ms)— успешный ответ, время в миллисекундах
Зелёный экран и freeze каждые N секунд
Зелёный экран почти всегда означает: OScam не пишет CW в demux. Причины:
- Неверный boxtype — OScam не может открыть /dev/dvb/adapterX/demuxY
- pmt_mode не совпадает с ожиданиями образа — попробуй последовательно 0, 3, 4, 6
- Пользователь 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 или внешние мониторы.