CCcam line: формат, настройка C-линии и F-линии 2026

Если вы получили строку вида C: somehost.example.com 12000 user123 pass456 и не понимаете, что с ней делать — вы в нужном месте. CCcam line — это буквально одна текстовая строка, которая описывает одно сетевое подключение. Куда её вставить, как читать каждое поле, почему она иногда не работает даже при правильном синтаксисе — всё это разберём по порядку.

Что такое CCcam line и зачем она нужна

Определение CCcam line простыми словами

CCcam line — это одна строка конфигурации в файле CCcam.cfg, которая определяет одно сетевое соединение. Либо исходящее (вы — клиент, подключаетесь к чужому серверу), либо входящее (вы — сервер, описываете учётку для клиента, который будет подключаться к вам).

Протокол CCcam работает поверх TCP. Порт по умолчанию — 12000, но на практике используют любой свободный в диапазоне 10000–30000. Одна cccam line = одно соединение = один пир в сети шаринга.

Роль line в протоколе CCcam

Когда CCcam-демон запускается, он читает CCcam.cfg построчно. Каждую строку, начинающуюся с C:, он воспринимает как задание: "установи TCP-соединение с этим хостом, авторизуйся, получай CW (Control Words) для декодирования ECM-пакетов". Строки F: — это учётные записи для входящих клиентов, которые будут подключаться к вашему CCcam-серверу.

Без хотя бы одной валидной cccam line с рабочими данными сервера декодирование платных каналов работать не будет — демон просто не знает, куда подключаться.

Чем line отличается от newcamd и mgcamd строк

NewCamd-строка начинается с N: и использует DES-ключ вместо plain-text пароля. MGcamd работает через отдельный файл newcamd.list с похожим форматом. CCcam line проще: plain-text логин/пароль, нет ключей шифрования в конфиге, сессия шифруется на уровне протокола.

Это означает, что cccam line легче читать и редактировать, но и легче случайно испортить — особенно если пароль содержит спецсимволы.

Формат C-line: разбор по полям

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

Полный синтаксис C-line выглядит так:

C: <hostname> <port> <username> <password> [no|yes] [{node-id}] [no|yes]

Разберём каждое поле:

  • hostname — DNS-имя или IP-адрес сервера. Домен предпочтительнее IP, если сервер за DynDNS.
  • port — TCP-порт. Чаще всего 12000, но может быть любым. Должен совпадать с LISTEN PORT на сервере.
  • username — логин, который выдал владелец сервера. Регистрозависимый.
  • password — пароль. Тоже регистрозависимый, пробелы недопустимы.

Строка регистрозависима. User123 и user123 — разные логины. И никаких табуляций — только пробелы между полями.

Дополнительные параметры (no/yes, share hops, em)

Пятое поле — разрешение на пересылку своих карт серверу:

  • no — не отдавать свои локальные карты на этот сервер (стандартное значение для чисто клиентского подключения)
  • yes — отдавать свои карты, образуя взаимообмен

Шестое поле {0:0:1} — это node ID клиента в сети CCcam. Используется для предотвращения петель шаринга. Генерируется автоматически при первом запуске и прописывается в файл CCcam.nodeID. Менять вручную не нужно — CCcam сам подставит свой ID при соединении.

Пример валидной C-line и пример с ошибкой

Валидная строка:

C: server.example-host.tld 12000 user123 pass456 no

Строка с ошибкой — табуляция вместо пробела между полями:

C:	server.example-host.tld	12000	user123	pass456

CCcam на это отреагирует "invalid line" в логе. Ещё одна классическая ошибка — пустая строка после C:, или добавление комментария в конец строки через # (не все форки это поддерживают).

Для IPv6-адреса синтаксис требует квадратных скобок:

C: [2001:db8::1] 12000 user123 pass456 no

Формат F-line: создание учётной записи для клиента

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

F-line объявляется в вашем CCcam.cfg, если вы хотите, чтобы другие клиенты подключались к вашему CCcam-серверу. Синтаксис:

F: <username> <password> <uphops> <downhops> [{node-id}]

