OScam и CCcam: настройка, отличия и связка протоколов

OScam и CCcam — два самых известных эмулятора карт для приёма зашифрованных спутниковых каналов через сеть. Оба решения работают по схожему принципу: ресивер или ПК получает ECM-запросы от приёмного оборудования и обменивается данными с сервером, который возвращает управляющие слова для расшифровки потока. Несмотря на общую задачу, у этих программ разная архитектура, разный набор поддерживаемых протоколов и разные подходы к конфигурации. В этой статье разберём, чем отличаются OScam и CCcam, как настроить каждый из них с нуля и как связать их между собой через CCcam-протокол.

Что такое OScam и CCcam простыми словами

CCcam появился раньше и долгое время оставался стандартом де-факто благодаря простоте настройки: один текстовый файл CCcam.cfg, минимум параметров, быстрый старт. OScam — более поздний проект, написанный как универсальный эмулятор с поддержкой десятков протоколов одновременно: CCcam, Newcamd, Radegast, CS378x, Constant Cool Watchdog и другие. За счёт этого OScam умеет одновременно принимать подключения по одному протоколу и раздавать по другому, что и делает возможной связку с CCcam-серверами.

Ключевое отличие на уровне архитектуры: CCcam исторически closed-source (последние открытые версии остались на уровне 2.1.4, дальнейшее развитие идёт через форки вроде CCcam Extended или OSCam-emu с CCcam-модулем), тогда как OScam полностью открыт, активно обновляется сообществом и компилируется под конкретное железо — от Dreambox и VU+ до обычного Raspberry Pi.

Основные различия между OScam и CCcam

Архитектура и поддержка протоколов

OScam построен по модульной схеме: в конфигурации отдельно описываются reader'ы (источники карт или подключения к другим серверам) и proxy-подключения. Один и тот же экземпляр OScam может одновременно:

  • читать локальную карту через смарт-карт-ридер;
  • подключаться к внешнему CCcam-серверу как клиент;
  • раздавать доступ по Newcamd на порт 15000;
  • раздавать доступ по CCcam-протоколу на порт 12000 другим ресиверам.

CCcam такой гибкости не даёт: он умеет работать только в рамках собственного протокола CCcam, у него нет поддержки Newcamd или Radegast в родном виде.

Поддерживаемые системы условного доступа

Обе программы работают с популярными CAS: Irdeto, Nagravision, Conax, Viaccess, Cryptoworks, Seca/Mediaguard. OScam дополнительно поддерживает работу с CW-cache, LB (load balancing) между несколькими reader'ами одной и той же CAS и встроенный конвертер AU (auto update карт). У CCcam балансировка нагрузки реализована проще — через приоритеты в строке C-подключения.

Производительность и стабильность

На маломощном железе (например, старые ресиверы с процессором на 300–400 МГц) CCcam иногда работает стабильнее за счёт меньшего потребления памяти — бинарник компактнее и не тянет за собой десятки неиспользуемых модулей. OScam при полной сборке со всеми протоколами и веб-интерфейсом требует больше RAM, но эту проблему решает кастомная компиляция только нужных модулей через флаги configure (например, `--enable-module-camd35` без `--enable-webif`, если веб-панель не нужна).

Установка и настройка OScam

Требования и способы установки

OScam можно собрать из исходников через SVN/Git-репозиторий или установить готовый пакет через ipkg/opkg на энигма-подобных ресиверах (Enigma2, VU+ OE). Для сборки из исходников на Linux потребуются build-essential, libssl-dev и, при желании веб-интерфейса, libpcsclite-dev для поддержки физических карт. Типичная команда конфигурации:

./config.sh
make USE_LIBUSB=1 USE_LIBCRYPTO=1

Основные конфигурационные файлы

После установки в каталоге /etc/tuxbox/config или /var/etc/oscam появляются три ключевых файла:

  • oscam.conf — глобальные настройки: логирование, вебинтерфейс, монитор-порт;
  • oscam.server — список reader'ов, то есть источников ключей (локальные карты, подключения к другим кардшарингам);
  • oscam.user — список пользователей, которым разрешено подключаться к этому OScam.

Пример базового блока в oscam.conf для включения веб-интерфейса на порту 8888 с базовой авторизацией:

[webif]
httpport = 8888
httpuser = admin
httppwd = strongpassword123
httprefresh = 10

Пример настройки reader для приёма с внешнего сервера

Допустим, у вас есть доступ к внешнему CCcam-серверу с логином testuser и паролем testpass на IP 203.0.113.10, порт 12000. В oscam.server добавляется блок:

[reader]
label = external_cccam
protocol = cccam
device = 203.0.113.10,12000
user = testuser
password = testpass
cccversion = 2.3.0
group = 1
inactivitytimeout = 30
reconnecttimeout = 15

Параметр cccversion важен: он определяет, под какой версией протокола OScam представится удалённому серверу, — некоторые сервера блокируют подключения со слишком старой или слишком новой версией.

Установка и настройка CCcam

Конфигурационный файл CCcam.cfg

Вся настройка CCcam укладывается в один файл CCcam.cfg, который обычно лежит в /etc или /var/etc в зависимости от прошивки. Базовые директивы:

C: 203.0.113.20 12000 login2 pass2
N: 15000
P: 12000
S: portal.example-share.tv
L: cccam.log

