CCcam config: настройка CCcam.cfg с нуля (2026)

Если ты уже поставил CCcam бинарник и смотришь на пустой файл конфигурации — ты в правильном месте. Разберём cccam config построчно: что куда писать, почему именно так, и где ломается у большинства.

Большинство гайдов в сети — это скопированный шаблон 2015 года с комментарием "вставь свою C-line и всё заработает". Не заработает. Без понимания структуры ты будешь гадать, почему клиенты подключаются, но каналы не приходят, или почему демон стартует и сразу падает.

Где лежит CCcam.cfg и как его редактировать

Расположение файла на разных системах (Linux, Enigma2, Dreambox)

Путь зависит от платформы. На чистом Linux-сервере конфиг живёт в /etc/CCcam.cfg. На Enigma2-ресиверах (VU+, Gigablue, Formuler) — /var/etc/CCcam.cfg. На старых Dreambox с OE 1.6 — /usr/keys/CCcam.cfg. На Enigma1 (DM7000, DM7020) файл там же, но синтаксис некоторых строк отличается — старые прошивки не понимают расширенные блоки { } с несколькими CAID.

Проверь где именно запущен твой CCcam:

ps aux | grep CCcam

В выводе будет полный путь к бинарнику и, если указан флаг -c, путь к конфигу. Если флага нет — CCcam ищет конфиг по умолчанию для своей платформы.

Права доступа: chmod 600 и владелец root

Это не опциональная рекомендация. Если у CCcam.cfg неправильные права, демон либо откажется читать файл, либо запустится, но другие системные пользователи увидят твои C-line с паролями.

chmod 600 /var/etc/CCcam.cfg
chown root:root /var/etc/CCcam.cfg

Режим 600 — только владелец читает и пишет. Никаких 644, никаких 777. Особенно это важно если на сервере несколько пользователей или ты гоняешь панель управления типа Webmin.

Перезапуск CCcam после изменения конфига

CCcam не подхватывает изменения на лету. Файл читается один раз при старте. После правки нужен перезапуск:

killall -15 CCcam && sleep 2 && CCcam -d

Флаг -15 — это SIGTERM, корректное завершение. Не используй -9 без крайней необходимости: демон может не успеть сохранить состояние кэша. Флаг -d запускает CCcam в daemon-режиме. На Enigma2 обычно есть /etc/init.d/softcam restart, что удобнее.

Проверка синтаксиса перед стартом

CCcam не имеет встроенной dry-run команды — это его главный недостаток. Способ обойти: скопируй рабочий конфиг в /tmp/test.cfg, внеси изменения туда, запусти тестовый экземпляр на другом порту:

CCcam -c /tmp/test.cfg -p 13001

Если стартовал и не упал за 10 секунд — синтаксис скорее всего корректный. Смотри лог: tail -f /tmp/cccam.log.

Структура CCcam.cfg: глобальные параметры

Глобальные параметры идут в начале файла, до любых C/F/N-line. Формат: ПАРАМЕТР : значение. Регистр ключей не важен, но принято писать заглавными.

SERVER LISTEN PORT — порт для входящих клиентов

По умолчанию — 12000. Это порт, на котором CCcam ждёт подключений от клиентов по протоколу CCcam. Менять имеет смысл если 12000 занят или хочешь спрятать от сканеров:

SERVER LISTEN PORT : 12000

Этот порт нужно открыть в firewall (iptables -A INPUT -p tcp --dport 12000 -j ACCEPT) и пробросить через NAT если сервер за роутером. Что писать в SERVER LISTEN при NAT — внешний IP не трогаешь в конфиге, только порт проброски. CCcam слушает на всех интерфейсах по умолчанию.

WEBINFO LISTEN PORT и WEBINFO USERNAME/PASSWORD

Веб-интерфейс для мониторинга — полезная вещь. Показывает подключённых клиентов, карты, активные ECM-запросы в реальном времени.

WEBINFO LISTEN PORT : 16001
WEBINFO USERNAME : admin
WEBINFO PASSWORD : s3cur3pass_2026

Предупреждение: без пароля WEBINFO открыт всему интернету. Я видел серверы с WEBINFO USERNAME : test и WEBINFO PASSWORD : test — через них видно всю конфигурацию, включая C-line подключений. Ставь нормальный пароль и ограничь доступ к 16001 только из локальной сети через firewall.

