CCcam lines: настройка C-line и F-line на сервере

Если вы уже поставили CCcam или OScam на Enigma2-ресивер и теперь стоите перед конфигом с вопросом «а что вообще писать в эти строки» — эта статья для вас. CCcam lines — это не просто строчки текста, это точный синтаксис с конкретными полями, и ошибка в одном символе даст вам статус «no card» вместо нормальной картинки. Разберём формат, пути к конфигам, открытие портов и диагностику по логам.

Что такое CCcam lines и как устроен протокол

CCcam — это протокол card sharing, который работает поверх TCP, не UDP. Клиент (ресивер) отправляет ECM-запрос на сервер через порт 12000/TCP по умолчанию. Сервер принимает этот запрос, дешифрует контрольное слово (CW) на физической смарт-карте и возвращает DCW-ответ клиенту. Клиент применяет это контрольное слово для расшифровки видеопотока.

Всё это происходит примерно каждые 10 секунд — именно столько действует одно контрольное слово. Если сервер не ответил вовремя, вы видите чёрный экран или артефакты. Поэтому скорость и стабильность соединения здесь критичны.

C-line (client line) — как клиент подключается к серверу

C-line — это одностороннее клиентское подключение. Ваш ресивер подключается к удалённому серверу, авторизуется по логину и паролю и получает доступ к картам, которые этот сервер шарит. Никакого обратного потока данных с вашей стороны нет — вы только потребитель.

F-line (friend line) — двусторонний обмен между пирами

F-line — это уже другая история. Здесь два сервера договариваются об обмене: каждый прописывает другого как «друга» и оба могут использовать карты друг друга. Параметры uphops и downhops управляют тем, насколько глубоко reshare распространяется по цепочке. Если uphops=1, ваш партнёр может использовать только ваши прямые карты, не карты ваших клиентов.

N-line и протокол newcamd для сравнения

N-line — это аналог C-line, но для протокола Newcamd. Синтаксис другой: N: host port user pass DES_key. Newcamd работает на порту 28910/TCP по умолчанию и использует DES-шифрование. OScam поддерживает оба протокола, а CCcam — только свой. Смешивать их нельзя: клиент на CCcam не будет говорить с сервером на чистом Newcamd без эмуляции.

Что реально передаётся: ECM, CW и DCW-ответ

ECM (Entitlement Control Message) — зашифрованный пакет из DVB-потока, содержащий контрольное слово. Сервер берёт этот пакет, скармливает физической карте, карта возвращает расшифрованное CW. Это CW и есть DCW-ответ, который летит обратно к клиенту. Вся цепочка должна укладываться в ~300–400 мс, иначе будут фризы.

Формат C-line и F-line: точный синтаксис

Вот где большинство статей сыплются — дают готовую строку без объяснения каждого поля. Давайте пройдёмся по синтаксису подробно.

Структура C-line: C: host port username password

Базовая C-line выглядит так:

C: my.server.net 12000 myuser mypassword

Четыре поля: хост (IP или домен), порт TCP, имя пользователя, пароль. Всё разделено пробелами. Регистр в логине и пароле имеет значение — MyUser и myuser это разные учётки. Если сервер стоит за динамическим DNS, в поле хоста может быть что-то вроде abc123.ddns.net.

Порт 12000 — стандарт, но сервер может использовать любой другой. Если провайдер дал вам строку с портом 15000 или 17000 — это нормально, просто нестандартно. Главное, чтобы у клиента и сервера порт совпадал.

Дополнительные параметры: { N } и шифрование nodeid

CCcam поддерживает расширенный синтаксис с блоком параметров в фигурных скобках после основной строки:

C: my.server.net 12000 myuser mypassword { nodeid=AA:BB:CC:DD:EE:FF:00:01 }

Node ID — это уникальный идентификатор ноды в сети CCcam. Некоторые серверы требуют его для идентификации клиента. В обычных ситуациях поле опциональное. Версию протокола CCcam клиент передаёт автоматически в handshake, но в OScam её можно задать явно — об этом ниже.

Структура F-line: F: username password uphops downhops

F-line для двустороннего обмена:

F: friend_user friend_pass 1 0

Здесь четыре параметра: логин и пароль вашего партнёра, затем uphops и downhops. uphops=1 означает, что партнёр получает доступ к картам на глубину 1 hop — только прямые карты, не карты клиентов. downhops=0 — вы не принимаете reshare от партнёра (или принимаете только локальные, зависит от версии). Значение 0 в downhops часто означает «без ограничений» — читайте документацию вашей версии CCcam.

Где прописывать строки: CCcam.cfg и пути на Enigma2

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

find / -name "CCcam.cfg" 2>/dev/null

В OScam cccam lines прописываются иначе — через блок [reader] в файле /etc/oscam/oscam.server:

[reader]
label     = my_cccam_server
protocol  = cccam
device    = my.server.net,12000
user      = myuser
password  = mypassword
cccversion = 2.3.0
cccmaxhops = 2

