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

Если ты впервые разбираешься с cccam config — добро пожаловать в мир, где один лишний пробел в конце строки роняет весь демон. Это руководство написано для тех, кто уже поставил CCcam на Enigma2-ресивер или Linux-сервер и сейчас смотрит на пустой cfg и не знает с чего начать. Разберём каждую директиву, каждое поле C-линии и F-линии, покажем реальные команды и объясним что делать когда ничего не работает.

Что такое CCcam.cfg и где он лежит

CCcam.cfg — это единственный конфиг-файл демона CCcam. Всё: серверные аккаунты, клиентские подключения, локальные ридеры, права доступа — описывается именно здесь. Никакой базы данных нет, только текстовый файл с директивами.

Расположение файла на Enigma2

На большинстве образов файл лежит по пути /etc/CCcam.cfg. Это стандартное расположение для DreamElite, VTi, и большинства старых сборок. Но на OpenATV 7.x и OpenPLi 9.x путь другой — /var/etc/CCcam.cfg.

Если правишь файл в /etc/, а демон продолжает работать по-старому — скорее всего, образ читает /var/etc/. Проверить просто: ls -la /var/etc/CCcam.cfg. Если файл есть — редактировать нужно его.

Расположение на DreamOS и OpenATV/OpenPLi

DreamOS (оригинальные Dreambox DM900/DM920/DM7080) держит конфиги в /etc/CCcam.cfg. OpenATV начиная с версии 6.4 переехал на /var/etc/CCcam.cfg — это симлинк на tmpfs, который пересоздаётся при загрузке из постоянного хранилища. OpenPLi с версии 8.0 — аналогично.

После обновления образа нередко бывает так: старый cfg в /etc/ остался, новый образ читает /var/etc/, и демон стартует с пустым конфигом. Это одна из самых частых причин "всё было, после обновления перестало работать".

Права доступа (chmod 600) и владелец файла

CCcam.cfg хранит пароли в открытом виде. Никакого шифрования нет. Поэтому файл должен быть доступен только root'у:

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

Если выставить 644 — любой пользователь на ресивере (а на Enigma2 там бывает Samba, FTP, SSH с слабым паролем) сможет прочитать все твои C-линии. Это не паранойя, а базовая гигиена.

Чем редактировать

По SSH: nano /etc/CCcam.cfg — самый удобный вариант. Vi тоже работает если знаешь команды. По FTP: WinSCP в режиме SCP или FileZilla. Главное — сохранять файл в кодировке UTF-8 без BOM и с Unix-переносами строк (LF, не CRLF). Если редактируешь в Notepad на Windows и сохраняешь как есть — получишь CRLF, и CCcam не запустится. В Notepad++ это лечится через Edit → EOL Conversion → Unix (LF).

Синтаксис CCcam.cfg: структура и обязательные директивы

Вот минимальный рабочий шаблон для клиентского ресивера, подключающегося к удалённому серверу:

# CCcam.cfg — минимальная рабочая конфигурация
# Каждая директива: КЛЮЧ : значение (двоеточие, пробел)

SERVER LISTEN PORT : 12000
WEBINFO LISTEN PORT : 16001
ALLOW TELNETINFO : yes
USERNAME : webadmin
PASSWORD : yourwebpassword

DEBUG : 0
SHOW EXTENDED CLIENT INFO : yes

MINIMUM DOWNHOPS : 1
MAXIMUM CLIENT HOPS : 1

RESHARE : 0
FALLBACK CARDS : 1

# C-линии клиента (подключение к серверу)
C: server.example.com 12000 mylogin mypassword

# F-линии (аккаунты для твоих клиентов)
# F: clientuser clientpass 0 1

Несколько правил синтаксиса, которые новички игнорируют и потом ищут проблему часами. Директивы регистрозависимы — Server Listen Port это не то же самое что SERVER LISTEN PORT. Между ключом и значением строго двоеточие с пробелом после. Комментарии начинаются с #. В конце файла обязательно должна быть пустая строка — без неё последняя директива или линия может не распознаться.

SERVER LISTEN PORT и WEBINFO LISTEN PORT

SERVER LISTEN PORT — порт на котором CCcam принимает входящие подключения от клиентов. По умолчанию 12000. Можно поменять на любой, но тогда в F-линии клиентов нужно указывать этот же порт.