ALLOW TELNETINFO — стоит ли открывать

ALLOW TELNETINFO : 0

По умолчанию выключен и правильно. Telnet-интерфейс CCcam передаёт данные открытым текстом. На продакшн-сервере держи это выключенным, пользуйся WEBINFO или логом.

DISABLE EMM — когда выключать

DISABLE EMM : 0

EMM (Entitlement Management Messages) — обновление прав карты. Если ты не используешь физическую карту (работаешь только на C-line от чужого сервера), EMM тебя не касается. Если карта есть — не выключай, иначе подписка не будет обновляться.

SHOW TIMING и DEBUG уровни логирования

SHOW TIMING : 0
DEBUG : 0

SHOW TIMING добавляет в лог время обработки каждого ECM-запроса — полезно для диагностики лагов на канале. DEBUG от 0 до 3, где 3 — максимальная детализация. На живом сервере держи 0 или 1, иначе лог растёт гигабайтами.

M G CAMD PORT и M G CAMD KEY

M G CAMD PORT : 0
M G CAMD KEY : 01 02 03 04 05 06 07 08 09 10 11 12 13 14

Если не используешь mgcamd-совместимый протокол — оставь порт 0 (выключен). При включении нужен DES-ключ из 14 байт в hex. Этот же ключ прописывается на клиентах mgcamd.

C-line: подключение к удалённому серверу

C-line — основной способ получить карты с чужого сервера по протоколу CCcam. Это то, что тебе даёт провайдер при покупке подписки. Понимание формата cccam config здесь критично — одна опечатка и соединение не поднимется.

Синтаксис: C: hostname port username password

C: server.example.com 12000 myuser mypassword no { 0:0:1 }

Разбор по полям:

  • C: — тип строки, обязателен, с пробелом после двоеточия
  • server.example.com — hostname или IP сервера. IPv6 пишется в скобках: [2001:db8::1] — CCcam 2.3+ поддерживает, более старые версии нет
  • 12000 — порт (TCP)
  • myuser — логин, регистрозависимый
  • mypassword — пароль. Если содержит пробел — не работает, пробел разделитель. Символы $, #, ! работают без экранирования. Кириллица в пароле — не используй, некоторые версии CCcam не читают не-ASCII

Дополнительные флаги: no { 0:0:1 } — отключить reshare

Часть после пароля опциональная, но важная. no означает "не делать reshare этой карты клиентам" — устаревший синтаксис, сейчас управление reshare через блок { }. Если написать просто:

C: server.example.com 12000 user pass

...CCcam применит дефолтные настройки reshare. Явно указывай блок — так контроль понятнее.

Несколько C-line с одинаковым CAID: CCcam строит список доступных источников и при запросе ECM пробует их последовательно — сначала ту, что выше в файле. Если первая недоступна — переключается на следующую автоматически. Это встроенный failover.

DES key для зашифрованных подключений

C: server.example.com 12000 user pass 01 02 03 04 05 06 07 08 09 10 11 12 13 14

14 hex-байт после пароля — это DES-ключ для шифрования трафика по CCcam-протоколу. Большинство современных CCcam-серверов работают без ключа (ключ 01 02 ... 14 — это null-ключ, фактически без шифрования). Если провайдер дал ключ — вставляй. Без него соединение всё равно подымется, просто без дополнительного шифрования.

Hop limit и почему важен правильный hop

Hop — это количество прыжков карты между серверами. Hop 1 означает: карта пришла напрямую с физического ридера. Hop 2 — прошла через один промежуточный сервер. Каждый hop добавляет задержку. При hop>3 качество декодирования заметно деградирует: зиппинг, артефакты на HD-каналах.

Хороший провайдер даёт карты с hop 1-2. Если в логах видишь hop 4-5 — это перепроданная цепочка, и проблемы с качеством будут регулярными.

F-line: создание учётных записей для клиентов

Синтаксис: F: username password uphops downhops

F-line описывает аккаунт клиента, который подключается к твоему серверу:

