Миграция с CCcam на OScam: полное руководство 2026

Процесс cccam to oscam — одна из самых частых задач, с которой сталкиваются администраторы кардшаринг-серверов. CCcam застрял на версии 2.3.2 ещё в 2012 году, разработка заброшена, а OScam продолжает развиваться через форки oscam-emu и oscam-trunk. Если вы читаете это — вы, скорее всего, уже решили мигрировать. Хорошая новость: это реально сделать за несколько часов без потери подключений.

Главное — понять что конвертация cccam to oscam — это не просто "скопировать C-lines". Это смена архитектуры конфигурации. Один файл CCcam.cfg превращается в четыре отдельных файла OScam с разными ролями. Разберём по шагам.

Почему пользователи переходят с CCcam на OScam

CCcam — закрытый бинарник, последняя версия 2.3.2 вышла больше десяти лет назад. Никакого исходного кода, никаких патчей безопасности, никакой поддержки новых стандартов шифрования. OScam — открытый исходный код, активный SVN (revision 11800+), форки живут и обновляются.

Но разница не только в поддержке.

Ключевые архитектурные различия

CCcam — монолит. Один процесс, один файл конфигурации, один протокол. OScam — модульный: каждый протокол, каждый тип reader, каждая группа клиентов — отдельная сущность с независимыми параметрами. Это сложнее в начале, но даёт контроль который в CCcam просто невозможен.

CCcam не умеет писать в базу данных статистику по ECM, не умеет балансировать нагрузку между readers. OScam делает это из коробки через lb_mode. Разница в latency на медленных peers — ощутимая, я видел уменьшение времени ECM с 800ms до 200ms после включения lb_mode=1.

Что OScam умеет, а CCcam — нет

Веб-интерфейс на порту 8888 — полная картина по всем readers, users, ECM в реальном времени. EMM-поддержка для обновления карт прямо через OScam, без отдельного emu. DVB API для нативной интеграции с Enigma2 приёмниками — никаких промежуточных плагинов. Поддержка протоколов в одном бинарнике: cccam, newcamd, camd35, gbox — подключай клиентов любого типа.

gbox-протокол в CCcam вообще отсутствует. Newcamd в CCcam есть, но настраивается через один блок в CCcam.cfg без гибкости. В OScam каждый протокол — отдельная секция с десятками параметров.

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

Мигрировать стоит если: нужна EMM-поддержка, нужен веб-мониторинг, peers работают через разные протоколы, хочется lb_mode для автовыбора быстрого reader, приёмник — Enigma2 с поддержкой DVB API.

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

Подготовка к миграции: что собрать из CCcam

Никогда не останавливайте CCcam пока не сделали бэкап и не проверили что OScam поднялся на параллельном порту. Это правило номер один.

Где лежат конфиги CCcam

На Enigma2 приёмниках (Dreambox, VU+, Zgemma): /var/etc/CCcam.cfg. На обычном Linux-сервере: /usr/local/etc/CCcam.cfg или /etc/CCcam.cfg в зависимости от способа установки. На OpenEmbedded системах иногда встречается /etc/CCcam.cfg. Если не уверены — find / -name "CCcam.cfg" 2>/dev/null.

Структура C-line, N-line, F-line

C-line — подключение к удалённому CCcam-серверу (исходящий reader):

C: server.example.com 12000 myusername mypassword {hop=1}

N-line — подключение к newcamd-серверу:

N: server.example.com 15000 myuser mypass 01 02 03 04 05 06 07 08 09 10 11 12 13 14

F-line — локальный пользователь которому раздаётся CCcam:

F: username password

Именно C-lines нужно конвертировать в блоки [reader] в oscam.server. N-lines тоже конвертируются, но через protocol=newcamd с DES-ключом из N-line. F-lines станут записями в oscam.user.

Экспорт списка peers и hop-настроек

Пока CCcam ещё работает, зайдите через telnet: telnet localhost 16001, потом команда s — покажет активных peers и их статус. Скопируйте вывод. Это ваш список того что реально работает, а не того что прописано в конфиге (иногда в CCcam.cfg есть мёртвые C-lines которые стоит выкинуть сразу).

Hop-настройка {hop=1} в C-line означает что CCcam не будет передавать эти карты дальше по сети. Аналог в OScam — параметр cccmaxhops в reader.

Резервная копия рабочей конфигурации

