Переход с 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 открываться не будут — и это не проблема шаринга, а просто отсутствие файла ключей.

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

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