OScam Conax: настройка reader и dvbapi на сервере
Если вы добрались до этой статьи, значит OScam уже поднят, но каналы с Conax не открываются — или вообще молчат, или в логе мелькает что-то непонятное. OScam conax настройка отличается от работы с Viaccess или Irdeto несколькими нюансами, которые почти нигде нормально не объяснены. Разберём всё по порядку: от структуры CAID до пошагового алгоритма отладки по rc-кодам.
Что такое Conax и как OScam с ним работает
Conax — система условного доступа (CAS) норвежского происхождения, которая до сих пор активно используется на спутниковых и кабельных платформах. OScam опознаёт её по диапазону CAID и обрабатывает ECM/EMM-запросы стандартным образом. Понять схему важно, иначе будете искать проблему не там.
CAID Conax и диапазон 0x0Bxx
Conax работает в диапазоне CAID 0x0B00–0x0BFF. Чаще всего встречаются 0B00 и 0B01, реже 0B02, 0B03. Конкретный CAID зависит от оператора и платформы.
Точный CAID вашей карты видно в web-интерфейсе OScam (раздел Readers) сразу после инициализации карты, либо в oscam.log при старте. Можно также прочитать его с ресивера в меню информации о канале. Не угадывайте — смотрите в лог.
Локальная карта (reader) против сетевого источника (cccam/newcamd)
OScam умеет получать CW двумя принципиально разными способами. Первый — физическая смарт-карта вставлена в карторидер (USB или встроенный sci-интерфейс приставки). Второй — сетевой reader, когда OScam подключается к удалённому серверу по протоколу newcamd или cccam и просит его расшифровать ECM.
Конфиги для этих двух случаев в oscam.server выглядят совершенно по-разному. В первом случае вы указываете физическое устройство и частоту карты. Во втором — хост, порт и учётные данные. Многие путают их и смешивают параметры — это первый источник ошибок.
Цепочка ECM/EMM: ресивер → dvbapi → reader
Схема прохождения запроса такая: ресивер (Enigma2 или другой) ловит зашифрованный поток → передаёт ECM-запрос в OScam через интерфейс dvbapi → OScam выбирает подходящий reader по CAID и group → reader отдаёт CW обратно → ресивер расшифровывает картинку.
Если цепочка рвётся на любом из этих этапов, каналы не откроются. Понимание этой схемы сразу подсказывает, где копать: нет ECM в логе — проблема в dvbapi или ресивере; ECM есть, но нет CW — проблема в reader или правах доступа.
Настройка секции reader в oscam.server
Файл /etc/oscam/oscam.server — главное место, где описываются все источники расшифровки. Каждый reader — отдельная секция [reader]. Покажу рабочие шаблоны с построчным объяснением.
Reader для локальной карты Conax (protocol = mp35/smartreader/internal)
Вот базовый шаблон для физической Conax-карты в USB-карторидере:
[reader]
label = conax_local
protocol = mp35
device = /dev/ttyUSB0
caid = 0B00
detect = cd
mhz = 357
cardmhz = 357
group = 1
emmcache = 1,3,31
saveemm-u = 1
blockemm-unknown = 1
Для встроенного sci-ридера на приставке (Dreambox, Vu+) device меняется на sci0 или sci1, а protocol — на internal. Для SmartReader Plus используйте protocol = smartreader.
Если карточка определяется, но не инициализируется — первым делом меняйте cardmhz. Пробуйте значения 368, 600, 500. Некоторые карты Conax работают только на нестандартной частоте.
Reader для сетевого источника (protocol = cccam / newcamd)
Если карты локально нет и вы используете сетевой источник, секция выглядит иначе. Пример для newcamd:
[reader]
label = conax_net
protocol = newcamd
device = 192.168.1.100,15000
user = myuser
password = mypassword
key = 0102030405060708091011121314
caid = 0B00
group = 1
Для протокола cccam секция проще — нет параметра key, но добавляется pincode если нужен. Хост и порт в device указываются через запятую без пробелов. Это не очевидно из документации, но OScam именно так парсит строку.
Ключевые параметры: caid, detect, mhz, group, services
Параметр detect = cd указывает OScam следить за состоянием контакта карты (card detect). Если поставить none, ридер будет считать карту вставленной всегда — иногда помогает при глючных карторидерах, но маскирует реальные проблемы.
mhz — тактовая частота самого карторидера (интерфейса), cardmhz — частота, на которой работает карта. Для большинства Conax-карт оба значения 357. Но SmartReader USB работает на mhz = 357, а cardmhz нужно подбирать отдельно. Разница между этими двумя параметрами — источник половины проблем с инициализацией.
Параметр group — это числовой идентификатор группы reader. Он должен совпадать с group в секции пользователя в oscam.user. Без совпадения пользователь не увидит этот reader.
Привязка CAID 0Bxx и ident
Можно указать несколько CAID через запятую: caid = 0B00,0B01. Это нужно если карта поддерживает несколько идентификаторов или вы не уверены в точном значении.
Параметр ident позволяет ограничить обработку до конкретного провайдера: ident = 0B00:000000. Если не указан, reader отвечает на все ECM с подходящим CAID. Для большинства домашних установок ident можно не трогать.
Если у вас несколько reader с одинаковым CAID (например, локальный и сетевой как резервный), управляйте fallback через параметр cccmaxhops и lb_weight. OScam сам выберет быстрейший по встроенному балансировщику нагрузки.
Настройка dvbapi для приёма на ресивере
dvbapi — это интерфейс, через который OScam общается с ресивером. Без правильно настроенного dvbapi ресивер не будет отправлять ECM-запросы в OScam, и ни один reader не поможет.
Включение dvbapi в oscam.conf
В файле /etc/oscam/oscam.conf добавьте или отредактируйте секцию:
[dvbapi]
enabled = 1
au = 1
pmt_mode = 6
request_mode = 1
listen_port = 9000
user = dvbapi_user
enabled = 1 — очевидно. au = 1 включает передачу EMM через dvbapi, что нужно для автообновления Conax-карты. pmt_mode = 6 — режим работы с PMT-таблицами; для Enigma2 это стандарт, не меняйте без причины.
request_mode = 1 означает, что OScam будет ждать ответа от reader перед следующим запросом. Это важно для Conax — карта иногда медленнее отвечает, чем другие CAS. При request_mode = 0 можно получить шторм ECM-запросов.
Файл oscam.dvbapi: приоритеты и игнор CAID
Файл /etc/oscam/oscam.dvbapi управляет тем, какую систему кодирования OScam выбирает первой, когда на транспондере их несколько. Это критично: если на спутнике одновременно идут Conax и Viaccess, OScam без подсказки может пойти не туда.
Пример файла с приоритетом для Conax:
P: 0B00:000000
P: 0B01:000000
I: 0500:000000
I: 1800:000000
Строки P: — приоритет (Priority), I: — игнор (Ignore). OScam попробует сначала CAID 0B00, потом 0B01, и не будет трогать Viaccess (0500) и Nagravision (1800). Без этого файла порядок непредсказуем, и часто выбирается не та система.
Формат строки: P: CAID:ProviderID. ProviderID 000000 означает «любой провайдер с этим CAID».
boxtype и pmt_mode для Enigma2
Параметр boxtype в секции [dvbapi] указывает тип приставки. Для большинства Enigma2-боксов (Dreambox DM900, Vu+ Ultimo, OpenATV) ставьте boxtype = dreambox или не указывайте вовсе — OScam определит автоматически.
Если ресивер на Android или нестандартной платформе — используйте boxtype = pc с listen_port. В этом случае ресивер подключается к OScam по TCP, а не через локальный socket.
Параметр user и привязка к oscam.user
Значение user в секции [dvbapi] — это имя пользователя из /etc/oscam/oscam.user, от имени которого dvbapi делает запросы. Этот пользователь должен существовать и иметь доступ к нужной группе reader.
Права доступа, EMM и автообновление (AU)
Без правильно настроенных прав пользователь (будь то dvbapi или сетевой клиент) просто не получит CW, даже если reader работает идеально. Conax также требует корректной настройки EMM — иначе подписка перестанет работать через несколько дней после последнего обновления ключей.
Секция oscam.user: au, group, caid
Минимальная рабочая секция пользователя в /etc/oscam/oscam.user:
[account]
user = dvbapi_user
password = secret
group = 1
au = conax_local
caid = 0B00
group = 1 должен совпадать с group = 1 в reader. Если не совпадает — user не видит reader, и в логе будет not found даже при живой карте. Это самая частая ошибка при первичной настройке.
au = conax_local — метка reader, через который будут проходить EMM-пакеты для этого пользователя. Если AU не нужен — оставьте пустым или удалите строку.
Включение обработки EMM (saveemm, emmcache)
EMM (Entitlement Management Message) — это пакеты, через которые оператор обновляет права на карте. Для Conax это критически важно: без EMM карта через какое-то время «забудет» ключи и перестанет открывать каналы.
В секции [reader] включите:
emmcache = 1,3,31
saveemm-u = 1
saveemm-s = 1
blockemm-unknown = 1
emmcache = 1,3,31 — кеш EMM: включён, до 3 попыток записи, 31 день хранения. saveemm-u и saveemm-s разрешают сохранение уникальных и общих EMM. blockemm-unknown = 1 блокирует неизвестные EMM — снижает нагрузку на карту без потери нужных пакетов.
Автообновление ключей и продление подписки на карте
Conax использует EMM как для обновления ключей дешифрования (периодически, раз в несколько часов/дней), так и для продления подписки (в зависимости от оператора). Без AU оба процесса не работают.
После включения AU в oscam.user и oscam.conf в логе должны появляться строки вида EMM write OK для вашего reader. Если их нет — проверьте, что au = 1 в секции [dvbapi] и что метка reader в au пользователя совпадает с label в oscam.server.
Карты с pairing (привязкой к конкретному ресиверу) — отдельная история. Такие карты выдают CW только при наличии корректного pairing-ключа. Если у вас именно такая карта, OScam нужно настроить с указанием pairing-данных, иначе CW будет приходить некорректным и картинки не будет.
Диагностика по логам и решение типовых ошибок
Хорошая новость: OScam логирует почти всё. Плохая — логи многословны и с непривычки сложно читаются. Вот что искать в первую очередь.
Чтение oscam.log: ecm, cw, rc-коды
Каждый ECM-запрос в логе заканчивается rc-кодом. Вот основные:
| rc-код | Значение | Что делать |
|---|---|---|
found |
CW получен успешно | Всё работает |
not found |
Reader не смог расшифровать | Проверить права, CAID, group |
timeout |
Reader не ответил вовремя | Увеличить ctimeout, проверить cardmhz |
key |
CW взят из SoftCam.Key | Карта не используется |
rejected |
Reader отклонил запрос | Нет прав на канал / неверный ident |
sleeping |
Reader отдыхает (sleep mode) | Уменьшить inactivity таймаут |
Для просмотра логов в реальном времени: tail -f /var/log/oscam/oscam.log | grep -i "ecm\|cw\|rc". Это даст поток только нужных строк без шума.
Ошибка 'card not found' / карта не инициализируется
Если в логе при старте нет строки с card system found для вашего reader — карта не инициализировалась. Причины по частоте:
- Неверный
cardmhz— попробуйте357,368,600,500по очереди - Устройство
/dev/ttyUSB0занято другим процессом — проверьтеlsof /dev/ttyUSB0 - Нет прав на устройство —
ls -la /dev/ttyUSB0должен показывать группуdialout, пользователь oscam должен быть в этой группе - Неверный
protocolдля вашего карторидера
После перезагрузки приставки встроенный sci-ридер иногда не переинициализируется автоматически. Добавьте в конфиг reader параметр autorestart = 1 — OScam будет перезапускать reader при потере карты.
ECM есть, но CW не приходит (rejected, timeout)
timeout без других ошибок — скорее всего слишком медленная карта или неверный cardmhz. Добавьте в [reader] параметр ctimeout = 3500 (миллисекунды) и посмотрите, изменится ли ситуация.
rejected означает, что карта ответила, но ответ некорректный. Типичные причины: карта не имеет прав на данный канал (нет активной подписки), или это канал с pairing и карта не привязана к данному ресиверу.
Если ECM-запросы идут, но всегда уходят не в тот reader — смотрите настройку oscam.dvbapi. Возможно, на транспондере конфликт CAID и OScam выбирает не Conax, а другую систему.
Web-интерфейс (httpd) для мониторинга reader и статуса карты
OScam поставляется с встроенным web-интерфейсом. Включить его в oscam.conf:
[webif]
httpport = 8888
httpuser = admin
httppwd = admin
httprefresh = 10
После перезапуска открывайте http://адрес_устройства:8888. В разделе Readers видно статус каждой карты: card inserted, серийный номер, поддерживаемые CAID и провайдеры, счётчики ECM и EMM. Это на порядок удобнее, чем читать сырой лог.
В разделе ECM History видна история всех запросов с rc-кодами и временем ответа. Если reader стабильно отвечает за 200–400 мс — всё хорошо. Больше 1000 мс — что-то не так с частотой карты или физическим соединением.
На этом, собственно, OScam conax настройка в основных сценариях закрыта. Большинство проблем укладываются в пять-шесть причин, которые мы разобрали. Если что-то не работает после всех проверок — включайте loglevel = 7 в oscam.conf и читайте debug-вывод: там уже будет явно написано, что именно не нравится OScam.
Какой CAID указывать для Conax в oscam.server?
Conax использует диапазон 0x0Bxx — чаще всего это 0B00 или 0B01. Точный CAID вашей карты виден в oscam.log при старте ридера или в web-интерфейсе (httpd, порт 8888) в разделе Readers. В параметре caid можно указать несколько значений через запятую: caid = 0B00,0B01.
Какое значение mhz и cardmhz ставить для карты Conax?
Стандартные рабочие значения — mhz = 357 и cardmhz = 357. Если карта не инициализируется, перебирайте cardmhz: 368, 500, 600. Для SmartReader Plus значение cardmhz может отличаться от mhz — это нормально и зависит от конкретного ридера.
Почему OScam видит карту, но каналы Conax не открываются?
Проверьте по порядку: 1) приоритет CAID в oscam.dvbapi — Conax должен стоять первым если на транспондере несколько систем; 2) group в reader совпадает с group в oscam.user; 3) rc-код в логе — rejected означает проблему с правами на карте, timeout — проблему со скоростью. Активная подписка на карте — само собой разумеется.
Нужно ли включать AU (автообновление) для Conax?
Да, если карта продлевается через эфир по EMM — а большинство Conax-карт именно так и работают. Без AU подписка не продлевается и через некоторое время каналы перестанут открываться. В oscam.user задайте au = метка_reader, в oscam.conf в секции [dvbapi] поставьте au = 1.
Как настроить приём Conax по сети, а не с локальной картой?
Создайте reader с protocol = newcamd или protocol = cccam. Для newcamd укажите device = хост,порт, user, password и key (14-байтовый ключ). Для cccam — те же поля без key. Привяжите нужный CAID через caid = 0B00. Локальный карторидер при этом не нужен.
Как проверить, что карта Conax инициализировалась корректно?
В oscam.log при старте ищите строку с именем вашего reader и текстом card system found или card detected, там же будет серийный номер карты и список CAID. Удобнее смотреть через web-интерфейс (порт 8888) — раздел Readers покажет статус card inserted, подписки и счётчики в реальном времени.