CCcam sharing: настройка сервера и клиента 2026
CCcam sharing — это не магия и не «просто скачал и работает». За простым интерфейсом скрывается конкретный протокол с握рукопожатием, шифрованием сессии и строгим форматом конфигов. Если хоть одно поле не то — получаешь пустой экран и гадаешь, где сломалось. Этот материал разбирает протокол по косточкам: от принципа обмена ECM/CW до реальных команд диагностики.
Что такое CCcam sharing и как работает протокол
Начнём с механики. Твой ресивер получает зашифрованный поток DVB, не может его декодировать сам и отправляет запрос ECM (Entitlement Control Message) на сервер через TCP-соединение. Сервер, у которого есть физическая смарт-карта или эмулятор, расшифровывает ECM и возвращает CW (Control Word) — 8-байтный ключ, которым твой ресивер и открывает поток. Весь этот цикл должен уложиться в ~200–400 мс, иначе начинается фриз.
Принцип card sharing: ECM, CW и DCW
ECM обновляется каждые 10 секунд (crypto-period). DCW — это то же, что CW, просто термин из документации деcкрипторов. Важно понимать: сервер не «даёт доступ» в бытовом смысле — он просто быстро отвечает на каждый запрос ключом. Если ответ пришёл позже смены crypto-period — кадр чёрный.
Задержка складывается из: ping до сервера + время обработки ECM на сервере + число промежуточных хопов. Пинг 20 мс и 3 хопа уже дают другой результат, чем пинг 5 мс и 1 хоп.
Роль сервера и клиента в схеме
Сервер держит физическую карту (или несколько) в кардридере, запускает демон CCcam, слушает порт 12000 TCP и раздаёт CW подключённым клиентам. Клиент — это твой ресивер на Enigma2, VU+, Dreambox или любой другой Linux-бокс, у которого установлен CCcam или OScam в режиме клиента.
Один сервер может обслуживать десятки клиентов, но каждый параллельный запрос ECM увеличивает нагрузку. При 50+ активных F: line ECM time начинает ползти вверх — особенно если карта одна.
Версии протокола CCcam и совместимость
Текущие актуальные сборки работают на ветке 2.3.x. Ветка 2.1.x до сих пор встречается на старых ресиверах, и там есть несовместимость рукопожатия с 2.3.x-серверами. Симптом — сервер видит подключение, но сразу рвёт его. Проверяй версию: CCcam -v в терминале.
Если сервер на 2.3.x, а клиент на 2.1.x — либо обновляй клиент, либо сервер должен поддерживать fallback. Некоторые сборки это умеют, некоторые нет. Лучше не надеяться на совместимость и синхронизировать версии.
Чем CCcam отличается от OScam, MgCamd и NewCamd
CCcam — проприетарный протокол с собственным рукопожатием и шифрованием сессии на базе SHA-1. OScam — открытый, модульный, поддерживает одновременно несколько протоколов (cccam, newcamd, camd3). MgCamd использует протокол newcamd и работает чуть иначе в части формата запросов.
На практике: CCcam проще поднять быстро, OScam гибче при тонкой настройке и лучше логирует. NewCamd/MgCamd встречается реже, в основном на старых инсталляциях.
Настройка CCcam-сервера: конфигурационные файлы и пути
Основной файл конфигурации — /var/etc/CCcam.cfg. На некоторых сборках встречается /etc/CCcam.cfg — зависит от дистрибутива. Ключи смарт-карт лежат в /usr/keys/. После правки конфига перезапуск: /etc/init.d/CCcam restart или killall CCcam && CCcam &.
Структура /var/etc/CCcam.cfg
Минимальный рабочий конфиг сервера выглядит так:
SERVER LISTEN PORT : 12000
WEBINFO LISTEN PORT : 16001
ALLOW TELNET : yes
ALLOW WEBINFO : yes
LOGFILE : /var/log/CCcam.log
LOGLEVEL : 1
F: username password 1 1 0
Директива SERVER LISTEN PORT : 12000 — порт, на котором сервер принимает клиентов. Если ISP блокирует 12000 (такое бывает), меняй на любой незанятый выше 1024, например 15000 или 10000. WEBINFO LISTEN PORT : 16001 открывает веб-интерфейс для мониторинга. LOGLEVEL от 0 до 3: на проде держи 1, при отладке ставь 3.
Права на файл конфига: chmod 644 /var/etc/CCcam.cfg. Если демон запущен от root — сойдёт, но лучше 640 с нужным владельцем.
Файл CCcam.prio и приоритеты CAID
Файл /var/etc/CCcam.prio управляет тем, какую карту использовать для какого канала. Формат строки: CAID:provider:srvid:uphops:downhops. Пример:
0500:032820:0:0:1
0B00:000000:0:0:2
Первая строка говорит: для CAID 0500, провайдера 032820 использовать карту с 0 uphops и максимум 1 downhop. Если этот файл пустой или отсутствует — CCcam сам выбирает карту, иногда неоптимально. При проблемах «канал есть, картинки нет» — первым делом сюда.
Типичная ошибка: CAID совпадает, но provider id не тот. Канал технически найден, но декодирование не идёт, потому что CCcam.prio указывает на другого провайдера. Сверяй provider id через WebInfo.
Файлы CCcam.channelinfo и CCcam.providers
CCcam.channelinfo содержит маппинг SID → название канала. Без него WebInfo показывает числа вместо имён — не критично, но неудобно. CCcam.providers маппит CAID:providerid → читаемое название провайдера. Оба файла опциональны, но значительно упрощают диагностику.
Параметры F: line для локальных пользователей
Строка F: — это описание пользователя, которому разрешён доступ к серверу. Полный формат:
F: username password uphops downhops ident
Конкретный пример: F: john secretpass 1 1 0
- username — логин клиента
- password — пароль (регистрозависимый)
- uphops — сколько хопов вверх клиент может «видеть» (1 = только локальные карты)
- downhops — сколько хопов вниз разрешено пробрасывать (0 = нельзя)
- ident — ограничение по CAID:provider (0 = без ограничений)
При большом числе F: line сервер начинает тормозить под нагрузкой. Каждая активная линия — это отдельный поток с памятью и обработкой ECM. Если держишь 100+ пользователей на одной карте — ECM time растёт нелинейно.
Настройка клиента: C: line и подключение к серверу
На стороне клиента (твой ресивер) нужна строка C: в том же файле CCcam.cfg. Формат:
C: server.host 12000 username password no { 0:0:2 }
Формат строки C: hostname port username password
Разбираем каждое поле:
- server.host — IP или hostname сервера. Если у сервера динамический IP — нужен DDNS (например, DynDNS или собственный ddclient)
- 12000 — порт (должен совпадать с SERVER LISTEN PORT на сервере)
- username / password — точно как в F: line на сервере, с учётом регистра
- no — флаг wantemu:
noозначает «не запрашивать эмуляцию»,yes— разрешить - { 0:0:2 } — nodeid и параметры;
0:0:2— стандартное значение
Минимальная рабочая строка без лишних параметров: C: 192.168.1.100 12000 john secretpass. Остальное CCcam заполнит дефолтами.
Дополнительные флаги no/yes и nodeid
Флаг wantemu (третий параметр после пароля) влияет на то, запрашивает ли клиент эмулированные карты с сервера. Для большинства случаев — no. NodeID — уникальный идентификатор клиента в сети; если не задан явно, CCcam генерирует автоматически на основе MAC-адреса. Конфликт nodeid двух клиентов с одним логином может приводить к периодическим отвалам.
Подключение нескольких линий и резервирование
Несколько C: строк в конфиге — это параллельные соединения. CCcam попробует все и выберет ту, которая ответила первой. Это и есть резервирование: если основная линия упала, вторая подхватывает.
Но осторожно: если две линии раздают одинаковый CAID с разных серверов, CCcam может чередовать их непредсказуемо. Управляй приоритетом через CCcam.prio, а не надейся на автовыбор.
Проверка статуса через WebInfo и telnet
WebInfo доступен по адресу http://<ip-ресивера>:16001. Там видно: активные C: и F: линии, статус карт, ECM time по каждому каналу, число хопов. Это первое место, куда идти при проблемах.
Telnet: telnet <ip-ресивера> 23, потом команда log — живой лог декодирования. Команда info показывает статус сервера. Если telnet не отвечает — проверь ALLOW TELNET : yes в конфиге.
OScam как альтернатива: миграция конфигов
OScam — открытый эмулятор, который умеет работать как клиент CCcam, как сервер, и как мост между протоколами. Конфиги разбиты по файлам, а не свалены в один, что удобнее при сложных инсталляциях.
Структура oscam.conf, oscam.server, oscam.user
Основные пути: /etc/tuxbox/config/oscam/ или /var/etc/oscam/ — зависит от сборки. Три ключевых файла:
oscam.conf— глобальные параметры (логирование, webif, порты)oscam.server— описание ридеров (физические карты или внешние CCcam-серверы)oscam.user— описание клиентов (аналог F: line)
Минимальный oscam.conf:
[global]
logfile = /var/log/oscam.log
loglevel = 4
[webif]
httpport = 8888
httpuser = admin
httppwd = secretpass
Протокол cccam в OScam (reader type)
Чтобы OScam подключился к CCcam-серверу как клиент, в oscam.server добавляешь reader:
[reader]
label = myserver
protocol = cccam
device = server.host,12000
user = username
password = password
caid = 0500,0B00
group = 1
cccversion = 2.3.0
ccchop = 1
Параметр cccversion критичен — он должен совпадать с версией сервера. ccchop ограничивает число хопов, которые OScam запрашивает.
Перенос F: и C: line в формат OScam
F: line из CCcam становится записью в oscam.user:
[account]
user = john
pwd = secretpass
group = 1
caid = 0500
au = 1
C: line — это reader в oscam.server с protocol = cccam, как показано выше. Принципиально другой синтаксис, но логика та же.
Преимущества OScam при высокой нагрузке
OScam лучше справляется с очередями ECM при многих одновременных клиентах. Логирование детальнее: можно видеть каждый ECM-запрос с временем ответа, источником и причиной отказа. Webif на порту 8888 показывает больше деталей, чем CCcam WebInfo.
Но: OScam сложнее в первоначальной настройке. Если тебе нужно просто поднять один клиент с двумя линиями — CCcam быстрее. Если строишь сервер под нагрузкой с несколькими картами и десятками клиентов — OScam оправдывает время на конфигурацию.
Диагностика и устранение типичных ошибок
Большинство проблем с cccam sharing делятся на три категории: не подключается вообще, подключается но нет картинки, подключается и картинка есть, но с фризами. Каждый случай лечится по-своему.
Connection refused и закрытые порты
Первая проверка — порт действительно открыт:
telnet server.host 12000
Если «Connection refused» — либо демон не запущен, либо порт закрыт файрволом. На сервере:
netstat -tlnp | grep 12000
Если строки нет — CCcam не запущен или слушает другой порт. Если строка есть, но telnet снаружи не проходит — проблема в файрволе или NAT. За NAT нужен проброс порта: на роутере пробросить TCP 12000 на IP сервера.
При динамическом IP сервера клиент потеряет соединение после смены адреса. Решение: DDNS-сервис + ddclient на сервере, который обновляет запись. Тогда в C: line используешь hostname, а не IP.
Ошибка FOUND but no decode / нет картинки
Канал есть в списке, ECM-запрос уходит, но картинки нет. Это самый неприятный случай — соединение работает, но что-то не так с декодированием. Алгоритм:
- Проверь CAID канала (через WebInfo или лог) и сравни с тем, что есть на сервере
- Проверь provider id — CAID совпадает, а provider нет → картинки не будет
- Посмотри CCcam.prio — возможно, для этого CAID задан неправильный приоритет
- ECM time в WebInfo — если >800 мс, CW приходит позже смены ключа
Второй конфликт на одном ресивере: если одновременно запущены два softcam (например, CCcam и MgCamd), они конфликтуют за один и тот же дескриптор. Оставляй только один активный softcam.
Частые обрывы и freeze на HD-каналах
HD и UHD каналы требуют больше полосы пропускания и чаще обновляют crypto-period на некоторых пакетах. Freeze при нормальном пинге — признак нехватки пропускной способности между ресивером и сервером, либо перегруженного сервера.
Дополнительная проверка: tcpdump -i eth0 port 12000 покажет, есть ли TCP-ретрансмиты или паузы в потоке. Большое число ретрансмитов → проблема с сетью, а не с конфигом. Если сервер отвечает, но с задержкой >500 мс — скорее всего, перегружен или линия многоуровневого реселлинга с 4+ хопами.
Анализ логов CCcam и tcpdump
Лог CCcam: cat /var/log/CCcam.log | tail -100 или в реальном времени: tail -f /var/log/CCcam.log. Искать строки с ECM, TIMEOUT, CONNECT, DISCONNECT.
tcpdump для захвата трафика шаринга: tcpdump -i eth0 -w /tmp/cccam.pcap port 12000. Потом открывай в Wireshark на десктопе — видно рукопожатие, паузы, сбросы соединения. Если видишь TCP RST от сервера сразу после handshake — неверный логин/пароль или несовместимость версий.
Как выбрать провайдера линии: объективные критерии
Здесь не будет списка сервисов. Только метрики, которые ты можешь проверить сам во время тестового периода.
Метрики качества: ECM time, uptime, hops
ECM time — главный показатель. Меньше 200 мс — отлично. 200–400 мс — приемлемо. Больше 400 мс — начнутся проблемы на некоторых каналах, больше 600 мс — freeze гарантированы. Смотреть через WebInfo в столбце ECM или в логе OScam.
Uptime сервера за период — не верь цифрам на сайте провайдера. Тестируй сам: поставь линию на неделю, смотри логи на число разрывов и их длительность. Один разрыв раз в день на 30 секунд — терпимо. Пять разрывов за ночь — не годится.
Поддержка нужных CAID и пакетов
Перед тем как брать линию, выясни точный CAID и provider id нужных тебе каналов. Узнать CAID можно через WebInfo на работающей линии или через ресурсы с базами данных CAID. Потом спрашивай провайдера напрямую — поддерживается ли конкретный CAID:providerid. Расплывчатое «поддерживаем всё» — красный флаг.
Локальная карта против реселлерской линии
Локальная карта = 1 hop. Реселлер перепродаёт чужую линию — это уже 2–4 хопа. Каждый хоп добавляет задержку и точку отказа. В WebInfo смотри значение uphops для карты: 1 — локальная, 2+ — реселлинг.
Реселлерские линии дешевле, но нестабильнее. При прочих равных локальная карта с 1 хопом переигрывает реселлера с 3 хопами даже при одинаковом пинге. Параметр uphops в F: line на сервере ограничивает глубину цепочки — не позволяй клиентам видеть больше 2 хопов.
Тестовый период и стабильность
Нормальный провайдер даёт тестовую линию на 24–48 часов. Этого достаточно, чтобы прогнать её через реальные условия: включи запись ECM time в лог, посмотри на поведение в пиковые часы (вечер, выходные). Если в тестовый период линия работает отлично, а после оплаты деградирует — это признак перегруженного сервера, где тестовые аккаунты приоритизированы.
Частые вопросы
Какой порт использует CCcam по умолчанию?
По умолчанию CCcam слушает TCP-порт 12000 для клиентских подключений. WebInfo открывается на порту 16001, telnet — на стандартном 23. Все три порта можно переопределить в CCcam.cfg директивами SERVER LISTEN PORT, WEBINFO LISTEN PORT и ALLOW TELNET. Если интернет-провайдер блокирует порт 12000 — меняй на нестандартный, например 15000 или 8080.
Чем отличается F: line от C: line?
Направление противоположное. F: line прописывается на сервере и описывает, кому разрешено подключаться — логин, пароль, права на хопы. C: line прописывается на клиенте (ресивере) и указывает, к какому серверу подключаться — адрес, порт, логин, пароль. Грубо: F: — «кого пускаю», C: — «куда иду».
Почему канал найден, но нет картинки (no decode)?
Чаще всего — несовпадение CAID или provider id. Канал технически обнаружен, ECM уходит, но сервер не может найти подходящую карту под конкретный provider id. Второй вариант: ECM time слишком высокий и CW приходит позже смены crypto-period. Проверяй CCcam.prio на корректность записей и смотри ECM time в WebInfo. Также убедись, что нет конфликта двух одновременно запущенных softcam.
Что лучше для сервера — CCcam или OScam?
Зависит от задачи. CCcam быстрее поднять, конфиг проще, хватает для базовых случаев с небольшим числом клиентов. OScam выигрывает под нагрузкой: лучше управляет очередями ECM, детальнее логирует, поддерживает несколько протоколов одновременно и гибче в настройке приоритетов. Если держишь больше 30–40 активных линий — смотри в сторону OScam.
Как проверить, открыт ли порт сервера?
С клиентской машины: telnet server.host 12000. Если соединение установлено (видишь мусорные символы рукопожатия) — порт открыт и CCcam отвечает. На самом сервере: netstat -tlnp | grep 12000 покажет, слушает ли демон. Для диагностики NAT — проверяй с внешнего хоста, не из локальной сети. Файрвол проверяй командой iptables -L -n | grep 12000.
Сколько hops допустимо для стабильного декодирования?
Оптимум — 1 hop (локальная карта на сервере). При 2 хопах добавляется задержка, при 3–4 — риск фриза растёт. Параметр uphops в F: line ограничивает глубину, которую видит клиент: uphops = 1 означает, что клиент получит доступ только к локальным картам сервера, без транзитных карт. Для стабильного cccam sharing без фризов на HD-каналах держи downhops не более 2 и требуй от провайдера линии с 1–2 хопами максимум.
Практические советы для стабильного просмотра
Даже самая стабильная линия 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 или внешние мониторы.