Переход с CCcam на OScam: миграция конфигов и настройка

Если вы занимаетесь настройкой кардшаринга больше пары лет, то знаете: рано или поздно тема cccam to oscam всплывает в каждом чате. CCcam работает — и вроде бы незачем трогать. Но потом появляется задача, которую CCcam не умеет, и начинается разбор полётов. Этот материал — для тех, кто уже имеет рабочие C-line и хочет перенести их в OScam без потери подключений.

Чем OScam отличается от CCcam и зачем мигрировать

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

Но "open-source" само по себе не аргумент. Давайте по делу.

Архитектурные различия: монолит CCcam против модульного OScam

CCcam — монолит. Один бинарник, один конфиг, всё или ничего. OScam построен по модульной архитектуре: каждый компонент (ридеры, сервер, dvbapi, веб-интерфейс) существует отдельно и может быть собран или отключён независимо. Это означает, что вы можете запустить OScam только как клиент, только как сервер, или как оба сразу — по разным протоколам одновременно.

На практике это выглядит так: ваш сервер принимает подключения по протоколу newcamd от старых клиентов и одновременно раздаёт по cccam на более новые. В CCcam такой конфигурации нет.

Поддержка протоколов: cccam, newcamd, camd35, gbox в одном демоне

OScam нативно работает со всеми основными протоколами кардшаринга: cccam, newcamd, camd35, gbox, cs378x. Каждый из них включается отдельной секцией в oscam.conf. CCcam понимает только собственный протокол и с трудом — newcamd в режиме клиента.

Это особенно важно при работе с разнородной инфраструктурой, где источники и клиенты используют разные протоколы.

Логирование и веб-интерфейс OScam (порт 8888)

Веб-интерфейс OScam на порту 8888 — это реально удобная штука. Видно статус каждого ридера, количество ECM-запросов, время ответа, список подключённых клиентов и их активность в реальном времени. В CCcam логи были текстовыми и читать их приходилось через grep и tail.

Включается в oscam.conf секцией [webif] с параметром port = 8888. Там же задаётся логин и пароль для доступа.

Когда миграция оправдана, а когда нет

Честно: если CCcam стабильно работает, вас устраивает один протокол и вы не планируете делать OScam-сервером для раздачи — не трогайте. Миграция оправдана, если нужна поддержка dvbapi на Enigma2, мониторинг через веб-интерфейс, мультипротокольная раздача или детальные логи для диагностики.

Структура конфигов OScam: какие файлы за что отвечают

Главный сюрприз при переходе cccam to oscam — вместо одного файла /etc/CCcam.cfg вас встречают четыре. Это не баг, это архитектура.

CCcam OScam Назначение
/etc/CCcam.cfg (всё) oscam.conf Глобальные параметры, сервера протоколов
C: lines (клиентские) oscam.server Ридеры — источники карт и подключений
F: lines (раздача) oscam.user Аккаунты клиентов, которые подключаются к вам
Встроенный dvb oscam.dvbapi Правила декодирования для локального ресивера

oscam.conf — глобальные настройки и веб-интерфейс

Здесь живут секции [global], [webif], [cccam], [newcamd], [dvbapi]. Это управляющий файл — что включить, на каком порту слушать, куда писать логи. Пример минимального конфига:

[global]
logfile = /var/log/oscam/oscam.log
nice = -1
maxlogsize = 500

[webif]
httpport = 8888
httpuser = admin
httppwd = yourpassword

oscam.server — описание ридеров (источников карт и подключений)

Каждая ваша C-line из CCcam.cfg превращается в блок [reader] здесь. Один ридер — один удалённый сервер. Именно этот файл содержит основной объём работы при миграции.

oscam.user — описание клиентов (кто к вам подключается)

Если вы раздаёте картам другим людям — их логины и пароли прописываются здесь в блоках [account]. В CCcam это были F-lines.

oscam.dvbapi — правила декодирования для локального ресивера

Этот файл нужен только если OScam работает на том же устройстве, что и тюнер (например, на ресивере Enigma2). Здесь указываются приоритеты CAID для декодирования каналов.