WEBINFO LISTEN PORT — веб-интерфейс с информацией о картах, клиентах и C-линиях. По умолчанию 16001. Никогда не открывай этот порт наружу без firewall — там видны все пароли.

ALLOW TELNETINFO, USERNAME, PASSWORD

ALLOW TELNETINFO : yes включает telnet-интерфейс на порту 16002 для мониторинга. USERNAME и PASSWORD здесь — это учётные данные для веб-интерфейса на 16001, не для C-линий. Поставь нормальный пароль, не "admin".

DEBUG и SHOW EXTENDED CLIENT INFO

DEBUG : 0 — по умолчанию. Уровни 0-5, где 5 — полный verbose-лог. При отладке ставишь 3 или 4, потом возвращаешь на 0 — логи на уровне 4-5 разрастаются быстро и жрут место на tmpfs.

SHOW EXTENDED CLIENT INFO : yes добавляет в веб-интерфейс IP клиентов, hops, ECM time. Полезно для диагностики.

MINIMUM DOWNHOPS и MAXIMUM CLIENT HOPS

MINIMUM DOWNHOPS : 1 — минимальное количество hops для карт, которые CCcam принимает от пиров. Значение 1 означает только карты прямого соединения. Повышение до 2-3 позволяет принимать карты через цепочку серверов, но увеличивает ECM latency.

MAXIMUM CLIENT HOPS : 1 — сколько hops клиент может быть удалён от исходной карты. При значении 1 клиент получает только карты из твоих прямых C-линий. Это прямо влияет на защиту от перепродажи.

RESHARE и FALLBACK CARDS

RESHARE : 0 глобально отключает перераздачу карт от пиров. Если ставишь 1 — клиенты могут получать карты не только с твоих локальных ридеров, но и через твои C-линии. FALLBACK CARDS : 1 включает использование резервных карт если основная не отвечает.

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

C-линии — это основа любого cccam config для клиентского ресивера. Каждая строка описывает одно подключение к удалённому CCcam-серверу.

Формат: C: hostname port username password

C: server.example.com 12000 mylogin mypassword
C: 192.168.1.10 12000 localuser localpass
C: backup.example.com 12001 backupuser backuppass

Четыре обязательных поля: хост (имя или IP), порт (TCP), логин, пароль. Всё через пробел. Лишний пробел в конце строки — особенно после пароля — ломает парсинг. CCcam воспринимает пробел как часть пароля и LOGIN FAILED гарантирован. Проверять удобно через cat -A /etc/CCcam.cfg | grep "^C:" — символ $ должен стоять сразу после пароля.

Если провайдер даёт hostname вместо IP — при перезагрузке ресивера CCcam стартует раньше чем DNS резолвится. Решение: в C-линии ставить IP, а не домен. Или добавить в /etc/hosts статическую запись.

Опциональные поля: DES key и кастомные параметры

# Обычная C-линия (CCcam протокол)
C: server.example.com 12000 user1 pass1

# C-линия без DES (явно указано no)
C: server.example.com 12000 user1 pass1 no

# C-линия с кастомным DES ключом (16 байт hex)
C: server.example.com 12000 user1 pass1 0102030405060708090a0b0c0d0e0f10

Большинство серверов работают без DES. Если сервер требует DES — провайдер обязан его прислать вместе с данными для подключения.

Несколько C-линий и приоритет

CCcam пробует C-линии сверху вниз. Первая успешно подключившаяся используется для ECM-запросов, остальные стоят в резерве. Если хочешь приоритизировать один сервер — ставь его первым. Временно отключить линию без удаления: поставь # в начало строки.

Проверка статуса через CCcam Info

Открой http://IP_ресивера:16001 в браузере. Раздел "Server" показывает статус каждой C-линии: CONNECTED, CONNECTING, или DISCONNECTED. Раздел "Shares" — доступные карты с CAID, провайдер ID и количеством hops. Через telnet на порт 16002 та же информация в текстовом виде — удобно скриптовать.

F-линии: настройка собственного сервера для клиентов

F-линии описывают аккаунты клиентов, которые подключаются к твоему CCcam-серверу. Без F-линий ресивер работает только как клиент.

Формат: F: username password uphops downhops

# Базовый аккаунт клиента
F: client1 clientpass1 0 1