F: clientuser strongpassword123 1 0 { 0:0:2 }
  • clientuser — логин клиента, уникальный на каждого человека/устройство
  • strongpassword123 — пароль. Минимум 8 символов, без пробелов, без кириллицы
  • 1 — uphops: сколько хопов клиент получит от нас. 1 = карты отдаём как hop+1 от оригинала
  • 0 — downhops: сколько хопов мы принимаем от клиента обратно (обычно 0 — клиент нам карты не присылает)

Параметр reshare и контроль раздачи карт

В блоке { 0:0:2 } третья цифра — это сколько хопов клиент может раздать своим клиентам. Значение 2 означает: клиент может раздать дальше с hop 2. Если хочешь запретить reshare полностью — ставь 0:

F: clientuser pass 1 0 { 0:0:0 }

Для рядовых клиентов всегда ставь reshare=0. Для доверенного пира с которым меняетесь картами — максимум 1. Провайдеры отслеживают reshare и банят аккаунты при обнаружении цепочек.

CWS_KEEPALIVE и таймауты соединения

CWS KEEPALIVE : 1
CWS KEEPALIVE INTERVAL : 60

Keepalive держит TCP-соединение живым через NAT. Без него некоторые роутеры закрывают "молчащие" соединения через 5-15 минут, и клиент отваливается без ошибки. Интервал 60 секунд — разумный дефолт.

Привязка к конкретным CAID/provider

Можно ограничить клиента конкретными провайдерами или CAID:

F: clientuser pass 1 0 { 0:0:0, 0500:032830 }

Здесь 0500:032830 — CAID 0500 (Viaccess), provider ID 032830. Клиент получит только эти каналы. Полезно если продаёшь разные пакеты и не хочешь давать клиенту доступ ко всем картам сервера.

Динамический IP клиента: F-line не привязывает к IP по умолчанию — клиент может подключаться с любого адреса. Это нормальная практика. Если нужна привязка к IP — CCcam не поддерживает это нативно в F-line, только через firewall.

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

Когда использовать N-line вместо C-line

N-line нужна когда сервер-источник работает на протоколе newcamd, а не CCcam. Это типичная ситуация при подключении к OScam как серверу или к старым mgcamd-серверам. Newcamd стабильнее работает на нестабильных каналах с высоким пакетным джиттером — протокол лучше переживает временные разрывы без реконнекта.

Синтаксис: N: host port user pass DES_KEY (14 байт)

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

DES-ключ обязателен для newcamd — в отличие от C-line где он опциональный. Ключ — 14 hex-пар разделённых пробелами. Это не тот же ключ что в C-line: это конкретный ключ newcamd-протокола, согласованный с сервером.

Получение DES key из newcamd.list

OScam и mgcamd часто дают настройки в формате newcamd.list. Строка выглядит так:

CWS = server.example.com 15000 15000 myuser mypassword 01 02 03 04 05 06 07 08 09 10 11 12 13 14

Из неё берёшь: hostname (поле 3), port (поле 4, первый из двух), user (поле 6), password (поле 7), и 14 байт ключа (поля 8-21). Трансформация в N-line прямая.

Совместимость с OScam и mgcamd

OScam как сервер отлично работает с N-line в CCcam-клиенте. В oscam.server прописываешь протокол newcamd, порт и DES-ключ — с клиентской стороны прописываешь N-line с теми же данными. Связка CCcam-клиент + OScam-сервер через N-line — одна из самых стабильных конфигураций для физических карт.

Reshare и контроль раздачи: { 0:0:N }

Что означает { uphop:reshare:downhop }

Блок { } работает по-разному в C-line и F-line, и это то место где большинство путается.

Контекстuphopresharedownhop
C-line (входящая карта)Макс. хопов принять от этого сервераМожно ли раздать эту карту клиентамМакс. хопов принять от клиентов обратно
F-line (клиентский аккаунт)Хопов отдаём клиентуКлиент может reshareХопов принимаем от клиента обратно

Пример: C: host 12000 user pass { 2:1:0 } — принять карты с глубиной до 2 хопов, разрешить раздавать клиентам с 1 хопом, обратно от клиентов не принимать.

Почему reshare=0 чаще всего правильный выбор

Если твой сервер продаёт доступ — клиенты должны получать карты только от тебя, не перепродавать дальше. Reshare=0 в F-line это гарантирует. Если хочешь обменяться картами с другом — ставь reshare=1 максимум и только для его аккаунта.

Цепочки reshare и деградация качества