Пример:

F: client01 secretpass 1 2

Это создаёт учётку client01 с паролем secretpass, которому разрешено подключаться к вашему серверу.

Значения uphops и downhops

uphops — на сколько хопов ваш клиент может пересылать ваши карты дальше. Значение 1 означает: клиент может использовать ваши карты, но не может раздавать их своим клиентам. Значение 0 = карты вообще не передаются. Слишком большое значение uphops создаёт длинные цепочки — задержка ECM растёт, стабильность падает.

downhops — сколько хопов вы готовы принять от клиента. Если у клиента есть свои карты и он хочет их шарить вам, downhops=2 означает, что вы примете карты, которые прошли максимум 2 сервера.

Стандартная практика: uphops=1, downhops=2. Это баланс между функциональностью и производительностью.

Как ограничивать количество подключений с одного аккаунта

Стандартный CCcam 2.3.x не имеет встроенного параметра лимита соединений в синтаксисе F-line. Ограничение реализуется на уровне файрвола или через сторонние CCcam-форки с расширенным синтаксисом. На практике большинство серверов ограничивают одновременные подключения через iptables conntrack или fail2ban-скрипты.

Куда вставлять line: расположение CCcam.cfg

Путь к CCcam.cfg на Enigma2 (OpenATV/OpenPLi)

На большинстве Enigma2-образов конфиг лежит здесь:

  • OpenATV, OpenPLi: /etc/CCcam.cfg
  • Некоторые старые образы: /var/etc/CCcam.cfg

Если файл отсутствует — создайте его вручную. После правки перезапустите демон через плагин SoftCam Manager (не через полную перезагрузку ресивера). SoftCam Manager есть в меню плагинов на OpenATV/OpenPLi — там кнопки Stop/Start для каждого эмулятора.

Путь к конфигу на Linux x86 / Raspberry Pi

На Linux x86 путь зависит от того, как установлен CCcam:

  • Стандартная установка: /usr/local/etc/CCcam.cfg
  • Если запускаете бинарник из произвольной папки — конфиг ищется рядом с бинарником
  • OpenWRT с CCcam-mod для MIPS: /etc/CCcam.cfg

Перезапуск демона на Linux:

killall CCcam && /usr/local/bin/CCcam -d

Флаг -d запускает в режиме демона с логированием в /tmp/CCcam.log.

Перенос строк через FTP/SCP и права доступа

Редактировать конфиг удобно через WinSCP (Windows) или nano прямо на ресивере через SSH. После сохранения проверьте права:

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

На некоторых образах Enigma2 CCcam-демон запускается не от root, тогда права 644 предпочтительнее. Важно: файл с правами 777 на части образов CCcam вообще отказывается читать — это не баг, это намеренная защита от несанкционированного изменения конфига.

При редактировании через FTP — убедитесь что клиент сохраняет файл в Unix line endings (LF), не Windows (CRLF). CCcam некоторых версий не парсит строки с \r\n.

Проверка статуса подключения и отладка

Веб-интерфейс CCcam на порту 16001

CCcam поднимает встроенный HTTP-интерфейс на порту 16001. Чтобы он работал, в CCcam.cfg должна быть строка:

WEBINFO LISTEN PORT: 16001

После этого открываете в браузере http://<IP_ресивера>:16001 и видите три раздела: Connections (активные C-line и их статус), Servers (серверы, к которым подключены), Shares (карты, которые доступны).

Статус CONNECTED означает, что TCP-соединение установлено и авторизация прошла. Статус CONNECTING — соединение не установлено, CCcam пытается снова. Если строка висит в CONNECTING более 2-3 минут — проблема либо в сети, либо в credentials.

Чтение лога: ECM request, CW received, timeout

Лог /tmp/CCcam.log при запуске с -d содержит всё что происходит. Строки которые стоит искать:

CCcam: server server.example-host.tld user123 (cccam 2.3.0) connected

— подключение установлено, рядом видна версия протокола сервера.

ECM request CAID:0604 SID:1234 PMT:100