А учётки для входящих C-line клиентов — в /etc/oscam/oscam.user. Это разделение (ридер отдельно, юзеры отдельно) многих путает.

Настройка сервера: порты, firewall и oscam.server

Допустим, вы поднимаете свой сервер для шаринга — нужна правильная настройка и со стороны ОС, и со стороны OScam.

Открытие порта 12000/TCP и проброс на роутере

Сначала убедитесь, что сервис вообще слушает нужный порт:

netstat -tlnp | grep 12000

Или если netstat не установлен:

ss -tlnp | grep 12000

Если строки нет — CCcam/OScam не запущен или слушает другой порт. Если строка есть, добавляем правило iptables:

iptables -A INPUT -p tcp --dport 12000 -j ACCEPT

На роутере нужен port forwarding: внешний TCP 12000 → внутренний IP сервера, порт 12000. Проблема в том, что многие провайдеры сейчас используют CGNAT — и тут проброс порта физически невозможен без обращения к провайдеру или использования VPN-туннеля. Если telnet your.external.ip 12000 не подключается, а внутри локалки всё работает — скорее всего CGNAT.

Привязка к физической карте через oscam.server и oscam.user

В oscam.server описываете физический ридер со смарт-картой:

[reader]
label       = smartcard_local
protocol    = mouse
device      = /dev/ttyUSB0
detect      = cd
mhz         = 357
cardmhz     = 357
group       = 1

А в oscam.user — учётку для вашего CCcam-клиента:

[account]
user        = myuser
pwd         = mypassword
group       = 1
au          = 1
cccmaxhops  = 2
cccreshare  = 1

Параметр cccreshare в oscam.user контролирует, может ли этот клиент делать reshare карт дальше. 0 — нельзя, 1 — можно на глубину, заданную cccmaxhops.

Параметры cccam version и cccmaxhops

Версия протокола CCcam важнее, чем кажется. Если клиент заявляет версию 2.3.x, а сервер ожидает 2.1.x, handshake может провалиться или работать некорректно. В OScam версию задаёте явно через cccversion = 2.3.0 в блоке ридера. В нативном CCcam версия зашита в бинарник.

cccmaxhops — максимальная глубина reshare. Значение 1 означает только прямые карты сервера, 2 — карты сервера и его ридеров, и так далее. Высокое значение увеличивает задержки.

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

На Enigma2:

/etc/init.d/softcam restart

Или напрямую через killall и повторный запуск:

killall CCcam
sleep 2
CCcam &

Для OScam:

/etc/init.d/oscam restart

После рестарта сразу смотрите логи — первые секунды самые информативные.

Диагностика: почему линия не работает или отваливается

Это самая полезная часть, которую обычно пропускают. Большинство проблем с cccam lines решаются за 5 минут, если знать, где смотреть.

Статус линии: connected, no card, server down

В нативном CCcam открываете браузер: http://ip_ресивера:16001 — это веб-интерфейс статуса. Там видите все ридеры и их состояние. Три базовых статуса:

  • connected — соединение установлено, карты доступны
  • no card available — соединение есть, но карт на сервере нет или они не шарятся для вашей учётки
  • server down / not connected — соединение не установлено вообще

«No card available» часто путают с проблемой соединения, но это разные вещи. Сессия открыта, авторизация прошла, но нужная карта отсутствует на сервере — или у вас нет прав на неё.

Чтение логов CCcam и oscam.log

Живые логи OScam:

tail -f /var/log/oscam/oscam.log

Или:

tail -f /tmp/oscam.log

Путь зависит от конфига — смотрите параметр logfile в oscam.conf. В логах ищите строки с ECM — там видно время обработки запроса (в миллисекундах) и результат: found или not found.

Для нативного CCcam логи обычно в /tmp/CCcam.log. Смотрите записи вида [NETWORK] — там видны подключения и отключения.

Проверка через веб-интерфейс (порт 16001 / OScam webif)