Каждый reshare — это +1 к hop. При hop=1 ECM-запрос проходит путь: клиент → твой сервер → сервер с картой → обратно. При reshare=2 цепочка удлиняется ещё раз. На HD-каналах с коротким окном декодирования (особенно спортивные трансляции) задержка >500мс даёт артефакты. Чем длиннее цепочка, тем хуже.

Защита от утечки карт

Уникальный логин на каждого клиента — обязательно. Если один логин утечёт (клиент поделился другом, подключил 5 тюнеров), ты видишь это в логе и можешь заблокировать конкретный аккаунт без сброса других. Общий логин для всех клиентов — это билет к потере аккаунта у провайдера.

Кэш и оптимизация: CACHE EX, CWS_KEEPALIVE

CACHE EX и cache exchange между серверами

CACHE EX : 1
CACHE EX PORT : 12001
CACHE EX PEERIP : 192.168.1.10
CACHE EX PEERSENDPORT : 12001
CACHE EX PEERRECVPORT : 12001

Cache exchange (CACHE EX) — это обмен уже расшифрованными CW (Control Words) между CCcam-серверами без повторного обращения к карте. Если сосед уже расшифровал ECM для того же канала — он присылает CW тебе, ты отвечаешь ему своими. Карта не нагружается лишними запросами.

Уровни: 1 = только принимать кэш от пиров, 2 = принимать и отправлять, 3 = приоритизировать кэш над прямым запросом. На одиночном сервере без пиров CACHE EX не даёт ничего — выключай.

Когда кэш помогает, когда мешает

Помогает: много клиентов смотрят один канал одновременно, карта получает 50+ одинаковых ECM в секунду. Кэш снижает нагрузку до 1 запроса на период. Мешает: если пир ненадёжный и присылает устаревшие или неверные CW — картинка замерзает. Доверяй кэш только проверенным серверам.

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

Если подключение к провайдеру через VPN или туннель с пингом 150-300мс, стандартных таймаутов может не хватить:

ZAPPING TIME : 8
ECM TIMEOUT : 3000
REUSE CW : 1

ECM TIMEOUT в миллисекундах — сколько ждать ответа от сервера до fallback на следующий источник. По умолчанию обычно 2000мс, при высоком пинге ставь 3000-4000. ZAPPING TIME — секунды ожидания при переключении канала. REUSE CW позволяет использовать предыдущий CW если новый не пришёл вовремя — помогает избежать моргания при нестабильном канале.

EXTRA EMM-G PROVIDER

EXTRA EMM-G PROVIDER : 0 0

Дополнительные Global EMM для конкретных провайдеров. Нужно только если используешь физические карты с нестандартными EMM-потоками. Для обычного клиентского сценария с C-line не трогай.

Типичные ошибки и их диагностика

Чтение лога CCcam — это основной инструмент диагностики. Лог пишется в /tmp/cccam.log (иногда /var/log/cccam.log зависит от системы). Смотри в реальном времени:

tail -f /tmp/cccam.log

Структура строки лога: [дата время] [уровень] [компонент] сообщение. Уровни: INFO — штатная работа, WARNING — проблема но демон продолжает, ERROR — что-то сломано.

Лог 'login failed' — проверка credentials и hop

"login failed" или "authentication error" в логе — неверный логин/пароль или клиент пытается подключиться с учёткой которой нет в F-line. Проверь регистр (user ≠ User), отсутствие пробелов в конце строки, кодировку файла (не UTF-8 BOM). Если credentials точно верные — проверь hop: если провайдер прислал карты с hop>2, а ты в F-line поставил uphops=1, клиент может не видеть нужные карты.

'no card available' — карта не дошла из-за reshare

Клиент авторизовался, но каналы не декодируются. Смотри в логе "no card" или "no provider". Причины в порядке вероятности:

  • В C-line провайдера стоит { 0:0:0 } — карты не раздаются клиентам
  • F-line клиента ограничена конкретным CAID которого нет у провайдера
  • Uphops в F-line = 0 — клиент вообще не получает карты
  • Провайдер дал hop 3, F-line требует hop ≤2

'connection refused' — порт/firewall

Проверяй в три шага:

# CCcam вообще запущен и слушает порт?
netstat -anp | grep CCcam

# Порт доступен снаружи?
telnet your-server-ip 12000

