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-соединение установить не получается. Чек-лист по порядку:
- Пингуем хост:
ping server.example.com— если нет ответа, проблема с DNS или маршрутизацией - Проверяем порт:
telnet server.example.com 12000— если соединения нет, порт закрыт на firewall сервера или сервер не слушает - Проверяем со стороны сервера:
netstat -tlnp | grep 12000— убедись что CCcam вообще запущен - 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 или внешние мониторы.