# Аккаунт с reshare для доверенного клиента
F: trusted1 trustedpass 0 2

# Аккаунт только для конкретного CAID (например, 0x0500 — Viaccess)
F: viaclient viapass 0 1 { 0500:000000 }

# Несколько CAID
F: multiclient multipass 0 1 { 0500:000000, 0100:000000 }

uphops — сколько hops разрешено для карт которые клиент передаёт серверу (обычно 0). downhops — сколько hops клиент получает от сервера (обычно 1).

Параметр reshare

Reshare в F-линии переопределяет глобальный RESHARE для конкретного клиента. Значение 0: клиент получает только локальные карты с ридера сервера. Значение 1: плюс карты из C-линий первого уровня. Значение 2 и выше создаёт цепочки пересылки — это быстрый путь к loop и ECM timeout. Для обычных клиентов ставь 0 или максимум 1.

Ограничения по картам: { caid:ident }

Фигурные скобки в конце F-линии ограничивают клиента конкретными картами. CAID пишется в hex без 0x-префикса: 0500 для Viaccess, 0100 для Seca, 0B00 для Conax, 0D00 для CryptoWorks, 1800 для Nagravision. Ident — провайдер ID, 000000 означает "любой".

Привязка к IP через ALLOWED IP

Добавь после F-линии:

ALLOWED IP : 203.0.113.0/24

Или привяжи прямо в F-линии если версия CCcam это поддерживает. Это хорошая защита от брутфорса — даже зная логин/пароль, подключиться можно только с разрешённого IP.

N-линии и newcamd, R-линии и radegast

N-линия — это подключение по протоколу newcamd, а не CCcam. Другой протокол, другая строка, другой DES-ключ.

Формат N-линии для newcamd-протокола

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

После пароля идут 14 байт DES-ключа в hex, через пробел. Без этого ключа подключение не произойдёт — newcamd обязательно требует DES. Если у тебя есть выбор между C: и N: для подключения к одному серверу — выбирай C:. Overhead меньше, CCcam-к-CCcam работает стабильнее.

DES-ключ: где взять

Ключ даёт провайдер вместе с N-линией. Сгенерировать самому для своего newcamd-сервера (например, если поднимаешь его для совместимости с OScam-клиентами):

openssl rand -hex 14 | sed 's/../& /g'

Получишь 14 байт в нужном формате.

R: для radegast-серверов

R: server.example.com 8000 ruser rpass

Radegast — старый legacy-протокол. Встречается редко, в основном на старых Windows-серверах с CCcam 2.1.x. Если провайдер даёт R-линию в 2026 — это повод задуматься о качестве его инфраструктуры.

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

N-линии нужны если клиент на твоей стороне — это mgcamd или OScam с newcamd-протоколом. Для подключения OScam как клиента к CCcam-серверу используй oscam.server с protocol = newcamd и указывай N-линию от сервера. Для CCcam-к-CCcam всегда C:.

Локальные ридеры: SERIAL READER и USB-карта

Если у тебя есть физическая смарт-карта в ресивере или внешний ридер — она описывается директивой SERIAL READER в CCcam.cfg.

SERIAL READER директива и устройства

# Встроенный картоприёмник Enigma2-ресивера
SERIAL READER : /dev/sci0

# Внешний USB-ридер
SERIAL READER : /dev/ttyUSB0 phoenix

# Несколько ридеров
SERIAL READER : /dev/sci0
SERIAL READER : /dev/ttyUSB0 phoenix

/dev/sci0 — встроенный SCI (Smart Card Interface) на большинстве DVB-ресиверов. /dev/ttyUSB0 — USB-ридер подключённый снаружи. После перезагрузки USB-устройства иногда меняют номер: был ttyUSB0, стал ttyUSB1. Лечится через udev rule — привязать по VID:PID к фиксированному имени типа /dev/cardreader.

Параметры скорости (mhz, cardmhz)

SERIAL READER : /dev/sci0
READER SMARTCARD MHZ : 357
READER CARDMHZ : 357

357 = 3.57 MHz — стандарт для большинства карт. Некоторые карты работают на 600 (6 MHz) или 800 (8 MHz). Если карта не читается — попробуй снизить до 357. Значение указывается в десятках килогерц: 357 = 3570 кГц = 3.57 МГц.

PHOENIX, SMARTREADER+, INFINITY USB