# Firewall пропускает?
iptables -L -n | grep 12000

Если netstat показывает CCcam на 12000, но telnet снаружи отказывает — проблема в firewall или NAT. Если netstat пустой — CCcam не запустился или упал при старте.

Сервер запускается и сразу падает — синтаксис конфига

Самые частые причины краша при старте — ошибки синтаксиса в cccam config:

  • Лишний пробел между параметром и двоеточием: C : host вместо C: host
  • Пропущен пробел перед блоком: ...pass{ 0:0:1 } вместо ...pass { 0:0:1 }
  • Кириллические символы в имени/пароле (даже если визуально похожи на латинские)
  • Неэкранированные спецсимволы в пароле — пробел разрывает строку
  • Старый формат для Enigma1 не понимает расширенные блоки с CAID, пиши просто no вместо { 0:0:0 }

Восстановление: всегда держи бэкап рабочего конфига. Перед правкой: cp /var/etc/CCcam.cfg /var/etc/CCcam.cfg.bak.$(date +%Y%m%d_%H%M%S). Упал после правки — один cp назад и снова работает.

Несколько физических карт в одном сервере описываются отдельными reader-секциями (если используешь OScam как бэкенд с CCcam) или просто перечисляются в файле конфига smartcard-секциями. Порядок важен: CCcam использует первую подходящую карту для каждого CAID. Ставь более надёжный источник выше.

Какие права должны быть у файла CCcam.cfg?

chmod 600 и владелец root (chown root:root). Режим 644 или 777 — это дыра: другие пользователи системы увидят твои C-line с паролями. CCcam на некоторых версиях вообще откажется читать конфиг если права слишком открытые.

Что значит { 0:0:1 } в конце C-line или F-line?

Блок управления reshare в формате { uphop:reshare:downhop }. Значение { 0:0:1 }: принять карты (uphop=0 — без ограничения по хопам), не разрешать reshare другим (reshare=0), принимать обратно до 1 хопа от клиентов. Третья цифра в C-line и F-line означает разное — смотри таблицу в разделе про reshare.

Какой порт открывать в firewall для CCcam?

12000 TCP (SERVER LISTEN PORT) — обязательно для клиентских подключений. WEBINFO порт (обычно 16001) — только из локальной сети, не в интернет. Если используешь CACHE EX — дополнительно порт из CACHE EX PORT (обычно 12001 UDP).

В чём разница между C-line и N-line?

C-line — родной протокол CCcam, проще в настройке, DES-ключ опциональный. N-line — протокол newcamd, требует DES-ключ из 14 байт, стабильнее на нестабильных каналах и совместим с OScam/mgcamd как серверами. Если провайдер даёт CWS= строку из newcamd.list — это N-line.

Почему клиенты подключаются, но не получают каналы?

Три основные причины: (1) в F-line uphops=0 — клиент не получает карты вообще; (2) в C-line провайдера reshare=0, а ты не пересмотрел блок { }; (3) ограничение по CAID в F-line отрезает нужный пакет. Смотри лог: сообщение "no card available" подтверждает эти случаи.

Можно ли использовать один CCcam.cfg для сервера и клиента одновременно?

Да, это стандартная практика. Один cccam config содержит глобальные параметры + C-line (получаем карты с чужих серверов) + F-line (раздаём своим клиентам). CCcam одновременно работает и как клиент к провайдеру, и как сервер для твоих клиентов — всё из одного процесса.

Как проверить что конфиг корректен без рестарта?

CCcam не имеет встроенной dry-run проверки. Способ: скопируй конфиг в /tmp/test.cfg, запусти вторую копию CCcam -c /tmp/test.cfg -p 13001 и смотри tail -f /tmp/cccam.log. Если стартовал без ошибок — синтаксис валидный. Убей тестовый процесс killall -15 CCcam перед применением основного.

Что делать если CCcam перестал стартовать после правки конфига?

Сначала восстанови бэкап: cp /var/etc/CCcam.cfg.bak.20260101_120000 /var/etc/CCcam.cfg. Потом разбирай правку в тестовом файле. Типичные ошибки: лишний пробел в C-line, кириллица в пароле, пропущенный пробел перед { }, спецсимволы которые CCcam не переваривает. Бэкап перед каждой правкой — не рекомендация, это правило.

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.