CCcam C-line: настройка, формат и подключение

Если вы работаете с кардшарингом на Enigma2 или Linux-сервере, рано или поздно вам дадут строку вида C: somehost.net 12000 user pass и скажут «вставь в конфиг». Звучит просто. Но половина вопросов на форумах — именно о том, почему после вставки ничего не работает. В этой статье разберём формат cccam cline по полям, покажем реальные пути к конфигам и объясним, как читать статус подключения в CCcam и OScam.

Что такое C-line и из чего она состоит

C-line — это строка конфигурации, которая говорит CCcam: «подключись к вот этому серверу с такими-то учётными данными». Клиент устанавливает исходящее TCP-соединение, выполняет handshake по проприетарному протоколу CCcam и получает список доступных карт. Понимание каждого поля — это не опционально, это основа диагностики.

Структура строки: C: host port username password

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

C: hostname port username password [yes/no] [yes/no] [{ caid:ident:prio }]

Пример обезличенной строки:

C: myserver.example.net 12000 user12 pass12

Поле host — это либо IP-адрес (например, 185.45.12.7), либо DDNS-имя вроде mybox.ddns.net. Порт обычно лежит в диапазоне 10000–20000, но сервер может задать любое значение от 1 до 65535 — это полностью на усмотрение администратора сервера.

Разбор каждого поля по порядку

C: — просто маркер типа строки. Именно по нему CCcam понимает, что это исходящее соединение.

hostname — адрес сервера. Если это DDNS-имя и сервер поменял IP, а DNS ещё не обновился — соединение просто не установится. Без ошибок в логе, просто OFFLINE. Это один из самых неочевидных источников проблем.

port — TCP-порт сервера. Один аккаунт = один порт. Если порт недоступен из-за firewall или NAT на стороне клиента — соединение тоже не установится.

username и password — учётные данные аккаунта на сервере. Регистр имеет значение. User12 и user12 — это разные пользователи.

Чем C-line отличается от N-line и F-line

N-line — это newcamd, совсем другой протокол. Другой handshake, другой формат строки, другие порты (чаще 28910 или похожие). Визуально похожа: N: host port user pass DES-key. Но смешивать их нельзя — CCcam не примет N-line как C-line и наоборот.

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

Куда прописывать C-line: пути к конфигам

Это второй по популярности источник путаницы. Файл называется одинаково, но лежит в разных местах в зависимости от образа.

Файл CCcam.cfg и его расположение

На большинстве Enigma2-образов (OpenATV, OpenPLi, OpenVix) конфиг живёт по адресу /var/etc/CCcam.cfg. На некоторых старых сборках встречается /etc/CCcam.cfg или /usr/keys/CCcam.cfg. Лучший способ проверить — посмотреть init-скрипт:

cat /etc/init.d/CCcam | grep -i ".cfg"

Строки в файле чувствительны к кодировке. Если конфиг редактировался в Windows-редакторе и сохранён с переводами строк CRLF — CCcam тихо проигнорирует строки или прочитает их неправильно. Конвертация простая:

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

C-line в OScam: секция [reader] и protocol = cccam

OScam не использует формат C-line напрямую. Вместо строки вы создаёте ридер в файле /etc/oscam/oscam.server. Минимальный пример:

[reader]
label        = myserver
protocol     = cccam
device        = myserver.example.net,12000
user          = user12
password      = pass12
group         = 1
reconnecttimeout = 30

Именно это и есть трансляция cccam cline в синтаксис OScam. Поля один в один соответствуют полям строки — просто записаны иначе. После правки файла перезапустите OScam: service oscam restart или через веб-интерфейс.

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

Файл конфигурации должен читаться демоном. Права 644 — нормально. Если случайно поставить 600 от другого пользователя, CCcam запустится, но конфиг не прочитает.

Перезапуск CCcam вручную:

killall -9 CCcam && sleep 2 && CCcam -C /var/etc/CCcam.cfg

Или через init-скрипт, если он есть: /etc/init.d/CCcam restart. На Enigma2-боксах можно перезапустить из плагина прямо с пульта.