Тип ридера указывается вторым параметром после пути: phoenix, smartreader, infinity. Phoenix — самый распространённый тип для самодельных и дешёвых USB-ридеров. SmartReader+ — популярный ридер с собственной прошивкой. Если не знаешь тип — ставь phoenix, в большинстве случаев работает.

Проверка работы локальной карты

В веб-интерфейсе на 16001 раздел "Cards" покажет карту с CAID, ident и статусом. Если карта не появляется — проверь права на устройство (ls -la /dev/sci0), убедись что устройство существует, посмотри лог CCcam на строки "CARD" и "SCI".

Порты и firewall: что открывать

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

Порты и их назначение

12000/tcp — основной порт сервера CCcam (SERVER LISTEN PORT). Его открываешь для входящих клиентов. 16001/tcp — веб-интерфейс CCcam Info. Только для локальной сети. 16002/tcp — telnet-интерфейс. Тоже только локально.

iptables: примеры правил

# Разрешить входящие подключения клиентов на CCcam
iptables -A INPUT -p tcp --dport 12000 -j ACCEPT

# Разрешить веб-интерфейс только из локальной сети
iptables -A INPUT -p tcp --dport 16001 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 16001 -j DROP

# Разрешить telnet только локально
iptables -A INPUT -p tcp --dport 16002 -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 16002 -j DROP

# Сохранить правила
iptables-save > /etc/iptables/rules.v4

Для UFW на Linux-сервере:

ufw allow 12000/tcp
ufw allow from 192.168.1.0/24 to any port 16001
ufw deny 16001/tcp

Проброс портов на роутере

Если ресивер стоит за NAT (домашний роутер) и ты хочешь принимать внешних клиентов — нужен port forwarding. В настройках роутера: WAN port 12000 → LAN IP ресивера, port 12000, protocol TCP. Порты 16001 и 16002 пробрасывать наружу — категорически нет. Там пароли в открытом виде, никакой авторизации кроме HTTP Basic нет.

Перезапуск и логи: куда смотреть когда не работает

Без умения читать логи настройка CCcam — это угадайка. К счастью, логи информативные.

Команды старт/стоп

# Enigma2/OpenATV/OpenPLi
/etc/init.d/softcam restart
/etc/init.d/softcam stop && sleep 2 && /etc/init.d/softcam start

# Напрямую с отладкой в foreground
CCcam -d

# На Linux-сервере (если CCcam установлен как сервис)
systemctl restart CCcam
# или
service CCcam restart

Логи: CCcam.log и ECM.info

# Смотреть лог в реальном времени
tail -f /tmp/CCcam.log

# ECM информация
cat /tmp/ECM.info

Вот как выглядит успешное подключение C-линии в логе:

20260115 08:42:31 client: server.example.com:12000 LOGIN OK
20260115 08:42:31 client: server.example.com:12000 CARD READY (CAID: 0500, PROVID: 040000, HOP: 1)

И вот ошибки:

20260115 08:42:31 client: server.example.com:12000 LOGIN FAILED
20260115 08:42:35 client: server.example.com:12000 CONNECTION REFUSED

Уровни DEBUG и что они показывают

DEBUG 0 — только ошибки и события подключения. DEBUG 1 — добавляет информацию о картах. DEBUG 2 — ECM запросы. DEBUG 3 — детальные ECM с временем обработки. DEBUG 4-5 — полный packet dump, нужен только для разработки. Для диагностики обычно хватает уровня 3.

Анализ строк HOP, ECM time, NOK/OK

В ECM.info ищи строки вида:

ECM time: 342ms (OK) HOP: 1 CAID: 0500 PROVID: 040000

ECM time 200-700ms — норма. 700-1500ms — медленно, возможны подтормаживания. Выше 1500ms — практически гарантированы фризы. NOK означает что карта не смогла расшифровать ECM — неверный CAID или карта не подписана на этот канал.

Типовые ошибки и как их чинить

CCcam демон не стартует после правки cfg

Первым делом проверь синтаксис файла вручную:

cat -A /etc/CCcam.cfg | head -30

Смотри на символ ^M в конце строк — это CRLF из Windows. Фиксируется командой:

sed -i 's/\r//' /etc/CCcam.cfg

Также проверь что файл заканчивается пустой строкой и что у тебя нет директив с неправильным регистром.