— ресивер запросил ключ для канала с CAID 0604.

CW received from server.example-host.tld in 124ms

— ключ получен, задержка 124 миллисекунды. Нормально до 500ms.

ECM timeout after 3000ms

— сервер не ответил за 3 секунды. Канал замёрзнет или выдаст артефакты.

Команды telnet для проверки достижимости сервера

Самый быстрый способ проверить, что порт вообще открыт:

telnet server.example-host.tld 12000

Если соединение устанавливается и потом сразу закрывается — порт открыт, но CCcam отверг подключение (неверные credentials или IP не разрешён). Если Connection refused — порт закрыт или фаерволл. Если timeout — сетевая проблема или IP заблокирован.

Альтернатива без telnet:

nc -zv server.example-host.tld 12000

Типичные ошибки в CCcam line и как их исправлять

Неверный порт или DNS не резолвится

Опечатка в порте — статус навсегда в CONNECTING. Проверьте порт ещё раз через telnet. Если DNS не резолвится (особенно актуально для серверов за CGNAT, где IP меняется каждые несколько часов), попробуйте получить IP через nslookup:

nslookup server.example-host.tld

И временно подставьте IP вместо DNS в C-line для проверки. Если с IP работает — проблема в DNS-резолвере вашего провайдера. Решение: прописать в /etc/resolv.conf сторонний DNS, например 8.8.8.8.

Для серверов с часто меняющимся IP в поле hostname используйте DynDNS-имя — это именно то, для чего поле hostname существует.

Username/password содержит спецсимволы

Если пароль содержит $, #, !, @ или пробел — могут быть проблемы. CCcam парсит строку по пробелам, и пробел в пароле сломает синтаксис полностью. Символ # в некоторых форках воспринимается как начало комментария.

Если пароль выдан с проблемными символами — попросите пересоздать без них. Или проверьте в логе: если после строки с вашей C-line написано "invalid line N" — дело точно в синтаксисе.

Отдельный случай: пустой пароль (только пробел после username). Оригинальный CCcam 2.3.2 принимает такую строку, но большинство форков — нет.

Конфликт версий протокола CCcam (2.0.11 vs 2.3.x)

CCcam 2.0.11 — старая версия с другим рукопожатием. Если ваш клиент 2.0.11 подключается к серверу на 2.3.0 или 2.3.2, соединение может устанавливаться (CONNECTED в статусе), но ECM-ответы приходить не будут или будут некорректными.

В логе это выглядит как серия ECM timeout без единого CW received. Решение — обновить бинарник CCcam на ресивере. Для Enigma2 берите бинарник под свою архитектуру (ARM, MIPS) с версией ≥2.3.0.

Сервер не отдаёт карты: проверка SID и hops

Соединение CONNECTED, но каналы не открываются. Значит проблема не в сети, а в том, что сервер не шарит нужные карты. Варианты:

  • uphops=0 в F-line на сервере — сервер не разрешает вашей учётке получать карты. Нужно чтобы владелец сервера исправил F-line.
  • SID-фильтр — сервер настроен отдавать только определённые каналы. В веб-интерфейсе 16001 во вкладке Shares проверьте, какие CAID/SID доступны.
  • Истёкший аккаунт — в логе может быть "account expired" или соединение устанавливается и сразу рвётся.
  • Нет нужной карты на сервере — сервер физически не имеет карты с нужным CAID.

Ещё один нюанс: если у вас несколько C-line на один и тот же хост с разными портами — каждое подключение учитывается сервером отдельно. Это допустимо, но некоторые серверы считают это попыткой обхода лимита соединений.

CCcam line в OScam: совместимость и преобразование

Секция [reader] в oscam.server вместо C-line

OScam не читает CCcam.cfg и не понимает синтаксис C:/F:. Но он умеет работать по протоколу CCcam в качестве клиента. Конфиг для OScam пишется в /etc/oscam/oscam.server.

Вот как одна cccam line превращается в OScam-reader:

Было (CCcam):

C: server.example-host.tld 12000 user123 pass456 no