Дополнительные параметры C-line

После пароля идут необязательные поля. Большинство инструкций их не объясняют — просто дают строку с yes/yes и надеются, что работает. Разберём каждый.

Флаги yes/no для шаринга обратно

Два флага после пароля:

C: myserver.example.net 12000 user12 pass12 yes no

Первый yes/no — разрешать ли использовать карты этого сервера локально. Почти всегда yes. Второй — отдавать ли свои карты обратно на этот сервер. Если у вас нет физических карт, второй флаг — no. Если поставить yes при пустом смарткарт-ридере — ничего страшного не случится, просто лишний трафик.

Параметр каскада и ограничение hops

Блок в фигурных скобках управляет фильтрацией по CAID и провайдеру:

C: myserver.example.net 12000 user12 pass12 yes no { 0:0:1 }

Формат внутри скобок: caid:ident:priority. Значение 0:0:1 — принимать все CAID с приоритетом 1. Если нужен конкретный CAID, например Viaccess 0x0500: 0500:000000:1.

Hop count — это глубина цепочки от источника карты. Hop 0 — карта прямо в ридере сервера. Hop 1 — карта с сервера, к которому подключён ваш сервер. Карты с hop 2 и выше часто нестабильны: добавляется задержка каждого промежуточного сервера, и при перегрузке любого звена ECM начинает падать. Хороший сервер отдаёт карты с hop 0 или 1.

Шифрование и совместимость версий CCcam

CCcam 2.1.4 изменил алгоритм handshake по сравнению с 2.1.3. Если сервер работает на 2.1.4, а клиент на 2.0.11 — соединение установится, но потом оборвётся или карты не придут. Версию CCcam на ресивере смотрим так:

CCcam --version

Или через веб-интерфейс на порту 16001. Несовпадение версий — реальная проблема, особенно со старыми образами Dreambox.

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

Вставил строку, перезапустил — и что дальше? Нужно убедиться, что подключение живое и карты реально пришли.

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

Сначала включите webinfo в конфиге, если не включён:

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

После перезапуска откройте http://IP-ресивера:16001 в браузере. Там увидите раздел «C:» с вашими серверами. Статус CONNECTED с ненулевым числом карт — базовый признак того, что соединение живое. Но CONNECTED ещё не значит, что канал декодируется.

Чтение строки server в разделе подключений

В веб-интерфейсе CCcam каждый сервер показывает: hostname, port, статус, количество карт и время отклика в миллисекундах. Время отклика выше 800 мс — уже плохо. Выше 1500 мс — канал будет фризить даже при наличии карты.

Если видите OFFLINE — соединение не установлено вообще. Если CONNECTED, 0 cards — соединение есть, но сервер не отдаёт карты этому аккаунту.

Диагностика в OScam: статус ридера и ecm-лог

В веб-интерфейсе OScam (обычно порт 8888) идите в раздел Readers. Напротив вашего ридера должен стоять статус CONNECTED и ненулевой счётчик ECM OK. Если счётчик ECM ERROR растёт — карта есть, но декодирование падает.

ECM-лог смотрим в реальном времени:

tail -f /var/log/oscam/oscam.log | grep -i ecm

Там видно конкретный CAID, SID канала и результат: found или not found. Это самый прямой способ понять, что именно не так.

Типичные ошибки и их устранение

Разберём по симптомам — так проще находить причину.

Сервер OFFLINE: сеть, порт, firewall

Первым делом проверяем, доступен ли порт вообще. Два инструмента:

nc -vz myserver.example.net 12000
telnet myserver.example.net 12000

Если оба зависают или выдают Connection refused — проблема не в CCcam, а в сети. Возможные причины: неверный hostname или port в строке, закрытый порт на файрволе сервера, ваш IP забанен, или сервер за CGNAT и порт вообще недоступен снаружи.

Отдельная история — двойной NAT. Если вы сами за CGNAT провайдера (частный IP вида 100.64.x.x), исходящие соединения обычно работают. Но если сервер тоже за CGNAT и пробросил порт неправильно — добраться до него не получится никакими средствами.

