Переход с 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.cfg | oscam.server параметр |
|---|---|
| C: hostname 12000 user pass | protocol = cccam |
| hostname | device = hostname,12000 |
| user | user = user |
| pass | password = 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 или внешние мониторы.