Переход с 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 или внешние мониторы.