DDNS-имена отдельно: сделайте ping myserver.example.net и проверьте, что IP резолвится правильно. Если сервер поменял IP, а DDNS-запись не обновилась — вы стучитесь не туда.

CONNECTED, но нет карт или 0 cards

Соединение установлено, handshake прошёл, но карт нет. Три причины: аккаунт не активирован на сервере, истёк срок подписки, или сервер намеренно не раздаёт карты этому пользователю (ограничение по CAID или политике). Проверить самостоятельно нельзя — нужно писать администратору сервера с просьбой проверить аккаунт.

Карты есть, но каналы не открываются (ECM error)

Самый неочевидный случай. Несколько причин:

Несовпадение CAID или провайдера. Карта есть, но не для того CAID, что нужен каналу. Смотрите ECM-лог — там будет написан нужный CAID.

Высокий hop. Карта с hop 3 через три сервера — задержка 1–2 секунды на ECM. Канал начнёт, потом зависнет.

Рассинхрон системного времени. Это убивает ECM тихо и без явных ошибок. CCcam и OScam используют временны́е метки при шифровании обмена. Если время на ресивере сбито на несколько минут — ECM будет отклоняться. Проверьте:

date
ntpdate -u pool.ntp.org

На ресиверах без батарейки RTC после перезагрузки время часто сбрасывается на 2000 год. Добавьте NTP-синхронизацию в автозагрузку.

Перегрузка сервера. ECM-запросы обрабатываются слишком долго. Решения нет на вашей стороне — только менять сервер.

Частые вопросы

Какой формат у C-line для CCcam?

Базовый формат: C: host port username password. После пароля можно добавить два необязательных флага yes/no yes/no (разрешение использовать карты и отдавать свои обратно) и блок в фигурных скобках { caid:ident:priority } для фильтрации по CAID. Пример полной строки: C: myserver.example.net 12000 user12 pass12 yes no { 0:0:1 }. Если флаги не указаны, CCcam использует значения по умолчанию.

Чем C-line отличается от N-line?

C-line использует проприетарный протокол CCcam. N-line — это протокол newcamd, другой handshake, другие порты (обычно 28910 или схожие), другой формат строки с DES-ключом в конце. OScam поддерживает оба через параметр protocol = cccam или protocol = newcamd в oscam.server. Смешивать их нельзя — если сервер работает по CCcam, N-line туда не подключится.

В какой файл прописывать C-line?

В CCcam — в файл /var/etc/CCcam.cfg (на большинстве Enigma2-образов), реже /etc/CCcam.cfg или /usr/keys/CCcam.cfg. В OScam C-line напрямую не используется — нужно создать ридер в /etc/oscam/oscam.server с параметрами protocol = cccam, device = host,port, user и password.

Почему сервер показывает CONNECTED, но каналы не открываются?

Причин несколько: несовпадение CAID или провайдера между картой и каналом, высокий hop count (2+), сбитое системное время на ресивере (проверьте date и синхронизируйте через NTP), или перегрузка сервера. Конкретную причину покажет ECM-лог OScam или анализ карт в веб-интерфейсе CCcam.

Как проверить, что C-line рабочая?

В CCcam — включите webinfo в конфиге и откройте http://IP:16001. Рабочая cccam cline даст статус CONNECTED и ненулевое число карт. В OScam — раздел Readers, статус CONNECTED, ненулевой счётчик ECM OK. Если карты есть, но канал не открывается — смотрите ECM-лог, там будет конкретная причина.

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

Проверьте командой nc -vz hostname port или telnet hostname port. Если соединение не устанавливается — причины: неверный порт в строке, файрвол на стороне клиента или сервера, ваш IP забанен на сервере, сервер за CGNAT и порт недоступен снаружи, или DDNS-имя перестало резолвиться после смены IP сервера. Начинайте диагностику с ping hostname, чтобы убедиться, что DNS вообще работает.

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.