Переход с CCcam на OScam: полная инструкция

Если ты уже настроил CCcam, всё работает, и ты думаешь о переходе — первый вопрос не "как", а "зачем". Конвертация cccam to oscam занимает пару часов, но только если понимаешь, как маппируются параметры. Если делать вслепую — потеряешь рабочие линии и будешь гадать почему reader подключился, но каналы не открываются.

Эта инструкция — для тех, кто уже работает на CCcam и хочет перенести конфиг без потерь. Не для новичков, выбирающих первый sofcam.

Зачем переходить с CCcam на OScam

CCcam — закрытый проприетарный бинарник. Разработка де-факто остановилась, последние официальные версии датируются несколькими годами назад. OScam — open-source, репозиторий на svn.streamboard.tv получает регулярные ревизии, у него есть активное сообщество и сборки под ARM, MIPS, x86.

Но честно: если CCcam у тебя работает стабильно и задачи закрывает — миграция не обязательна. Это не апгрейд ради апгрейда.

Ключевые отличия архитектуры CCcam и OScam

CCcam — монолитный демон, заточенный под один протокол. Конфиг плоский: C-линии, F-линии, несколько глобальных опций. Он прост, но ограничен.

OScam работает по модульной схеме: отдельные конфиги для глобальных настроек (oscam.conf), reader-ов (oscam.server), пользователей (oscam.user), dvbapi (oscam.dvbapi). Каждый reader — это отдельная сущность с собственными параметрами CAID, протоколом, hop-лимитами.

Веб-интерфейс на порту 8888 — реально удобная вещь. Видно статус каждого reader, время ECM, откуда пришёл запрос. В CCcam такого нет.

Что вы получаете: поддержка протоколов newcamd, cccam, mgcamd одновременно

Главный аргумент для миграции cccam to oscam — мультипротокольность. Один демон OScam может одновременно слушать на cccam-порту для одних клиентов и на newcamd-порту для других. Можно держать reader типа cccam к одному серверу и newcamd к другому — они маршрутизируются через систему групп.

EMM-обработка (обновление ключей смарт-карты) в OScam настраивается гранулярно. В CCcam это либо включено, либо нет.

Когда переход НЕ нужен (работающий CCcam без проблем)

Если у тебя простой сетап — одна C-линия, несколько F-линий для клиентов, всё стабильно — незачем трогать. OScam сложнее в настройке именно из-за гибкости. Больше параметров = больше мест где ошибиться.

Переход имеет смысл если: хочешь одновременно несколько протоколов, нужен детальный лог с ECM-статистикой, используешь EMM или несколько CAID от разных провайдеров, или CCcam начал нестабильно работать после смены железа.

Соответствие параметров: CCcam.cfg → oscam.server / oscam.user

Вот где большинство туториалов по cccam to oscam подводят — нет прямой таблицы. Давай исправим это.

C-линия (C: host port user pass) → reader типа cccam

Каждая C-линия в /etc/CCcam.cfg становится отдельным блоком в /etc/tuxbox/config/oscam/oscam.server (на Enigma2-ресивере) или /usr/local/etc/oscam.server (на обычном Linux-сервере).

CCcam.cfgoscam.server параметр
C: hostname 12000 user passprotocol = cccam
hostnamedevice = hostname,12000
useruser = user
passpassword = pass
hop count (4-й флаг)cccmaxhops = N
no no no no no (5 флагов)cccwantemu = 0, inactivitytimeout = 30

Пример. Было в CCcam.cfg:

C: myserver.example.com 12000 mylogin mypassword 01 no no no no no

Стало в oscam.server:

[reader]
label         = myserver_cccam
protocol      = cccam
device        = myserver.example.com,12000
user          = mylogin
password      = mypassword
group         = 1
cccversion    = 2.3.0
cccmaxhops    = 1
cccwantemu    = 0
inactivitytimeout = 30

Параметр cccversion — важный. Если удалённый сервер старый и работает на протоколе 2.0.11 или 2.2.1, ставь именно его версию. Несовпадение ломает коннект тихо — reader висит в состоянии CONNECTED, но ECM не проходит.

F-линия (F: user pass) → запись в oscam.user