C-линия CONNECTING но не CONNECTED

Это значит что TCP-соединение установить не получается. Чек-лист по порядку:

  1. Пингуем хост: ping server.example.com — если нет ответа, проблема с DNS или маршрутизацией
  2. Проверяем порт: telnet server.example.com 12000 — если соединения нет, порт закрыт на firewall сервера или сервер не слушает
  3. Проверяем со стороны сервера: netstat -tlnp | grep 12000 — убедись что CCcam вообще запущен
  4. IP-фильтр на сервере — твой внешний IP может быть в чёрном списке

LOGIN FAILED — проверка username/password

TCP-соединение есть, но сервер отвергает логин. Скопируй логин и пароль ещё раз — особенно внимательно к регистру. CCcam чувствителен к регистру. Проверь нет ли пробела после пароля в C-линии (уже писал выше — распространённейшая ошибка). Если всё верно — возможно, аккаунт заблокирован на сервере (просрочен, превышен лимит соединений).

Карта подключена, но каналы не открываются (NOK)

В логе есть CARD READY, но каналы выдают NOK. Причины:

  • CAID канала не совпадает с CAID карты — карта просто не подписана на этот пакет
  • Reshare 0 на сервере, а ты пытаешься через цепочку — карта есть, но не передаётся
  • MAXIMUM CLIENT HOPS слишком мал — карта за пределами разрешённых hops
  • Региональная блокировка CAID/ident — сервер выдаёт карты только определённых провайдеров

Freeze картинки каждые N секунд

Фризы с постоянным интервалом (3-10 секунд) — это ECM timeout. Карта отвечает слишком медленно или периодически не отвечает вовсе. Смотри ECM time в логе. Если выше 1000ms — проблема в задержке до сервера. Если NOK на каждый второй ECM — сервер нестабилен или карта перегружена. Добавь резервную C-линию и поставь FALLBACK CARDS : 1.

Где находится файл CCcam.cfg на ресивере с Enigma2?

По умолчанию — /etc/CCcam.cfg. На OpenATV 6.4+ и OpenPLi 8.0+ — /var/etc/CCcam.cfg. Если не знаешь точно, проверь оба пути: ls -la /etc/CCcam.cfg /var/etc/CCcam.cfg. После любой правки: chmod 600 /etc/CCcam.cfg и рестарт через /etc/init.d/softcam restart.

Как добавить C-линию в CCcam.cfg правильно?

Формат: C: hostname port username password. Пример: C: server.example.com 12000 user1 pass1. Каждая C-линия на отдельной строке, без табуляций. Пробелов после пароля быть не должно — это ломает парсинг. В конце файла обязательно пустая строка.

Что означает reshare в F-линии и какое значение ставить?

Reshare 0 — клиент получает только локальные карты физических ридеров. Reshare 1 — плюс карты из C-линий первого уровня. Для защиты от перепродажи рекомендуется 0 или 1. Значение 2 и выше создаёт цепочки пересылки между серверами, что приводит к ECM loop и таймаутам.

Почему C-линия показывает CONNECTING но не подключается?

Чаще всего: неверный hostname или IP, закрытый порт на firewall сервера, IP-фильтр на сервере, или сервер не запущен. Диагностика: telnet hostname port — если коннект устанавливается, TCP работает и проблема в логине. Если нет — проблема на сетевом уровне.

Как посмотреть статус всех C-линий и карт в реальном времени?

Через веб-интерфейс: http://IP_ресивера:16001. Раздел "Server" — статус C-линий. Раздел "Shares" — доступные карты с CAID, провайдер ID и hops. Через telnet: telnet IP_ресивера 16002 — та же информация в текстовом формате.

Какие порты открывать на роутере если я хочу принимать клиентов?

Минимум — проброс TCP-порта из SERVER LISTEN PORT (по умолчанию 12000) с WAN на LAN-IP ресивера. Порты 16001 и 16002 в интернет не выставлять никогда — веб-интерфейс отдаёт все пароли без нормальной защиты.

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

Технически cfg-файл идентичный. Но C-линии у большинства провайдеров привязаны к IP или MAC и допускают только одно одновременное соединение. Второй ресивер собьёт первый. Решение — отдельная C-линия на каждый ресивер, или поднять локальный CCcam-сервер и подключить второй ресивер через F-линию.

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

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