cp /var/etc/CCcam.cfg /var/etc/CCcam.cfg.backup.$(date +%F)
# Либо для Linux-сервера:
cp /usr/local/etc/CCcam.cfg /usr/local/etc/CCcam.cfg.backup.$(date +%F)

Бэкап занимает секунду. Его отсутствие может стоить часов восстановления.

Установка OScam и базовая структура конфигов

OScam распространяется через официальный SVN-репозиторий и несколько git-зеркал. Для Enigma2 — ищите готовые ipk-пакеты в официальных фидах вашего образа (OpenATV, OpenPLi, OpenVix). Не берите бинарники с непонятных сайтов — только официальные сборки или компилируйте сами.

Где брать актуальный билд OScam

SVN: svn co https://svn.streamboard.tv/oscam/trunk oscam-trunk. Для Enigma2 приёмников — пакеты из репозитория образа, например opkg install oscam на OpenATV. Форк oscam-emu собирается из https://github.com/oscam-emu/oscam-patched если нужны программные эмуляторы.

Для классической миграции cccam to oscam достаточно ванильного oscam-trunk. oscam-emu нужен только в специфических сценариях с определёнными CAID.

Структура конфигурационных директорий

На Enigma2: /etc/tuxbox/config/oscam/. На Linux: /usr/local/etc/oscam/ или /etc/oscam/. Запустить с указанием директории: oscam -b -c /etc/tuxbox/config/oscam/.

Минимальный набор: oscam.conf, oscam.server, oscam.user, oscam.dvbapi

Четыре файла — и ничего лишнего для старта. Вот минимальный oscam.conf:

[global]
logfile = /tmp/oscam.log
maxlogsize = 1024
nice = -1
lb_mode = 1
lb_save = 300

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

[cccam]
port = 12000
reshare = 1
version = 2.3.2
minimizecards = 0

[dvbapi]
enabled = 1
au = 1
pmt_mode = 0
request_mode = 1

Webif на порту 8888 — только внутри LAN! Никогда не открывайте его наружу без VPN или как минимум без basic-auth и fail2ban.

Конвертация C-lines из CCcam.cfg в oscam.server

Это сердце всей миграции cccam to oscam. Каждая C-line из CCcam.cfg превращается в блок [reader] в файле oscam.server.

Маппинг параметров: CCcam C-line → OScam reader блок

CCcam C-lineOScam oscam.server
hostnamedevice=hostname,port
port(часть device)
usernameuser=username
passwordpassword=password
{hop=1}cccmaxhops=1
{reshare=0}cccreshare=0

Пример конвертации: одна C-line → готовый [reader]

CCcam.cfg:

C: peer.example.com 12000 myuser secretpass {hop=1}

Становится блоком в oscam.server:

[reader]
label                = peer1
protocol             = cccam
device               = peer.example.com,12000
user                 = myuser
password             = secretpass
group                = 1
cccversion           = 2.3.2
cccmaxhops           = 1
cccreshare           = 0
cccwantemu           = 0
inactivitytimeout    = 30
reconnecttimeout     = 30

Параметр label — уникальное имя reader. Используйте короткие латинские имена без пробелов: peer1, peer2, provider_nl, итп. Он появится в логах и в webif.

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

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

cccwantemu=0 по умолчанию — правильно для большинства случаев. Ставьте cccwantemu=1 только если peer предоставляет программные эмуляторы и вы это знаете.

cccmaxhops — максимальное количество прыжков карт которые OScam примет от этого reader. Hop=10 означает "принимать всё". Hop=1 — только карты первого уровня от прямого владельца.

Что делать с hop > 1 и reshare ограничениями

Если в CCcam была настройка {hop=2 reshare=0} — в OScam это: cccmaxhops=2 и cccreshare=0. cccreshare=0 означает что OScam не будет пересылать карты полученные от этого reader к вашим downstream-клиентам. cccreshare=1 — разрешает пересылку на один уровень.

Проверьте соглашения с каждым peer перед тем как ставить reshare. Это вопрос этики и иногда технических требований со стороны удалённого сервера.

Настройка oscam.user для клиентов и DVB API

В CCcam F-lines задавали клиентов. В OScam это файл oscam.user. Каждый блок [account] — один клиент с паролем, группой, фильтрами CAID.

Создание локального пользователя для приёмника

Если приёмник на той же машине что и OScam (Enigma2 с встроенным OScam):

[account]
user             = dvbapi
pwd              =
group            = 1
au               = peer1
dvbapi           = 1
uniq             = 0