Каждая F-линия из CCcam.cfg — это аккаунт клиента. В OScam они переезжают в /etc/tuxbox/config/oscam/oscam.user.

Было:

F: clientuser clientpass 1 0 0 0 0 0:0:1 #5 Comment

Стало:

[account]
user          = clientuser
password      = clientpass
group         = 1
cccmaxhops    = 1
au            = 1

Число после логина в F-линии (первый флаг) — это cccmaxhops. Ноль означает без ограничений, 1 — клиент не видит hopped каналы. Маппируй как есть.

N-линия (newcamd) → reader типа newcamd

N-линии конвертируются в reader с протоколом newcamd:

N: hostname 15050 user pass 01 02 03 04 05 06 07 08 09 10 11 12 13 14

Становится:

[reader]
label         = myserver_newcamd
protocol      = newcamd
device        = hostname,15050
user          = user
password      = pass
key           = 0102030405060708090a0b0c0d0e
group         = 2
caid          = 0500

14 hex-байт из N-линии — это DES-ключ, записывается в параметр key без пробелов. CAID нужно прописать явно — в CCcam он определялся автоматически, в OScam лучше задать вручную.

Параметры hop, sharelimit и их аналоги в OScam

В CCcam.cfg есть SHARE LIMIT = N — ограничение на глубину шаринга исходящих линий. В OScam это cccreshare в секции [cccam] глобального oscam.conf. Значение 1 — клиенты видят только прямой шаринг, не перешаривают дальше.

Если в CCcam.cfg у тебя десятки C-линий с разными hop-значениями — группируй их по group в oscam.server. Reader с hop=1 кидай в group=1, с hop=2 в group=2. Потом в oscam.user задаёшь каждому клиенту нужный набор группы. Это чище, чем было в CCcam.

Пошаговая настройка конфигов OScam

Четыре файла — вот весь конфиг OScam. Разберём каждый.

oscam.conf — базовые секции [global], [cccam], [webif]

[global]
logfile       = /tmp/oscam.log
loglevel      = 4
maxlogsize    = 500
pidfile       = /tmp/.oscam.pid

[cccam]
port          = 12000
reshare       = 1
stealth       = 1

[webif]
httpport      = 8888
httpuser      = admin
httppwd       = yourpassword
httpallowed   = 127.0.0.1,192.168.0.0-192.168.255.255

Секция [cccam] — это слушающий порт для входящих клиентов по протоколу CCcam. Порт 12000 — стандарт, но можно любой выше 1024. stealth = 1 скрывает OScam от идентификации как softcam в некоторых клиентских реализациях.

loglevel = 4 — максимальная детализация. Удобно при отладке, но на ARM-ресивере с ограниченным CPU и диском это реально тормозит. После того как убедился что всё работает — опускай до loglevel = 1.

oscam.server — описание reader для каждой бывшей C-линии

Каждый reader — отдельный блок [reader]. Пример для двух бывших C-линий:

[reader]
label         = upstream_1
protocol      = cccam
device        = server1.example.com,12000
user          = login1
password      = pass1
group         = 1
cccversion    = 2.3.0
cccmaxhops    = 1
caid          = 0500,1810

[reader]
label         = upstream_2
protocol      = cccam
device        = server2.example.net,15000
user          = login2
password      = pass2
group         = 1
cccversion    = 2.2.1
cccmaxhops    = 2

Параметр caid — необязательный, но если один reader покрывает конкретные CAID, прописывай явно. Иначе OScam будет гонять ECM-запросы по всем reader-ам по очереди, что увеличивает время ответа.

oscam.user — аккаунты клиентов из бывших F-линий

[account]
user          = client1
password      = clientpass1
group         = 1
cccmaxhops    = 1
au            = 0

[account]
user          = client2
password      = clientpass2
group         = 1
cccmaxhops    = 0

Механизм group — это самая важная вещь, которую нужно понять при переходе cccam to oscam. ECM-запрос от клиента уходит только на те reader-ы, у которых совпадает номер группы. Если у client1 group=1, а reader upstream_1 тоже group=1 — они связаны. Если группы не совпадают — reader для этого клиента невидим, и ECM будет висеть в "not found" при статусе CONNECTED. Это причина №1 ошибок при миграции.