Здесь строка C: описывает подключение к чужому серверу-донору (аналог reader в OScam), N: задаёт порт Newcamd (в чистом CCcam обычно недоступен без патчей), P: — порт, на котором сам CCcam будет раздавать доступ по протоколу CCcam.

Настройка share и friends-подключений

Для приёма подключений от других пользователей (friend-подключения) в CCcam.cfg добавляется блок F: с логином и паролем клиента и ограничением по количеству одновременных подключений (maxconnections). Пример:

F: friend01 pass01 1 0 0
{
  cccmaxhops = 2
  group = 2
}

Параметр cccmaxhops ограничивает, через сколько промежуточных серверов может пройти ключ, прежде чем дойдёт до конечного клиента — это защищает от избыточной задержки на длинных цепочках share.

Связка OScam и CCcam через протокол CCcam

Как OScam эмулирует CCcam-сервер

Главный практический сценарий связки — когда есть доступ к донору только по CCcam-протоколу, а сам приёмник (например, старый ресивер только с Newcamd-клиентом) требует другой протокол. OScam в этом случае выступает переходником: подключается к CCcam-донору как клиент (reader с protocol = cccam), а локальным устройствам раздаёт ключи уже по Newcamd или по своему же CCcam-модулю.

Пример полной конфигурации связки

Reader на стороне OScam (получение от CCcam-донора):

[reader]
label = donor_cccam
protocol = cccam
device = 198.51.100.5,12000
user = donorlogin
password = donorpass
group = 1
cccversion = 2.3.0

Пользователь на стороне OScam, которому нужно раздать доступ по Newcamd (например, для старого ресивера Dreambox 800 HD):

[account]
user = dreambox800
pwd = localpass
group = 1
au = 1
uniq = 1

Раздел camd35 в oscam.conf для активации Newcamd-порта:

[camd35]
port = 15000

После перезапуска OScam ресивер настраивается стандартным Newcamd-клиентом на подключение к IP OScam-сервера, порт 15000, с логином dreambox800 и указанным паролем — а ключи фактически приходят из внешнего CCcam-источника, пройдя через reader donor_cccam.

Типичные ошибки при связке протоколов

  • Несовпадение group-параметров. Если у reader'а group = 1, а у account group = 2, ключи не дойдут — группы должны пересекаться.
  • Неверная cccversion. Донор может отклонять подключение при версии протокола выше 2.3.0 — стоит уточнять у оператора донора, какую версию он ожидает.
  • Двойной uniq. Параметр uniq = 1 у account запрещает параллельные подключения одного и того же логина с разных IP — полезно для защиты от расшаривания собственного доступа, но может мешать при тестировании с нескольких устройств одновременно.

Диагностика и решение проблем

Чтение логов

В oscam.conf лог включается директивой logfile = /var/log/oscam.log. В логе строки вида "ECM (odd) not found" указывают на то, что донор не смог вернуть ключ для конкретного канала — часто это временная проблема на стороне донора, а не ошибка конфигурации. Строки "client disconnected" с кодом ошибки rejected обычно означают, что логин или пароль указаны неверно, либо превышен лимит подключений maxconnections.

Частые причины обрывов соединения

Обрывы CCcam-подключений чаще всего связаны с тремя факторами: нестабильным интернет-каналом донора, превышением заданного inactivitytimeout (если reader долго не получает ни одного ECM-запроса, соединение сбрасывается) и блокировкой порта на стороне провайдера. Порт 12000, который используется CCcam по умолчанию, иногда попадает под фильтрацию у мобильных операторов — в таких случаях помогает смена порта на нестандартный (например, 17000) по согласованию с донором.

Какой протокол выбрать

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

На практике многие пользователи держат связку из обоих решений: CCcam как лёгкий клиент на стороне конечного ресивера и OScam как центральный узел, который агрегирует несколько источников и раздаёт ключи по нужным протоколам всем устройствам в локальной сети.

Practical checklist for smooth viewing

Even the best CCCam or OSCam line needs two or three simple preparations. Update your receiver firmware, reset the ECM cache once a week and keep 15–20% free space on the USB stick or internal flash so that the reader can store keys without delays.

When tuning a dish, aim for MER/BER reserve: a two‑degree offset or a loose F‑connector often causes the “freezing” that users blame on cardsharing. Keep a short patch cord to test alternative routers, and save two profiles in OSCam — one for TCP, one for UDP — so you can switch instantly if your ISP starts filtering a protocol.

Utgard.tv monitors each hub 24/7, but you can speed up diagnostics by keeping a short log of your receiver actions. Note the time when you changed the channel, which CAID was active and whether you used Wi‑Fi or Ethernet. This tiny “journal” helps engineers reproduce your environment in the lab and return with a solution in minutes instead of hours.

  • Keep two line slots enabled: if the first server hits a maintenance window, the second one instantly takes over without re-entering credentials.
  • Run a monthly speed and latency test. Stable 1–2 Mbps with ping <80 ms is enough for SD/HD, but if jitter exceeds 20 ms, switch the router to wired mode.
  • Save the Utgard.tv status page and Telegram bot @utgard_tv_bot to bookmarks — they publish maintenance notices before SEMrush or uptime monitors raise alerts.