Расположение файлов: /etc/tuxbox/config/ или /usr/local/etc/

На Enigma2-ресиверах стандартный путь — /etc/tuxbox/config/. При сборке OScam из исходников под Linux сервер конфиги обычно кладут в /usr/local/etc/ или /etc/oscam/. Путь задаётся при запуске:

oscam -b -c /etc/oscam/

Проверить, какой путь использует запущенный процесс: ps aux | grep oscam — там будет видно параметр -c.

Перенос C-line из CCcam.cfg в oscam.server

Это главная техническая задача при переходе cccam to oscam. Давайте построчно.

Исходная строка в /etc/CCcam.cfg:

C: example.host 12000 myuser mypassword

Что означает каждое поле: C: — тип строки (Client), далее хост, порт, логин, пароль. Всё через пробел.

Эквивалент в oscam.server:

[reader]
label         = my_reader
protocol      = cccam
device        = example.host,12000
user          = myuser
password      = mypassword
group         = 1
cccversion    = 2.3.0
cccmaxhops    = 5

Разбор синтаксиса C-line: host port username password

Обратите внимание на device: хост и порт разделяются запятой без пробелов. Это критично — в CCcam они шли через пробел, и большинство ошибок при первой миграции именно здесь. device = example.host 12000 не будет работать.

Если ваша C-line содержала SID-фильтры после пароля (например, C: host 12000 user pass 0 0 1 { 0001:000000:1234 }), эти фильтры переносятся в параметры caid и ident:

caid          = 0001
ident         = 0001:000000

Создание блока [reader] с protocol = cccam

Поле label — произвольное имя ридера. Латиница и цифры, без пробелов. Важно: кириллица и спецсимволы в label ломают парсинг конфига на некоторых сборках OScam. Называйте ридеры так: server1, backup_server, provider_1.

Если у вас несколько C-line на один и тот же хост:порт с разными логинами — это отдельные блоки [reader] с разными label:

[reader]
label         = provider_main
protocol      = cccam
device        = example.host,12000
user          = user1
password      = pass1
group         = 1

[reader]
label         = provider_backup
protocol      = cccam
device        = example.host,12000
user          = user2
password      = pass2
group         = 2

Параметры cccversion, cccmaxhops, group

cccversion должен соответствовать тому, что ожидает удалённый сервер. Большинство современных серверов принимают 2.3.0. Если сервер старый (CCcam 2.1.x), попробуйте cccversion = 2.1.4 — несовпадение версий приводит к отказу хендшейка.

cccmaxhops — максимальная глубина прыжков по сети. Значение 5 подходит для большинства случаев. Слишком маленькое значение (1-2) может обрезать доступные CAID.

group — это связующее звено между ридером и пользователем. Ридер с group = 1 будет виден только тем аккаунтам в oscam.user, у которых тоже указан group = 1. Это самая частая причина нерабочих конфигов — люди копируют синтаксис, но не понимают роль group.

Если у вас есть ридер за NAT или с динамическим IP — используйте hostname в device вместо IP-адреса. OScam сам разрешает DNS при каждом переподключении.

Проверка статуса ридера в веб-интерфейсе (статус CONNECTED)

После запуска OScam открываете браузер: http://ваш-сервер:8888. На вкладке Readers должен быть ваш ридер со статусом CONNECTED (зелёный). Если статус DISCONNECTED или CONNECT WAIT — смотрите логи.

Настройка клиентов в oscam.user и раздача по протоколу cccam

Раздача картам другим — это две части: включить протокол в oscam.conf и прописать аккаунты в oscam.user.

Включение сервера cccam в oscam.conf ([cccam] port = 12000)

Добавьте в oscam.conf:

[cccam]
port          = 12000
version       = 2.3.0
reshare       = 1

Теперь OScam будет слушать порт 12000 по протоколу cccam. Клиенты смогут подключаться с обычными C-line, указав ваш сервер.

Блок [account]: user, pwd, group

В oscam.user добавьте блок для каждого клиента:

[account]
user          = clientname
pwd           = clientpassword
group         = 1
au            = 1

Параметр group = 1 здесь должен совпадать с group в oscam.server для ридера, карты которого вы хотите передавать этому клиенту. Ридер group 1 — клиент group 1. Без совпадения клиент подключится, но получит пустой список CAID и каналы не откроются.

Параметры au, caid, ident для фильтрации

au = 1 разрешает передачу EMM (обновление ключей). Если карта периодически требует обновления — включайте. Если хотите ограничить клиента конкретными CAID:

caid          = 1810,0500
ident         = 1810:000000

Это удобно если у вас несколько карт в ридере, а клиенту нужна только одна.

Связка group между oscam.server и oscam.user

Для наглядности: у вас два ридера с group = 1 и group = 2. Клиент A должен получать карты только от первого ридера — ставите ему group = 1. Клиент B получает от обоих — group = 1,2. Это работает как ACL, только через числа.

Настройка dvbapi для локального декодирования на ресивере

dvbapi актуален только если OScam запущен прямо на ресивере и декодирует каналы через локальный тюнер. Если OScam у вас на отдельном сервере — этот раздел можно пропустить.

Когда нужен dvbapi (Enigma2, локальный тюнер)

На Enigma2-боксах (Dreambox, VU+, Xtrend и другие) OScam устанавливается прямо на ресивер. В этом случае он перехватывает ECM-запросы от плеера, отправляет их к ридеру и возвращает CW для декодирования. В CCcam этим занимался встроенный механизм, в OScam — отдельный модуль dvbapi.

Секция [dvbapi] в oscam.conf: enabled, au, pmt_mode, boxtype

Добавляете в oscam.conf:

[dvbapi]
enabled       = 1
au            = 1
pmt_mode      = 4
request_mode  = 1
boxtype       = dreambox

Параметр boxtype задаёт тип устройства: dreambox, dbox2, ncam, pc, etc. Для большинства современных Enigma2-боксов подходит dreambox. Для VU+ иногда нужен neutrino — зависит от сборки прошивки.

Файл oscam.dvbapi и приоритеты CAID

Файл oscam.dvbapi определяет порядок попытки декодирования при наличии нескольких CAID. Пример:

P: 1810:000000
P: 0500:023800
P: 0604:000000

OScam будет пробовать CAID сверху вниз. Если первый ридер не ответил — переходит к следующему. Это полезно когда у вас несколько ридеров с пересекающимися CAID.

Если на ресивере ограниченный объём flash-памяти — выносите oscam.dvbapi, oscam.log и другие файлы на USB или SD-карту, монтируя их в /tmp или отдельную точку. В oscam.conf путь к логу задаётся параметром logfile.

Проверка через oscam log и ECM time

Нормальный ECM time — 200-600 мс. Это время от запроса до получения CW. Выше 800-1000 мс — медленный источник или перегруженный канал. Смотреть в веб-интерфейсе на вкладке Services или в логах. Если ECM time стабильно низкий после миграции cccam to oscam — настройка прошла успешно.

Типичные ошибки при миграции и их диагностика

Большинство проблем при переносе cccam to oscam диагностируются за 10 минут, если знать куда смотреть.

Запуск с максимальным отладочным выводом:

oscam -b -d 255 -c /etc/oscam/

Флаг -d 255 включает все уровни отладки. Лог будет многословным, но там будет видно буквально всё — каждый ECM-запрос, ответ ридера, статус аккаунта.

Ридер CONNECTED, но карт нет (несовпадение group)

Это самая распространённая проблема. Веб-интерфейс показывает ридер зелёным, CONNECTED, но в ENTITLEMENTS — пусто, и каналы не открываются. Почти всегда виновен параметр group.

Проверка: убедитесь, что group в блоке [reader] в oscam.server совпадает с group в блоке [account] в oscam.user. Если не совпадает — OScam считает, что этому клиенту данный ридер недоступен.