Пустой пароль — специально для локального DVB API. OScam подхватит этого пользователя через секцию [dvbapi] автоматически.

Привязка через group= к нужным readers

Параметр group= — главная причина ошибки "ECM not found" у половины пользователей которые делают cccam to oscam миграцию. Логика простая: reader с group=1 обслуживает только клиентов с group=1. Если у вашего dvbapi-пользователя group=1, а reader — group=2, они никогда не увидят друг друга.

Для простой конфигурации поставьте group=1 везде. Когда освоитесь — можно разделить readers по группам и раздавать разным клиентам разные наборы источников.

Использование dvbapi user vs cccam user

Если приёмник подключается к OScam через CCcam-протокол (внешний box, или Enigma2 со старым плагином), создайте отдельный аккаунт с паролем и без dvbapi=1:

[account]
user             = myreceiver
pwd              = mypassword123
group            = 1
au               = peer1
uniq             = 1

На приёмнике в CCcam.cfg или плагине — C-line с этими данными указывает на ваш OScam по его IP и порту 12000.

Caid/ident фильтры для оптимизации

Параметр caid= в [account] ограничивает какие CAID доступны клиенту. Например, caid=1803,0604 — только Nagravision и Irdeto. Это уменьшает бессмысленные ECM-запросы и снижает нагрузку на readers. Для начала можно не ставить — OScam будет передавать всё что умеет.

Запуск, отладка и проверка через webif

Первый запуск

Запуск в фоне с указанием конфиг-директории:

oscam -b -c /etc/tuxbox/config/oscam/
# Или для Linux:
oscam -b -c /usr/local/etc/oscam/

Для отладки — запуск в foreground с максимальным debug-уровнем:

oscam -d 255 -c /etc/tuxbox/config/oscam/

Это поток всего — readers, clients, ECM, ATR. Много, но при первом запуске иначе не разобраться.

Чтение логов: уровни debug 0–65535

OScam использует битовую маску для debug-уровней. Полезные значения:

  • 1 — только ошибки
  • 4 — ATR и чтение физических карт
  • 64 — активность клиентов
  • 128 — активность readers
  • 255 — всё перечисленное + разное

Для диагностики readers достаточно -d 128. Полный 255 — только когда совсем непонятно что происходит, лог растёт быстро.

Web-интерфейс http://IP:8888 — Readers, Users, Status

Вкладка Readers — самая важная. Каждый reader показывает статус: CONNECTED или DISCONNECTED, количество карт, время последнего ECM. Если после старта все readers в DISCONNECTED — первым делом проверяйте group=, потом сетевую доступность пира, потом cccversion.

Вкладка Status показывает активные ECM-запросы в реальном времени. Там видно: запрос от какого user пришёл, какой reader его обработал, за сколько миллисекунд.

Проверка ECM через логи

tail -f /tmp/oscam.log | grep -i ecm

Строка успешного ECM выглядит так:

2026/01/15 14:23:01 c (ecm) found (245 ms) by peer1

Строка с ошибкой:

2026/01/15 14:23:01 c (ecm) not found (3000 ms)

Если видите "not found" с таймаутом 3000ms — reader либо не подключён, либо не находится в нужной группе, либо не имеет нужного CAID.

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

ECM 'not found' хотя CCcam работал на тех же peers

Причина номер один — несовпадение group=. Reader group=1, а user group=2. Проверьте оба файла. Причина номер два — в reader не прописан нужный CAID. Если в блоке [reader] есть параметр caid= с конкретными значениями, а запрос идёт на другой CAID — он будет проигнорирован.

Проверьте так: в webif → Readers → кликните на reader → посмотрите список CAID которые он видит. Сравните с CAID в запросе от приёмника.

Reader CONNECTED но карты не отдаёт

CONNECTED означает только что TCP-соединение установлено и авторизация прошла. Но peer мог не передать список карт (SID/CAID). Попробуйте cccwantemu=1 — это заставит OScam запросить у пира список программных эмуляторов тоже. Иногда помогает. Второй вариант — проверить cccmaxhops на стороне пира, он может ограничивать что отдаётся клиентам с определённым hop-уровнем.

Несовпадение cccversion — peer рвёт соединение

Это реальная проблема с легаси-серверами. CCcam 2.0.11 может отказывать клиентам которые представляются как 2.3.2. Решение прямолинейное: поставьте cccversion=2.0.11 в reader. Если не знаете версию пира — попробуйте 2.0.11, 2.1.4, 2.2.1, 2.3.2 по очереди и смотрите что даст CONNECTED без быстрого реконнекта.