oscam.dvbapi — привязка для просмотра на самом ресивере

Нужен только если OScam запущен непосредственно на ресивере с Enigma2 или аналогичной прошивкой, где есть DVB-тюнер.

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

На отдельном Linux-сервере без DVB-железа этот файл не нужен. Не создавай его зря — OScam будет пытаться инициализировать dvbapi и ругаться в лог.

Запуск демона и проверка через веб-интерфейс :8888

На Enigma2 OScam обычно запускается через init.d или плагин. На чистом Linux:

./oscam -b -c /etc/tuxbox/config/oscam

или, если конфиги в /usr/local/etc:

/usr/local/bin/oscam -b -c /usr/local/etc

После запуска открывай http://<ip>:8888 в браузере. Вкладка "Readers" — статус каждого reader. Должен быть CONNECTED зелёным. Если INACTIVE — неверный пароль или недоступный хост. Если CONNECTED но красный — проблема с CAID или версией протокола.

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

Конфиги написаны, OScam запущен, reader подключились. Теперь нужно убедиться что шаринг реально работает, а не просто "соединение установлено".

Чтение oscam log в реальном времени (loglevel, logfile)

Лог в реальном времени:

tail -f /tmp/oscam.log

При loglevel = 4 каждый ECM-запрос виден с деталями: откуда пришёл, на какой CAID, через какой reader ушёл, сколько времени занял. При loglevel = 1 — только коннекты/дисконнекты и ошибки. Для продакшн-режима достаточно 1.

На ARM-ресивере (Vu+, Dreambox, Zgemma) с 256MB RAM — loglevel = 4 может реально замедлить декодирование. Проверяй ECM-тайм до и после изменения уровня. Разница в 200-300ms — нормально.

Расшифровка статусов ECM: found / not found / timeout

В веб-интерфейсе вкладка "Status" показывает потоки декодирования:

  • found зелёный — ECM успешно расшифрован, время указано в ms
  • not found красный — reader ответил, но CAID/провайдер не совпал или нет подписки
  • timeout — reader не ответил в отведённое время (default: 1500ms)
  • cache — ответ взят из кэша (хорошо, значит быстро)

"not found" при CONNECTED reader — почти всегда несовпадение group, неправильный CAID, или reader не покрывает этот провайдер.

Проверка ECM time и hop count в веб-интерфейсе

Норма для ECM time — до 500ms. Если стабильно ниже 300ms — отлично. Если выше 800ms — смотри на количество хопов и качество соединения с upstream-сервером.

В веб-интерфейсе на вкладке Readers видна колонка "hops". Если у тебя в oscam.server стоит cccmaxhops = 2, а реальный hop count приходит 3 — OScam заблокирует этот канал. Увеличь maxhops или уточни у провайдера реальную глубину шаринга.

Сравнение качества дешифровки с прежним CCcam

Честный тест: запусти CCcam и OScam параллельно на разных портах, подключи двух клиентов к разным демонам и смотри ECM-тайм на одних и тех же каналах. OScam при правильной настройке обычно быстрее на 50-100ms из-за более эффективного кэширования ECM.

Если после перехода тайм вырос — скорее всего дело в loglevel=4 или в том, что group не настроен и OScam опрашивает все reader по очереди.

Типичные ошибки при переходе и их решение

Разберём по реальным симптомам.

Reader CONNECTED, но ECM not found — несовпадение CAID/provid или group

Самая частая проблема после cccam to oscam миграции. Reader подключён, статус зелёный, но каналы не открываются.

Проверяй в первую очередь group. В oscam.server у reader должен быть group = 1, и в oscam.user у клиента тоже group = 1. Если хоть один из них другой — ECM не маршрутизируется.

Вторая причина — CAID. Открой лог с loglevel = 4, найди строку с ECM-запросом и посмотри какой CAID приходит от клиента. Сравни с тем, что реально покрывает reader. Несовпадение — добавь явно в caid = в oscam.server.

# Смотрим что приходит в лог:
grep "ECM" /tmp/oscam.log | tail -20

Клиенты не подключаются — закрыт порт 12000 или не совпадает cccversion

Если клиент не может подключиться вообще — сначала проверь firewall:

iptables -A INPUT -p tcp --dport 12000 -j ACCEPT
iptables -A INPUT -p tcp --dport 8888 -j ACCEPT

На Ubuntu/Debian с ufw:

ufw allow 12000/tcp
ufw allow 8888/tcp

Если firewall открыт, но клиент всё равно отваливается — проверь версию протокола. Некоторые старые клиенты понимают только CCcam 2.0.11 или 2.1.4. В oscam.conf есть параметр cccversion в секции [cccam] — выставь под версию клиента.

Permission denied при старте — права на конфиги и SoftCam.Key

OScam запускается от определённого пользователя и должен иметь права на чтение конфигов и запись лога. Стандартное исправление:

chmod 644 /etc/tuxbox/config/oscam/*.conf
chmod 644 /etc/tuxbox/config/oscam/oscam.server
chmod 644 /etc/tuxbox/config/oscam/oscam.user
chown -R oscam:oscam /etc/tuxbox/config/oscam/

SoftCam.Key — файл с BISS и constant CW ключами — должен лежать в директории конфигов OScam или по пути, указанному в oscam.conf параметром softcam =. Без него каналы на BISS не откроются даже при правильном шаринге.

Высокий ECM time — слишком много hops или медленный аплинк

Если ECM-тайм стабильно выше 600-700ms — смотри в лог на "hops" и "ecmtime". Чем больше хопов проходит запрос — тем выше задержка. Каждый hop добавляет ~50-150ms.

Также: loglevel = 4 на медленном ARM-процессоре (например, старый Dreambox с BCM7335) реально тормозит обработку. Переключи на loglevel = 1 и замерь снова — разница часто удивляет.

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

Да. Главное — разные порты. CCcam слушает, скажем, на 12001, OScam на 12000. Конфликта не будет, если они не оба цепляются к dvbapi одновременно. На Enigma2 dvbapi может использовать только один softcam — поэтому параллельный запуск удобен для тестирования, но не для продакшн-работы. Двойная нагрузка на reader (оба демона тянут одновременно) — реальный риск блокировки аккаунта у провайдера.

Как сконвертировать CCcam.cfg в формат OScam автоматически?

Конвертеры C-линий в reader-блоки существуют — ищи "cccam2oscam converter" на форумах satdreamgr или dreamosat. Но результат всегда нужно проверять вручную. Group, CAID, cccversion — эти три параметра конвертер ставит дефолтные, и почти всегда их нужно корректировать под реальную ситуацию. Полностью автоматической миграции без ручной проверки не бывает — это иллюзия.

Какой порт использует OScam для входящих cccam-клиентов?

Задаётся в [cccam] секции oscam.conf параметром port. Чаще всего это 12000, но можно любой. Веб-интерфейс — отдельный порт, по умолчанию 8888, задаётся в [webif] как httpport. Оба порта нужно открыть в firewall — забытый iptables-правило это классика при настройке.

Что такое group в oscam.server и oscam.user и зачем он нужен?

Group — механизм маршрутизации ECM-запросов. ECM от клиента (oscam.user) уходит только на reader-ы (oscam.server) с тем же номером группы. Например: у клиента group = 1, у reader тоже group = 1 — они связаны. Если числа не совпадают — reader для этого клиента просто не существует, хотя статус CONNECTED. В CCcam аналога нет — там всё автоматически. Это главная причина ошибок при миграции cccam to oscam.

Почему после перехода ECM time стал больше, чем в CCcam?

Три вероятные причины. Первая — loglevel = 4 включён, и на медленном железе это тормозит обработку: переключи на 1 и замерь снова. Вторая — OScam опрашивает несколько reader-ов последовательно из-за неправильно заданных CAID: пропиши явно caid = в нужных reader-ах. Третья — реальная глубина хопов у нового reader больше чем было в CCcam. Норма — до 500ms. Больше 800ms стабильно — ищи причину в логе.

Нужно ли переносить SoftCam.Key при миграции?

Да, если используешь каналы на BISS или constant CW. В OScam этот файл называется oscam.keys или подключается как SoftCam.Key — зависит от сборки. Путь указывается в oscam.conf параметром softcam =. Без него каналы, которые работали в CCcam через ключи из SoftCam.Key, в 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.