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-линию.

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.