Стало (OScam, файл /etc/oscam/oscam.server):

[reader]
label                = server1
protocol             = cccam
device               = server.example-host.tld,12000
user                 = user123
password             = pass456
group                = 1
cccversion           = 2.3.2
cccmaxhops           = 10
ccckeepalive         = 1

Параметры protocol = cccam, device, user, password

Параметр protocol = cccam говорит OScam использовать именно CCcam-протокол для этого ридера. device — это host и port через запятую (без пробела). user и password — как в оригинальной C-line.

Параметр cccversion должен совпадать с версией сервера для стабильности — это напрямую влияет на рукопожатие. Если не знаете версию сервера, начните с 2.3.2. Если есть проблемы — попробуйте 2.2.1 или 2.0.11.

ccckeepalive = 1 включает keepalive-пакеты — предотвращает дисконнект при долгом простое.

Когда лучше мигрировать с CCcam на OScam

OScam выигрывает если у вас сложная конфигурация: локальная смарт-карта плюс несколько удалённых серверов одновременно, SID-фильтры, разные CAID для разных ресиверов. Гибкость настроек в oscam.server несравнимо выше синтаксиса C:/F:.

Также OScam умеет одновременно держать соединения по newcamd и cccam с одной конфигурацией. Это удобно при переходе с одного протокола на другой без простоя.

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

Одна практическая деталь: конфигурация, где ресивер одновременно клиент (C-line) и сервер (F-line), работает в CCcam корректно. Порядок объявления в CCcam.cfg влияет на инициализацию — F-line рекомендуется объявлять до C-line, чтобы серверная часть была готова до установки исходящих соединений.

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

C: — исходящее подключение: вы клиент, подключаетесь к удалённому серверу. Указываете его host, port, свой логин и пароль. F: — входящая учётная запись: вы сервер, описываете логин и параметры для клиента, который будет подключаться к вам. C-line всегда содержит адрес удалённого сервера, F-line — только локальные credentials.

Какой порт по умолчанию в CCcam line?

12000 — исторически дефолтный TCP-порт CCcam. Реально серверы используют любой свободный в диапазоне 10000–30000. Порт всегда идёт вторым полем после hostname в C-line и должен точно совпадать с LISTEN PORT в конфиге сервера.

Почему C-line подключается, но каналы не открываются?

TCP-соединение и авторизация прошли успешно, но сервер не отдаёт нужные карты. Проверьте в порядке вероятности: uphops=0 в F-line на сервере (владелец не разрешил вам получать карты), SID-фильтр на сервере (нужный канал заблокирован), истёкший срок аккаунта, несовместимость версий протокола, или на сервере просто нет карты с нужным CAID.

Можно ли использовать одну C-line на нескольких ресиверах одновременно?

Технически CCcam не блокирует это на стороне клиента. Но большинство серверов привязывают учётку к одному IP или ограничивают число одновременных соединений. Параллельное подключение с двух устройств часто заканчивается дисконнектом обоих или баном аккаунта.

Что означает число в фигурных скобках в конце line, например {0:0:1}?

Это node ID клиента в сети CCcam. Используется для предотвращения петель шаринга: когда карта путешествует по цепочке серверов, CCcam отслеживает, через какие узлы она прошла. Значение генерируется автоматически и сохраняется в файле CCcam.nodeID. Менять вручную не нужно.

Как проверить, что CCcam.cfg синтаксически корректен?

Запустите CCcam с флагом отладки: ./CCcam -d и откройте /tmp/CCcam.log. Некорректные строки помечаются как "invalid line N" с номером строки. Дополнительно: если C-line не появляется в веб-интерфейсе на порту 16001 — значит она не была распарсена.

Нужно ли перезапускать ресивер после правки CCcam.cfg?

Нет. Достаточно перезапустить только демон CCcam — через кнопку Stop/Start в SoftCam Manager на Enigma2, или командой killall CCcam && /usr/local/bin/CCcam -d на Linux. CCcam читает конфиг только при старте процесса и не отслеживает изменения файла на лету.

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

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