Шаринг ТВ: настройка CCcam и OScam с нуля 2026
Шаринг тв — это не магия и не чёрный ящик. За фризами, красными строками и непонятными ошибками всегда стоит вполне конкретная техническая причина. В этой статье я разберу, как реально работает card sharing на уровне протоколов, покажу живые конфиги OScam и CCcam с объяснением каждого параметра, и расскажу, как диагностировать проблемы вместо того, чтобы тыкать настройки вслепую.
Материал рассчитан на тех, кто уже знаком со спутниковым ТВ и хочет разобраться именно в технической части — настройке сервера, форматах конфигов, диагностике freeze.
Что такое шаринг ТВ и как он работает технически
Шаринг тв строится на одном простом принципе: смарт-карта физически находится на одном устройстве, а расшифровывает сигнал для нескольких клиентов по сети. Но чтобы это работало стабильно, надо понимать, что именно летит по сети и почему задержка в 50 мс может быть нормой, а 600 мс — уже проблемой.
Принцип работы card sharing: ECM-запросы и Control Word
Зашифрованный телеканал несёт в себе так называемые ECM-пакеты (Entitlement Control Message). Это небольшие зашифрованные блоки, которые меняются каждые ~10 секунд — именно в них зашит ключ для расшифровки текущего видеопотока.
Ресивер получает ECM, отправляет его на шаринг-сервер. Сервер пропускает ECM через реальную смарт-карту или эмулятор, получает DCW (De-Crypting Control Word) — тот самый 8-байтный ключ — и возвращает его клиенту. Клиент расшифровывает видео и показывает картинку. Весь этот цикл должен укладываться в ~300–400 мс, иначе начнутся подвисания.
Кроме ECM есть EMM (Entitlement Management Message) — это команды управления картой: активация пакетов, обновление прав. EMM обрабатывается только локально на карте, клиентам не передаётся.
Каждый канал идентифицируется через тройку: CAID (идентификатор системы шифрования, например 0x1800 для Nagravision), ProvID (идентификатор провайдера) и SrvID (идентификатор сервиса/канала). Когда сервер не может расшифровать ECM — обычно именно из-за несовпадения одного из этих трёх значений.
Роль сервера и клиента в схеме шаринга
Сервер — это машина с физической картой или программным эмулятором, которая умеет принимать ECM-запросы и возвращать CW. Клиент — ресивер, который карты не имеет, но умеет общаться с сервером по одному из протоколов шаринга.
На практике граница размыта: один и тот же OScam-инстанс может одновременно быть клиентом для одного сервера и сервером для десяти клиентов. Это называется решарингом. И вот тут начинаются реальные проблемы с hop-цепочками — об этом ниже.
Чем CCcam отличается от OScam
CCcam — проприетарный протокол, разработанный под одноимённый эмулятор. Закрытый бинарник, никакого исходного кода. Работает только с одним протоколом — своим собственным. Для базового клиентского использования вполне достаточно, настройка простая.
OScam — это уже другая история. Открытый исходный код, активно поддерживается сообществом. Поддерживает одновременно несколько протоколов: CCcam, newcamd, mgcamd, gbox, radegast. То есть один OScam-сервер может раздавать одновременно клиентам на разных протоколах. Плюс — гибкая система группировки ридеров и пользователей, детальная статистика в веб-интерфейсе, фильтрация по CAID/ProvID на уровне конфига.
Для серверной стороны OScam выигрывает. Для простого клиента на старом ресивере CCcam может оказаться проще в установке — особенно если прошивка его уже поддерживает из коробки.
Настройка сервера OScam: конфиги и порты
OScam хранит конфиги в одной директории. На Enigma2-ресиверах это чаще всего /etc/tuxbox/config/oscam/, на некоторых прошивках — /var/keys/. На обычном Linux-сервере путь задаётся при запуске через ключ -c.
Запуск выглядит так:
oscam -b -c /etc/tuxbox/config/oscam/
Флаг -b запускает демон в фоне. Без него OScam будет выводить лог прямо в терминал — удобно при отладке.
Структура файлов: oscam.conf, oscam.server, oscam.user, oscam.services
Четыре основных файла:
- oscam.conf — глобальные настройки демона, веб-интерфейс, логирование
- oscam.server — описание ридеров (физических карт или внешних серверов)
- oscam.user — аккаунты клиентов, которые подключаются к вашему серверу
- oscam.services — фильтры по каналам и пакетам (необязательно, но полезно)
Базовый oscam.conf и веб-интерфейс на порту 8888
Минимальный рабочий oscam.conf:
[global]
logfile = /var/log/oscam/oscam.log
maxlogsize = 512
preferlocalcards = 1
[webif]
httpport = 8888
httpuser = admin
httppwd = yourpassword
httprefresh = 10
httphideidleclients = 1
После запуска веб-интерфейс доступен на http://ip-адрес:8888. Там видны все активные ридеры, подключённые клиенты, статистика decode time в реальном времени — главный инструмент диагностики.
preferlocalcards = 1 означает, что OScam сначала пробует расшифровать ECM через локальные карты, и только если не получается — идёт к удалённым ридерам. Это разумный дефолт.
Подключение ридера карты в oscam.server
Для внутреннего ридера ресивера (встроенный картридер):
[reader]
label = internal_card
protocol = internal
device = /dev/sci0
caid = 1800
detect = cd
mhz = 357
cardmhz = 357
group = 1
emmcache = 1,3,2
Для внешнего USB-картридера устройство меняется на /dev/ttyUSB0, протокол — на mouse или smartreader в зависимости от модели ридера:
[reader]
label = usb_reader
protocol = mouse
device = /dev/ttyUSB0
caid = 0963
group = 1
Параметр group — это то, что связывает ридер с пользователями. Если у ридера group = 1, а у пользователя в oscam.user не указана эта группа — ECM до карты не дойдёт. Это одна из самых частых причин ошибки «no matching reader».
Настройка пользователей в oscam.user
[account]
user = client1
pwd = secretpass
group = 1
caid = 1800
au = 1
uniq = 0
monlevel = 0
Параметр group = 1 здесь должен совпадать с group ридера в oscam.server — именно так OScam понимает, через какой ридер обслуживать этого клиента. Если поставить группу, которой нет ни у одного ридера, пользователь будет подключаться, но получать ошибку «group mismatch».
au = 1 разрешает автообновление прав карты (EMM) для этого аккаунта. uniq = 0 означает, что с одним логином может подключаться несколько клиентов одновременно — для домашнего использования нормально.
Настройка клиента CCcam: файл CCcam.cfg
CCcam читает единственный конфиг — CCcam.cfg. На Enigma2-прошивках он обычно лежит в /var/etc/CCcam.cfg, на других системах — в /etc/CCcam.cfg. Файл текстовый, строки начинаются с буквенного префикса, определяющего тип директивы.
Синтаксис строки C: line (хост, порт, юзер, пароль)
C: line — это подключение к внешнему серверу в роли клиента:
C: server.example.com 12000 myusername mypassword no { 0:0:1 }
Разбор по полям:
server.example.com— хост или IP-адрес сервера12000— порт (стандартный диапазон CCcam: 12000–25000)myusername/mypassword— учётные данныеno— флаг wantemus (запрос EMM с сервера):yesвключает,noотключает{ 0:0:1 }— разрешить все CAID, все ProvID, hop ≤ 1
Можно добавить несколько C: line — CCcam будет использовать их как резервные. Если первый сервер недоступен, переключится на следующий.
Параметры F: line для отдачи и решаринга
F: line создаёт локального пользователя, которому CCcam будет раздавать CW — то есть ваш ресивер становится сервером для других:
F: frienduser friendpass 1 0 0 { 0:0:1 }
Третье поле — это hop-лимит для решаринга. Значение 1 означает, что клиент получит карты с hop не более 1 (только локальные). Если поставить 2 — он сможет получить и карты с одним решарингом. Чем выше это число, тем длиннее цепочка и выше задержка.
Параметр hop в целом — один из ключевых для стабильности. Hop 1 — карта стоит прямо на сервере, к которому вы подключены. Hop 2 — сервер сам берёт CW у кого-то ещё. Каждый дополнительный прыжок добавляет 50–150 мс к ECM time. При hop 4–5 freeze становится нормой, а не исключением.
Путь к конфигу и перезапуск демона
Перезапуск CCcam после изменения конфига:
killall -9 CCcam && CCcam -c /var/etc/CCcam.cfg
На Enigma2 удобнее через init.d:
/etc/init.d/CCcam restart
CCcam не перечитывает конфиг на лету — нужен именно полный рестарт. OScam в этом плане гибче: большинство изменений применяются через кнопку «Restart» в веб-интерфейсе без полной остановки демона.
Диагностика и решение типичных проблем шаринга
Freeze — это почти всегда одно из трёх: высокий ECM time, неправильный CAID/ProvID, или проблема на сетевом уровне. Смотреть надо именно в таком порядке.
Freeze и подвисания картинки: причины и проверка
Control Word меняется каждые ~10 секунд. Если новый CW не пришёл до истечения предыдущего — картинка замерзает. ECM time выше 500–600 мс уже опасная зона, выше 800 мс — freeze почти гарантирован на части каналов.
Первый шаг диагностики — проверить базовую сеть:
ping -c 10 server.example.com
traceroute server.example.com
telnet server.example.com 12000
Если telnet не подключается — порт закрыт или заблокирован. Если ping показывает >100 мс и нестабильный RTT — проблема в сети, шаринг тут бессилен.
Отдельная история — работа за NAT с серым IP. В этом случае для входящих подключений (если вы сами раздаёте) нужен проброс порта на роутере. Для исходящих подключений к серверу NAT обычно не мешает.
Анализ логов OScam через веб-интерфейс
Открываем http://ip:8888, раздел Readers — здесь видны все ридеры, их статус и decode time в миллисекундах. Зелёный цвет строки — ридер активен и отвечает. Жёлтый — высокая нагрузка. Красный — ридер недоступен.
В разделе Users видно каждого подключённого клиента, количество ECM-запросов, процент успешных расшифровок и среднее время ответа. Если у клиента 100% OK и decode time 150 мс — всё хорошо. Если decode time 700 мс или есть строки «not found» — копаем дальше.
Раздел Logs в реальном времени показывает каждый ECM-запрос, CAID, SrvID и результат. Строки вида found (150 ms) — норма. not found или wrong provider — нужно смотреть CAID и ProvID в oscam.server.
Проверка статуса C: line (зелёные и красные строки)
В CCcam статус C: line смотрим через telnet на порт 16001:
telnet 127.0.0.1 16001
Откроется текстовый интерфейс CCcam. Команда l — список подключённых серверов. Зелёный цвет строки означает, что линия активна и карты получены. Красный — сервер недоступен или аутентификация не прошла.
На Enigma2 эту же информацию удобнее смотреть через веб-страницу ресивера (обычно порт 80 или 8080) в разделе эмуляторов. Там те же зелёные/красные индикаторы в более читаемом виде.
Проблемы с ECM time и сетевой задержкой
Если freeze есть только на части каналов, а остальные работают нормально — почти наверняка проблема в CAID или ProvID. Один и тот же транспондер может нести каналы с разными системами шифрования. Ваша карта поддерживает один пакет, но не поддерживает другой.
Проверить: в OScam логах найти ECM-запрос для проблемного канала и посмотреть, какой CAID он запрашивает. Затем убедиться, что ваш ридер в oscam.server имеет этот CAID в параметре caid. Если нет — карта этот канал не расшифрует физически, это не проблема конфига.
Другой частый случай — два запущенных эмулятора одновременно. CCcam и OScam, запущенные вместе на одном ресивере, конкурируют за один и тот же физический картридер (/dev/sci0). Карта отвечает только одному процессу, второй получает ошибку «card not inserted». Решение простое: использовать что-то одно, или настроить OScam как единственный демон с картой, а CCcam-протокол раздавать через него же.
Как выбрать стабильный сервер шаринга: критерии
Если вы подключаетесь как клиент к внешнему серверу, а не держите собственную карту — выбор сервера влияет на стабильность напрямую. Вот что реально имеет значение.
Технические параметры качества: uptime и ECM time
Первый критерий — это не цена и не красивый сайт, а заявленный и реальный uptime. Хороший сервер держит 99%+ uptime за месяц. Проверить это можно только по факту использования или по отзывам на тематических форумах.
ECM time — второй ключевой параметр. Сервер с локальными картами (local cards) даёт 50–200 мс. Сервер, который сам является клиентом где-то ещё (решаринг), даёт 300–600 мс и выше. Разница ощущается на каналах с агрессивной сменой CW.
Хорошие серверы обычно предлагают тестовую линию на 24–48 часов. Это честный способ проверить реальный ECM time под нагрузкой, а не в идеальных условиях.
Поддержка нужных пакетов и caid
Перед подключением надо точно знать CAID и ProvID пакетов, которые вас интересуют. Сервер должен явно поддерживать эти CAID — иначе ECM-запросы будут уходить и возвращаться с «not found».
Наличие резервных линий — плюс. Если основная карта недоступна (перезагрузка сервера, проблемы с ридером), резервная берёт нагрузку на себя без заметного перерыва в картинке.
Признаки ненадёжного источника
Большой hop — самый очевидный признак. Если тестовая линия показывает ECM time 700–900 мс, значит карта находится за несколькими посредниками. Freeze будет регулярным.
Подозрительно выглядят серверы, которые не могут или не хотят сказать, какие именно CAID они поддерживают локально. Честный оператор всегда знает, какие карты у него стоят физически.
Ещё один сигнал — нет никакой возможности связаться с поддержкой. Технические проблемы бывают у всех, но возможность получить ответ на вопрос должна быть.
Частые вопросы
Какой порт используется для шаринга по протоколу CCcam?
Стандартный диапазон — 12000–25000, чаще всего используется именно 12000. Конкретный порт задаётся на стороне сервера и прописывается в C: line клиентского конфига. Веб-статус CCcam и telnet-интерфейс работают на порту 16001 — он фиксированный.
Что лучше для настройки сервера — CCcam или OScam?
Для серверных задач OScam выигрывает однозначно: открытый код, поддержка нескольких протоколов одновременно (CCcam, newcamd, mgcamd), гибкая система групп и детальная диагностика через веб-интерфейс. CCcam проще настроить как базовый клиент — особенно если прошивка ресивера его уже включает. Но если вы держите карту и раздаёте нескольким клиентам — OScam без вариантов.
Почему картинка подвисает (freeze) при шаринге?
Порядок диагностики такой: сначала проверить ECM time в логах OScam или через CCcam telnet — если выше 500–600 мс, проблема в сервере или сети. Затем проверить ping до сервера — нестабильный канал убивает шаринг. Если freeze только на части каналов — скорее всего несовпадение CAID или ProvID. Длинная цепочка решаринга (hop 3+) тоже типичная причина: каждый прыжок добавляет задержку.
Где находятся конфигурационные файлы OScam?
Зависит от прошивки. На Enigma2 (Dreambox, VU+, Zgemma) — обычно /etc/tuxbox/config/oscam/. На некоторых прошивках — /var/keys/. На обычном Linux-сервере путь задаётся при запуске: oscam -c /путь/к/конфигам. Основные файлы: oscam.conf, oscam.server, oscam.user, oscam.services.
Как проверить, работает ли C: line на ресивере?
В CCcam — через telnet на порт 16001 (команда l для списка линий) или через веб-интерфейс ресивера: зелёная строка означает активное подключение, красная — сервер недоступен или ошибка аутентификации. В OScam смотреть раздел Users в webif на порту 8888: цвет строки и decode time показывают реальное состояние подключения.
Что такое hop в настройках шаринга и на что он влияет?
Hop — количество прыжков от источника карты до вашего ресивера. Hop 1 — карта стоит напрямую на сервере, к которому вы подключены. Hop 2 — ваш сервер сам является клиентом где-то ещё. Каждый дополнительный hop добавляет 50–150 мс к ECM time. При hop 4–5 суммарная задержка легко превышает 600 мс, и freeze становится частым гостем. В CCcam.cfg hop ограничивается в фигурных скобках C: line: { 0:0:1 } — последняя цифра и есть максимальный hop.