Проблемы с reshare после миграции

Если downstream-клиенты жалуются что перестали получать определённые каналы — проверьте cccreshare в readers и reshare в секции [cccam] oscam.conf. Глобальный параметр reshare=1 в [cccam] разрешает передачу карт клиентам. Но если конкретный reader имеет cccreshare=0 — его карты не пересылаются, даже если глобально разрешено.


Можно ли держать CCcam и OScam одновременно на одной машине?

Да, но они не должны слушать один и тот же порт. CCcam по умолчанию занимает 12000. Измените порт OScam в секции [cccam]: поставьте например port = 12001 пока тестируете. Параллельная работа — лучший способ постепенной миграции: переключаете peers по одному с CCcam на OScam, проверяете, потом следующий. Когда все перенесены — останавливаете CCcam через /etc/init.d/CCcam stop и возвращаете OScam на порт 12000.

Как сконвертировать сразу 30+ C-lines из CCcam.cfg в oscam.server?

Вот awk-однострочник который парсит C-lines и генерирует блоки [reader]:

awk '/^C:/ {
  n++
  printf "[reader]\nlabel = peer%d\nprotocol = cccam\ndevice = %s,%s\nuser = %s\npassword = %s\ngroup = 1\ncccversion = 2.3.2\ncccmaxhops = 10\ncccreshare = 0\ncccwantemu = 0\nreconnecttimeout = 30\n\n", n, $2, $3, $4, $5
}' /var/etc/CCcam.cfg >> /etc/tuxbox/config/oscam/oscam.server

После автогенерации обязательно пройдите по каждому reader вручную: проставьте правильный cccversion для каждого пира, проверьте cccmaxhops, добавьте caid= если нужны фильтры. Автогенерация создаёт каркас, не финальный конфиг.

Почему после миграции часть каналов раскодируется медленнее?

OScam строже в таймаутах. По умолчанию ecmtimeout=3000 (3 секунды) в [global] oscam.conf. Если пир отвечает за 2.8 секунды — ECM иногда проваливается. Попробуйте увеличить до 5000. Второе — включите lb_mode=1 в [global], это включает loadbalancer который выбирает самый быстрый reader для каждого CAID. Без lb_mode OScam идёт к readers по порядку, не по скорости.

Нужно ли менять конфиг на приёмнике (Enigma2) после перехода на OScam?

Зависит от режима. Если приёмник подключается по CCcam-протоколу — нет. OScam слушает на том же порту 12000, cccam-протокол тот же, с приёмника менять ничего не нужно, только убедитесь что в oscam.user создан аккаунт с правильным паролем. Если переходите на нативный DVB API — нужно удалить CCcam-плагин с приёмника, установить OScam как нативный плагин, настроить oscam.dvbapi с правильными CAID/provid приоритетами.

Какие порты OScam использует и какие нужно открыть в firewall?

Стандартные: 8888 — webif, 12000 — cccam, 15000 — newcamd, 16001 — телнет/monitor. Наружу открывайте только тот порт через который peers подключаются к вам. Webif (8888) и monitor (16001) — никогда не снаружи без VPN. Если OScam запущен от не-root пользователя и нужен порт ниже 1024 — используйте setcap cap_net_bind_service=+ep /usr/bin/oscam вместо запуска от root.

OScam падает при старте — что смотреть первым?

Запустите в foreground без -b с максимальным дебагом: oscam -d 255 -c /путь/к/конфигам/. Чаще всего причины: синтаксическая ошибка в конфигах (дублирующийся label у readers — это фатальная ошибка), права доступа к директории конфигов (OScam должен иметь права записи для лога и oscam.srvid), занятый порт — проверьте lsof -i :8888 и lsof -i :12000. Конфиги скопированные с Windows часто приходят в DOS-формате (CRLF) — OScam может игнорировать такие строки. Прогоните через dos2unix /etc/tuxbox/config/oscam/*.conf.

Стоит ли использовать форки oscam-emu или oscam-stream?

oscam-emu добавляет программные эмуляторы для ряда устаревших CA-систем — полезен в специфических сценариях. oscam-stream — для relay потоков, это уже другая задача. Для обычной миграции cccam to oscam достаточно vanilla oscam-trunk из официального SVN. Не усложняйте: начните с основной сборки, переходите на форки только когда точно знаете зачем.

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

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