Вторая причина пустых ENTITLEMENTS — фильтр caid или ident в ридере отсекает то, что клиент запрашивает. Временно уберите caid и ident из блока reader — если заработало, проблема в фильтрах.

Ошибка 'connection refused' — порт закрыт фаерволом

Проверка порта:

nc -zv example.host 12000

Или через telnet:

telnet example.host 12000

Если connection refused — либо OScam не запущен, либо порт закрыт фаерволом. На Linux проверьте iptables или ufw. Порт раздачи (12000) и порт веб-интерфейса (8888) должны быть открыты для входящих соединений.

Неверный cccversion → отказ подключения

В логах это выглядит как handshake failed или authentication failed сразу после TCP-соединения. Удалённый сервер отвергает подключение из-за несовпадения версии протокола.

Если удалённый сервер работает на CCcam 2.1.x, ставьте cccversion = 2.1.4. Если на 2.2.x — попробуйте 2.2.1. Значение 2.3.0 работает с большинством современных серверов.

Чтение логов: oscam.log и debug-уровни (-d параметр)

В логах строки с ридерами начинаются с rdr, строки с клиентами — с client. Пример нормальной строки ридера:

rdr my_reader [CCCAM] CONNECTED to example.host:12000

Если видите RECONNECT каждые несколько секунд — удалённый сервер сбрасывает соединение. Причины: неверный пароль, несовпадение cccversion, IP забанен на удалённом сервере.

Уровни отладки: -d 1 — минимум (только ошибки), -d 64 — ECM-запросы, -d 255 — всё включая трафик.

Часто задаваемые вопросы

Можно ли запускать CCcam и OScam одновременно на одном сервере?

Да, без проблем — если они слушают разные порты. Конфликт возникает только когда оба демона пытаются занять один порт, например 12000. Это удобная стратегия для поэтапной миграции: запустите OScam на порту 12001, протестируйте несколько дней, сравните стабильность, и только потом переключайте клиентов. Так вы не рискуете потерять рабочую конфигурацию.

Сохранятся ли мои подключения после переноса C-line в oscam.server?

Да. Протокол cccam в OScam полностью совместим с оригинальным CCcam. Главное — правильно указать device как host,port через запятую (не через пробел как в CCcam.cfg) и подобрать cccversion соответствующий удалённому серверу. Если удалённая сторона работает на CCcam 2.3.0 — ставьте то же значение в ридере.

Почему ридер показывает CONNECTED, но каналы не открываются?

Первым делом проверьте параметр group — он должен совпадать между oscam.server и oscam.user. Это причина в 80% случаев. Дальше смотрите ENTITLEMENTS в веб-интерфейсе: если пусто — проблема в group или фильтрах caid/ident. Если ENTITLEMENTS есть, но каналы не идут — смотрите ECM time и логи на уровне -d 64.

Где лежат конфиги OScam по умолчанию?

На Enigma2-ресиверах стандартный путь /etc/tuxbox/config/. При ручной сборке из исходников обычно используют /usr/local/etc/ или создают /etc/oscam/. Путь задаётся при запуске флагом -c: oscam -b -c /etc/oscam/. Чтобы узнать путь запущенного процесса: ps aux | grep oscam — параметр -c будет виден в строке команды.

Какой нормальный ECM time и о чём он говорит?

200-600 мс — хороший показатель. 100-200 мс — отлично, источник близко или ресурсы хорошие. 800-1000 мс и выше — медленно: либо удалённый сервер перегружен, либо плохой пинг до него, либо слишком много хопов. Выше 1500 мс — каналы будут зависать. ECM time удобно смотреть в веб-интерфейсе на вкладке Services после нескольких минут работы.

Нужно ли открывать порты в фаерволе после установки OScam?

Да, обязательно. Порт раздачи (например 12000 для cccam-сервера) должен быть открыт для входящих TCP-соединений от ваших клиентов. Порт веб-интерфейса 8888 — для вашего браузера (можно ограничить только локальным IP). Проверка: nc -zv ваш-сервер 12000 с другой машины — должно выдать succeeded. Если connection refused или таймаут — порт закрыт.

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.