Шаринг ТВ: настройка CCcam и OScam сервера 2026
Шаринг ТВ — это технология совместного использования карты условного доступа (CAM) несколькими ресиверами одновременно. Не магия и не обход чего-то абстрактного, а вполне конкретный протокол обмена пакетами по TCP. Если вы уже разбирались со спутниковым оборудованием и хотите понять, как это работает изнутри — давайте разберём механику, конфиги и диагностику от начала до конца.
Что такое шаринг ТВ и как он работает технически
Основа всего — control word (CW), он же DCW (Descrambling Control Word). Это 8-байтный ключ, который меняется примерно каждые 10 секунд. Без него дескремблер не может расшифровать поток. Когда ресивер принимает зашифрованный сигнал, он извлекает из потока ECM-пакет (Entitlement Control Message) и отправляет его на сервер.
Сервер получает ECM, прогоняет его через физическую карту в ридере, и карта возвращает готовый CW. Этот CW по TCP уходит обратно клиенту, дескремблер расшифровывает картинку. Весь цикл должен занимать не больше 500 мс — иначе начинаются фризы. EMM-пакеты (Entitlement Management Message) — это обновления прав на карте, они идут отдельно и к шарингу прямого отношения не имеют.
Принцип обмена control word (CW)
Клиент (ресивер) → ECM-запрос → сервер → карта в ридере → CW-ответ → клиент → дескремблирование. Это весь цикл. Если на любом из этих этапов задержка, вы видите фриз или чёрный экран. Сервер не хранит CW — он запрашивает карту каждый раз заново, потому что ключ меняется.
Роль сервера и клиента (peer)
Сервер — это машина с ридером и физической смарт-картой. Клиент — ваш ресивер, который не имеет собственной карты, но умеет запрашивать CW по сети. В CCcam-протоколе роли могут быть асимметричными: один пир может одновременно быть клиентом для одного сервера и сервером для другого. Это и есть "шаринг" в прямом смысле слова.
Чем CCcam отличается от OScam
CCcam — закрытый бинарник, который когда-то разработала немецкая команда. Простой в базовой настройке, работает из коробки, но не обновляется и не поддерживает современные протоколы гибко. OScam — открытый исходный код, модульная архитектура, поддерживает одновременно несколько протоколов, имеет веб-интерфейс для мониторинга.
Для серьёзной конфигурации OScam предпочтительнее. Но если вы просто хотите быстро подключиться к одному серверу — CCcam справится за 10 минут.
Что такое newcamd, CS378x и CCcam-протокол
Это три разных протокола передачи CW по сети. CCcam-протокол работает по умолчанию на порту 12000, newcamd — на порту 15000, CS378x (используется в MGcamd) — на порту 34000. Выбор протокола определяет формат пакетов и способ аутентификации. OScam умеет работать со всеми тремя одновременно на разных портах — именно это делает его удобным для смешанных конфигураций.
Настройка OScam: основные конфигурационные файлы
OScam хранит конфиги в каталоге, который зависит от прошивки ресивера. На большинстве Enigma2-боксов это /etc/tuxbox/config/oscam/ или /var/etc. После смены прошивки путь иногда меняется — проверяйте через find / -name "oscam.conf" 2>/dev/null. Некоторые дистрибутивы (OpenATV, OpenPLi) кладут конфиги в /var/keys/.
Структура каталога /etc/tuxbox/config или /var/etc
Минимальный набор файлов для работы: oscam.conf, oscam.server, oscam.user. Опционально — oscam.services для привязки каналов к группам и oscam.dvbapi для интеграции с дескремблером. Все файлы текстовые, редактируются любым редактором. После изменений OScam подхватывает конфиги без перезапуска — через веб-интерфейс или сигнал SIGHUP.
Файл oscam.conf — глобальные параметры
Минимальный рабочий oscam.conf:
[global]
Nice = -1
WaitForCards = 1
PreferlocalCards = 1
logfile = /var/log/oscam.log
maxlogsize = 1000
[webif]
httpport = 8888
httpuser = admin
httppwd = admin123
[cccam]
port = 12000
[newcamd]
port = 15000@1702:000000
PreferlocalCards = 1 означает, что если у вас есть локальная карта и удалённая линия с одинаковым CAID — OScam предпочтёт локальную. Это важно: без этого параметра при конфликте CAID OScam может уйти на удалённую линию с большей задержкой. WaitForCards = 1 задерживает старт до инициализации ридеров.
Файл oscam.server — описание ридеров и линий
Каждый ридер — отдельная секция [reader]. Для подключения к удалённому CCcam-серверу:
[reader]
label = myserver
protocol = cccam
device = 192.168.1.100,12000
user = mylogin
password = mypassword123
caid = 1702
group = 1
ccversion = 2.3.0
reconnecttimeout = 30
group = 1 здесь — это связующее звено между ридером и пользователем. Пользователь в oscam.user должен иметь group = 1, чтобы получить доступ к картам этого ридера. Если группы не совпадают — подключение есть, карты нет, каналы не открываются. Это самая частая ошибка новичков.
Файл oscam.user — учётные записи клиентов
Если OScam используется как сервер (раздаёт карты другим), каждому клиенту нужен аккаунт:
[account]
user = client1
pwd = clientpass
group = 1
au = 1
caid = 1702
ident = 1702:000000
uniq = 0
au = 1 разрешает EMM-обновления для этого клиента. ident ограничивает доступ конкретным провайдером внутри CAID. Параметр uniq = 0 позволяет одному аккаунту подключаться с нескольких IP одновременно — uniq = 1 разрешает только одно подключение.
Файл oscam.services и группы каналов
Файл oscam.services позволяет создавать именованные группы CAID/SID и ограничивать доступ пользователей к конкретным каналам. Формат: название секции, затем caid, provid, srvid. Использовать стоит, если вы раздаёте несколько пакетов разным клиентам — иначе можно обойтись без этого файла.
Настройка CCcam: файлы CCcam.cfg и CCcam.channelinfo
Конфиг CCcam обычно лежит в /var/etc/CCcam.cfg. На некоторых прошивках — в /etc/CCcam.cfg. Синтаксис чувствителен к пробелам: двоеточие после ключевого слова обязательно, лишние пробелы в строке C: ломают парсинг. Это не шутки — я видел, как конфиг не работал из-за пробела перед паролем.
Синтаксис строки C: line (клиент)
Строка C: — это подключение к удалённому серверу:
C: hostname.server.com 12000 username password
Формат: C: хост порт логин пароль. Четыре параметра через пробел, без лишних символов. Можно добавить несколько строк C: для нескольких серверов — CCcam будет использовать все доступные одновременно. Если один сервер упал, переключения между серверами не будет автоматически — CCcam просто перестанет получать CW от него.
Синтаксис строки N: line (newcamd)
Подключение по протоколу newcamd (порт 15000):
N: hostname.server.com 15000 username password 01 02 03 04 05 06 07 08 09 10 11 14
После пароля идёт 14-байтный DES-ключ в шестнадцатеричном формате — он должен совпадать с ключом на сервере. Если ключ не совпадает, аутентификация провалится без внятного сообщения об ошибке в логах.
Параметры F: line для отдачи (сервер)
Строка F: описывает клиента, которому вы раздаёте свои карты:
F: clientlogin clientpassword 1 0 0 0 { 1702:000000 }
Формат: F: логин пароль uphops downhops [ещё параметры] {CAID:ident}. Параметр downhops определяет, на сколько уровней дальше ваш клиент может передать эту карту. При downhops = 0 клиент не сможет раздавать вашу карту дальше. При downhops = 1 — сможет передать ещё одному узлу.
Опции в начале CCcam.cfg (SERVER LISTEN PORT, ALLOW TELNET)
Глобальные настройки CCcam прописываются в начале файла:
SERVER LISTEN PORT : 12000
ALLOW TELNET : yes
TELNET PORT : 16001
DEBUG : no
CAID PRIORITY : 1702
SHARE UNUSED CARDS : no
MINIMUM DOWNHOPS : 0
MAXIMUM DOWNHOPS : 2
ALLOW TELNET : yes открывает порт 16001 для отладочного telnet-подключения — там можно посмотреть статус карт командой info. В продакшне лучше выключить или ограничить фаерволом. SHARE UNUSED CARDS : no не раздаёт карты, которые у вас есть, но вы ими сами не пользуетесь — полезно для контроля над тем, что именно раздаётся.
Диагностика и устранение типичных ошибок шаринга
Большинство проблем с шарингом ТВ решаются через логи и веб-интерфейс OScam. CCcam в этом плане гораздо хуже — его лог скудный и малоинформативный. Поэтому если что-то не работает, и у вас есть выбор — диагностировать через OScam гораздо удобнее.
Подключение есть, но каналы не открываются
Первым делом смотрите на CAID и provider ident. В лог OScam (обычно /var/log/oscam.log) попадают строки вида:
2026/06/13 12:34:56 1234 c username (192.168.1.50) ECM CW not found (1702&000000/0001/0042, 0 ms)
Если видите "CW not found" — карта на сервере не содержит нужный CAID или ident. Сверьте CAID канала (смотрите в настройках ресивера или через плагин ServiceInfo) с тем, что прописано в oscam.server. Вторая причина — неправильная привязка групп: ридер с нужной картой в группе 2, а пользователь ищет в группе 1.
Ошибка CW not found / no card
Проверьте telnet-подключение к серверу вручную:
telnet 192.168.1.100 12000
Если соединение устанавливается — сервер слушает порт. Если нет — либо сервер упал, либо фаервол блокирует порт. При двойном NAT (провайдерский + домашний роутер) исходящий порт 12000 может блокироваться на уровне провайдера — это реальная проблема в ряде сетей. В этом случае попробуйте попросить сервер переключиться на порт 80 или 443 — они открыты практически везде.
Высокий ECM time и фризы изображения
ECM time выше 600 мс — это уже проблема. Причин несколько: перегруженный сервер, высокий пинг до него, или hop больше 1. Hop означает, что CW пришёл не напрямую с карты, а через промежуточный сервер. Каждый дополнительный hop добавляет 50–150 мс задержки минимум.
Ещё одна неочевидная причина — рассинхронизация времени. Если на сервере системное время отличается от реального больше чем на 30 секунд, CW может приходить устаревшим. Решение: настроить NTP. На Linux-сервере это ntpd или chrony, на Enigma2 — плагин NTPSync. Проверьте время на сервере командой date и сравните с текущим.
Также бывает проблема fast zapping — когда быстро переключаешь каналы с частой сменой ключей, сервер не успевает обработать очередь ECM-запросов. Это не баг, а ограничение производительности карты.
Анализ логов oscam через веб-интерфейс (порт 8888)
Открываете браузер, заходите на http://ip-ресивера:8888. Раздел "Readers" показывает статус каждого ридера: CONNECTED, OFF, или RECONNECTING. В разделе "Status" видно активные ECM-запросы в реальном времени, время ответа и результат (Found/CacheEx/Not found).
Если ридер показывает статус OFF при правильных данных — скорее всего проблема с сетью или фаерволом. Статус CONNECTED, но каналы не открываются — несоответствие CAID или групп. Это два разных сценария с разными решениями, и веб-интерфейс позволяет их чётко разделить.
Как выбрать сервер шаринга: технические критерии
Рекламные обещания "1000 каналов" и "100% аптайм" ничего не значат. Оценивайте по тому, что можно измерить. Вот что реально важно при выборе.
Стабильность аптайма и пинг до сервера
Географическая близость сервера — это не про флаг страны на сайте, а про реальный пинг. Запустите ping hostname до сервера. Меньше 30 мс — отлично. 30–80 мс — приемлемо. Больше 100 мс — ECM time будет стабильно выше 300 мс даже при нормальной нагрузке. Попросите тестовую линию на 24–48 часов и смотрите ECM time в логах OScam — это объективная метрика.
Поддержка нужных CAID и локальных карт
Это принципиально: сервер должен иметь именно локальную карту вашего провайдера, а не ресейл чужой. Локальная карта — hop=0, ответ приходит напрямую. Ресейл через несколько серверов — hop=2 и выше, задержка растёт экспоненциально. В OScam hop виден в логах: строка с hop=0 означает локальную карту.
Время отклика ECM как показатель качества
Норма для качественного соединения: 50–200 мс при hop=0 с хорошим пингом. Если тестовая линия даёт стабильные 100–150 мс и не скачет — это хороший знак. Если ECM time гуляет от 80 до 800 мс в течение дня — сервер перегружен или нестабилен, независимо от того, что написано на сайте.
Поддержка протоколов и количество линий
Хороший сервер поддерживает минимум два протокола: CCcam (порт 12000) и newcamd (порт 15000). Наличие резервных линий — важный момент: если основная упала, резервная автоматически берёт на себя нагрузку. В OScam это настраивается через несколько секций [reader] с одинаковым CAID и разными group — основной ридер в группе 1, резервный в группе 2, приоритет задаётся параметром weight.
Часто задаваемые вопросы
Какой порт использует CCcam по умолчанию?
CCcam-протокол по умолчанию слушает порт 12000. Newcamd работает на порту 15000, CS378x (MGcamd) — на порту 34000, telnet-отладка CCcam — 16001, веб-интерфейс OScam — 8888. Все эти порты задаются в конфигурационных файлах и должны быть открыты в фаерволе как на сервере, так и на роутере.
Чем OScam лучше CCcam для настройки сервера?
OScam — открытый проект с модульной архитектурой: один демон одновременно обслуживает клиентов по CCcam, newcamd и CS378x. Есть веб-интерфейс для мониторинга, гибкая система групп и ридеров, поддержка CAID-фильтрации. CCcam проще в базовой настройке, но закрыт, не обновляется и не поддерживает одновременную работу нескольких протоколов. Для сервера с несколькими клиентами OScam — однозначно лучший выбор.
Почему канал не открывается, хотя подключение к серверу активно?
Чаще всего причина — несоответствие CAID или provider ident между картой на сервере и запрашиваемым каналом. Вторая по частоте причина — неправильная привязка группы: ридер в группе 1, а аккаунт клиента настроен на группу 2. Проверьте статус ридера в веб-интерфейсе OScam (порт 8888) и сверьте CAID канала через ServiceInfo на ресивере.
Что такое ECM time и какое значение считается нормальным?
ECM time — это время от отправки ECM-запроса до получения control word от сервера. Нормальное значение: до 300–500 мс. Выше 600 мс — начинаются фризы и подвисания картинки. На значение влияют три фактора: загрузка сервера, сетевая задержка (пинг) и количество hop. При hop=0 и хорошем пинге реальный ECM time должен быть в районе 80–150 мс.
Где находятся конфигурационные файлы OScam?
Зависит от прошивки ресивера. На большинстве Enigma2-дистрибутивов (OpenATV, OpenPLi, OpenVix) — /etc/tuxbox/config/oscam/ или /var/etc. Иногда конфиги лежат в /var/keys/. После смены прошивки путь может измениться — найдите командой find / -name "oscam.conf" 2>/dev/null. Основные файлы: oscam.conf, oscam.server, oscam.user, oscam.services.
Что означают uphops и downhops в CCcam.cfg?
Hop — это число ретрансляций карты между серверами. В строке F: параметр downhops задаёт, на сколько уровней дальше ваш клиент может передавать полученную карту. При downhops = 0 — клиент использует карту только сам, не раздаёт. При downhops = 1 — может передать ещё одному серверу. Чем больше hop — тем выше суммарная задержка и ниже стабильность. Оптимально держать цепочку не длиннее двух уровней.