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 или внешние мониторы.