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 вообще работает.

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

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