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