Переход с 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 или таймаут — порт закрыт.

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

Даже самая стабильная линия 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 или внешние мониторы.