OScam webif по умолчанию на порту 8888 (http://ip:8888), если не переопределили в oscam.conf в секции [webif]. Там раздел «Readers» показывает каждый ридер с ECM count, последним временем ответа и статусом. Если видите ECM time 800+ мс — линия будет фризить.

CCcam webif на 16001 менее информативен, но даёт быстрый обзор числа подключений и доступных карт по CAID.

Типичные ошибки: wrong password, ECM timeout, freeze картинки

Wrong password в логе — проверьте регистр логина и пароля. Буквально посимвольно. Часто проблема в скопированном пробеле в конце строки.

ECM timeout — сервер не ответил за отведённое время. Причины: высокий пинг до сервера, перегруженный сервер, нестабильная физическая карта на той стороне. Попробуйте увеличить timeout в конфиге OScam (ecmwhitelist и ecmtime в oscam.conf).

Картинка идёт первые секунды, потом чёрный экран — классика перегрузки или перезагрузки карты-источника. Если сервер шарит карту, которая ушла в reboot или превысила лимит одновременных ECM-запросов, первое CW отработало (оно было закешировано), а следующее уже не пришло.

Линия работает на одном CAID, но не открывает каналы другого провайдера — несовпадение provider ID. В OScam можно задать фильтр по CAID и провайдеру в oscam.user: параметры ident и caid. Если не прописан нужный провайдер, запросы просто игнорируются.

Линия отваливается каждые несколько минут — почти всегда это динамический IP на вашей стороне при привязке учётки к IP на сервере. Либо договаривайтесь об отключении IP-lock, либо используйте DDNS и просите разрешить подключение по домену.

Как выбрать источник линий: критерии без привязки к именам

Конкретные сервисы называть не буду — это бессмысленно в нише, где всё меняется каждые несколько месяцев. Лучше разберём, как оценивать любой источник cccam lines самостоятельно.

Стабильность: uptime и время отклика ECM

Нормальный ECM time — до 300–400 мс. Всё, что выше 600–700 мс, даст периодические фризы, особенно на каналах с короткими периодами контрольных слов. В OScam webif смотрите колонку «ECMtime» для каждого ридера в реальном времени.

Uptime проверить сложнее — обычно видно только после нескольких дней наблюдения. Хороший знак, если источник даёт статистику доступности через свой интерфейс. Плохой знак — если сервер уходит в даун каждое воскресенье вечером.

Количество hops и локальность карты

Hop 1 — карта стоит прямо на сервере, к которому вы подключаетесь. Это идеал. Hop 2 — карта на соседнем сервере. Каждый дополнительный hop добавляет задержку и точку отказа. При hop 3 и выше фризы практически гарантированы на каналах с интенсивным шаром.

В CCcam webif (порт 16001) hop-число видно в разделе Cards. В OScam — в логах при каждом ECM-запросе.

Поддержка нужных CAID и провайдеров

CAID — это идентификатор системы условного доступа. Например, Viaccess — 0x0500, Nagravision — 0x1800, Irdeto — 0x0600. Внутри одного CAID могут быть разные провайдеры с разными пакетами каналов.

Перед тем как брать линию, уточняйте точный CAID и provider ID нужного вам пакета. «Поддерживает Viaccess» — это не ответ. Нужен конкретный CAID+provider под конкретный транспондер. Иначе получите подключение без нужных каналов.

Признаки нестабильного источника

ECM time скачет от 100 мс до 900 мс — карта-источник перегружена или нестабильна. Периодический статус «no card» без очевидной причины — кто-то на том конце перезагружает оборудование. Картинка замирает строго раз в ~10 секунд — не успевает прийти новое CW, классика высокой задержки. Линия отваливается при смене канала — лимит одновременных ECM-запросов превышен на стороне источника.

И ещё один момент: если источник предлагает cccam lines с reshare глубиной 5+ hops, это мусор. Такая цепочка нежизнеспособна для нормального просмотра.

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

Какой порт по умолчанию использует протокол CCcam?

Порт 12000/TCP — для обмена данными (C-line, F-line). Порт 16001/TCP — веб-интерфейс статуса CCcam. В OScam webif по умолчанию 8888. Порт обмена можно сменить в конфиге, но он должен совпадать у клиента и у сервера — разные порты дадут «connection refused».

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

C-line — односторонняя клиентская линия: вы подключаетесь к серверу и получаете доступ к его картам, ничего не отдавая взамен. F-line — двусторонний дружеский обмен: оба сервера прописывают друг друга и могут использовать карты обеих сторон. В F-line параметры uphops/downhops контролируют глубину распространения reshare.

Где находится файл конфигурации CCcam?

На Enigma2-образах чаще всего /etc/CCcam.cfg или /var/etc/CCcam.cfg. На некоторых сборках — /usr/keys/CCcam.cfg. Команда find / -name "CCcam.cfg" 2>/dev/null найдёт точный путь. В OScam линии прописываются в oscam.server и oscam.user — обычно в каталоге /etc/oscam/.

Почему линия подключается, но картинка фризит?

Скорее всего высокий ECM time — больше 400–500 мс. Причины: большое число hops (3 и выше), высокий пинг до сервера, перегруженная карта-источник, несовпадение CAID или provider ID. Откройте OScam webif и посмотрите ECMtime для ридера в реальном времени. Если скачет — проблема на стороне источника.

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

Зависит от ограничений на стороне сервера. Большинство серверов ограничивают учётку одним одновременным подключением или одним IP. Подключение второго ресивера с той же учёткой обычно вызывает разрыв первого соединения. Правильное решение — поднять локальный OScam-сервер, подключить к нему одну C-line, а остальные ресиверы пустить через этот локальный сервер через reshare.

Как проверить, открыт ли порт CCcam снаружи?

Самый простой способ: telnet your.external.ip 12000 с другого устройства за пределами вашей сети. Если соединение установилось — порт открыт. Если «Connection refused» — iptables блокирует или демон не запущен. Если «Connection timed out» — скорее всего CGNAT или роутер не пробрасывает порт. Также помогает любой онлайн-сервис проверки портов — просто введите ваш внешний IP и порт 12000.

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

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