/

Кардшаринг: настройка CCcam и OScam с нуля

Главная Статьи Кардшаринг: настройка CCcam и OScam с нуля

Дата публикации

09.06.2026

Кардшаринг: настройка CCcam и OScam с нуля

Если вы уже знаете, что такое ECM-запрос и зачем нужен control word, но никак не можете победить пустой экран после подключения линии — эта статья для вас. Кардшаринг на практике выглядит проще, чем кажется из документации, но дьявол в деталях: один неверный параметр в конфиге, неправильная группа или закрытый порт — и ничего не работает. Разберём всё по порядку, с реальными путями и командами.

Что такое кардшаринг и как он работает

Технически кардшаринг — это механизм распределённого доступа к смарт-карте. Ваш ресивер не умеет расшифровывать поток самостоятельно без карты, но может обратиться к удалённому серверу, у которого эта карта вставлена физически.

Принцип работы: ECM, CW и control word

Всё начинается с ECM (Entitlement Control Message) — зашифрованного пакета, который мультиплексирован прямо в DVB-потоке. Клиентский ресивер вытаскивает этот пакет и отправляет его на кардшаринг-сервер. Сервер прогоняет ECM через физическую смарт-карту, та возвращает control word (CW) — 8 байт, которые и расшифровывают 10 секунд видео. CW летит обратно клиенту, descrambler применяет его к потоку, картинка появляется.

Весь цикл должен укладываться в 400–500 мс. Если нет — фризы. Вот почему ECM time — главная метрика качества соединения.

Роли сервера и клиента

Сервер — это машина с физически вставленной картой и запущенным OScam или CCcam. Клиент — ваш Enigma2-ресивер или любое другое устройство с softcam. Один сервер может обслуживать несколько клиентов одновременно, но каждая карта имеет ограничение на параллельные расшифровки — обычно 2–4 одновременных потока.

Основные протоколы: CCcam, newcamd, CS378x, MGcamd

CCcam работает на порту 12000 по умолчанию. Протокол проприетарный, но реализован в OScam через эмуляцию. Строка подключения выглядит так: C: hostname 12000 username password.

newcamd — старый, но живой протокол. Порты обычно в диапазоне 28000–28009. Обязателен 14-символьный DES-ключ в hex. Без него соединение либо не установится, либо будет постоянно разрываться.

CS378x (он же camd35) — UDP-протокол, используется реже, но встречается в некоторых конфигах. MGcamd — отдельный softcam со своим протоколом, актуален для определённых прошивок.

Установка и настройка OScam

OScam — это открытый проект, собирается под большинство архитектур: ARM (Enigma2-ресиверы), MIPS, x86. Самый стабильный вариант — собрать самому из svn или взять готовый бинарник под свою платформу с официального репозитория.

Сборка OScam через svn/git и toolchain

Checkout исходников:

svn checkout https://svn.streamboard.tv/oscam/trunk oscam-trunk
cd oscam-trunk

Для кросс-компиляции под ARM Enigma2 нужен тулчейн от производителя вашей платформы (Dreambox, VU+, Gigablue и т.д.). Конфигурируем через make config — там выбираем нужные ридеры и протоколы. Минимальный набор: cardreader_smargo, protocol_cccam, protocol_newcamd.

Если собираете под x86 для обычного Linux:

make USE_PCSC=1 USE_LIBUSB=1

Структура каталога /etc/tuxbox/config или /var/keys

На Enigma2 конфиги OScam чаще всего живут в /etc/tuxbox/config/oscam/. На некоторых сборках (особенно OpenATV) путь смещается в /usr/keys/. Проверьте, что лежит в обоих местах — после обновления прошивки они могут оказаться в разных состояниях.

Набор файлов конфигурации минимальный:

  • oscam.conf — глобальные параметры и секции протоколов
  • oscam.server — описание ридеров (физических и сетевых)
  • oscam.user — учётные записи клиентов

Файл oscam.conf и секция [global]

Минимальный рабочий oscam.conf:

[global]
logfile                = /tmp/oscam.log
maxlogsize             = 512
preferlocalcards       = 1
lb_mode                = 1
lb_save                = 300

[newcamd]
key                    = 0102030405060708091011121314
port                   = 28000@1234:000000

[webif]
httpport               = 8888
httpuser               = admin
httppwd                = yourpassword
httprefresh            = 10

Параметр preferlocalcards = 1 важен: без него OScam может отправить запрос на сетевой ридер, игнорируя физическую карту. lb_mode = 1 включает loadbalancer, который автоматически выбирает лучший источник по ECM time.

Настройка oscam.server и oscam.user

Пример секции ридера с физической картой через Smargo:

[reader]
label                  = local_card
protocol               = smartreader
device                 = /dev/ttyUSB0
detect                 = cd
mhz                    = 368
cardmhz                = 368
group                  = 1
emmcache               = 1
cacheex                = 0

Файл oscam.user описывает, кто может подключаться к серверу:

[account]
user                   = client1
pwd                    = secretpass
group                  = 1
au                     = local_card
uniq                   = 0
monlevel               = 0

Параметр group должен совпадать между ридером и пользователем — это главная причина ошибки "group mismatch". Если группы не совпадают, OScam просто не будет направлять ECM-запросы этого пользователя к нужному ридеру.

Веб-интерфейс httpport и мониторинг

После запуска oscam -b -r 2 открывайте браузер на http://ваш-IP:8888. Там всё: статус каждого ридера, текущие ECM-запросы, время ответа, список подключённых клиентов. Флаг -b запускает в фоне, -r 2 указывает количество попыток реконнекта.

Зелёный статус "CONNECTED" у ридера — не гарантия работы. Смотрите на колонку ECM — если запросы есть, но ответов нет, проблема в карте или CAID.

Установка и настройка CCcam

CCcam — бинарник, исходников нет. Последняя "живая" версия — 2.3.x. Для Enigma2 берёте arm-бинарник, кладёте в /usr/bin/CCcam, даёте права на исполнение.

Путь к бинарнику и автозапуск

Конфиг: /var/etc/CCcam.cfg. Именно этот путь ищет бинарник по умолчанию — не /etc/CCcam.cfg, не /tmp/CCcam.cfg. Ошибка с путём и CCcam запустится без конфига, тихо.

Для автозапуска на Enigma2 создайте /etc/init.d/CCcam или просто добавьте запись в /etc/rcS.d/. На OpenATV удобнее использовать плагин softcam-manager.

Файл CCcam.cfg: строки F (server) и C (client)

Строка F: описывает пользователя, которому ваш CCcam раздаёт карты (если вы сервер):

F: username password 1 1 0 0 0

Параметры после пароля — uphops, downhops, и флаги. Строка C: — подключение к внешнему серверу (если вы клиент):

C: server.example.com 12000 myuser mypassword

Одновременно можно иметь и F-строки, и C-строки — CCcam сам разберётся, что раздавать, а откуда брать.

Параметры C-line: host, port, username, password

Полный блок серверной части CCcam.cfg с основными параметрами:

SERVER LISTEN PORT : 12000
ALLOW TELNET : yes
TELNET PORT : 16000
NEWCAMD LISTEN PORT : 28000
SERIAL SHARING : no
EXTENDED LOGGING : yes
ECM INFO LOG : yes
DEBUG : no

Telnet на порту 16000 — ваш лучший друг при диагностике. Подключаетесь локально: telnet localhost 16000, и видите список подключённых серверов, статус каждого, количество найденных карт.

Опции SID assign и share limits

Если нужно ограничить доступ к определённым каналам, используется SIDFILTER:

SIDFILTER : username 1234:001234,001235

Формат: имя пользователя, пробел, CAID:SID через запятую. Полезно, когда у вас несколько клиентов с разными пакетами подписки.

Связка OScam и CCcam: гибридная конфигурация

Многие переходят на OScam не потому что CCcam плохой, а потому что OScam — это логирование, EMM-поддержка, веб-интерфейс и стабильность под нагрузкой. При этом CCcam-линии у многих уже куплены и работают. Решение — подключить CCcam-источник прямо внутри OScam через reader-секцию.

Подключение CCcam-линий внутри OScam

OScam умеет выступать CCcam-клиентом. Никакого отдельного CCcam не нужно — OScam сам реализует клиентскую часть протокола. Это чище и стабильнее, чем держать оба softcam одновременно.

Reader с protocol cccam в oscam.server

[reader]
label                  = remote_cccam
protocol               = cccam
device                 = cccam.server.com,12000
user                   = myuser
password               = mypassword
group                  = 2
cccversion             = 2.3.0
cccmaxhops             = 2
ccckeepalive           = 1
reconnecttimeout       = 30

Параметр cccversion важен. Некоторые серверы работают только с версией 2.1.4, другие — с 2.3.0. Если соединение устанавливается, но карты не видны — попробуйте изменить cccversion. cccmaxhops = 2 ограничивает глубину решары: запросы к картам дальше 2 хопов OScam отправлять не будет.

Конвертация C-line в reader-секцию

C-line вида C: hostname 12000 user pass конвертируется в reader буквально построчно:

C-lineoscam.server
hostnamedevice = hostname,12000
12000(часть device)
useruser = user
passpassword = pass

Группу назначайте сами — главное, чтобы она совпадала с группой в oscam.user для ваших клиентов.

Диагностика и решение типичных ошибок

Большинство проблем решается чтением логов. Но нужно знать, что именно искать.

Ошибка 'card not found' и пустой канал

В логах OScam это выглядит как no matching reader found или no card supports CAID. Первым делом проверяем: правильный ли CAID у канала? На Enigma2 смотрите в информацию о сервисе — там есть CAID и provid. Потом проверяем, что ридер с нужным CAID в правильной группе и группа назначена пользователю.

Если CAID совпадает, но канал не открывается — проверьте provid. У некоторых операторов один и тот же CAID используется с разными provid для разных пакетов. Явно указать провайдер можно в oscam.server через параметр caid = 0123:456789.

Фриз и долгая расшифровка (высокий ECM time)

Норма ECM time — до 300–400 мс. При 500 мс начинаются периодические подвисания, при 800 мс+ фризы становятся постоянными. В webif OScam смотрите колонку "ECMtime" у каждого ридера.

Причины высокого ECM time: сетевая задержка до сервера, перегруженный источник, слишком длинная цепочка решаров (hop 3 и выше), или источник просто слабый и обрабатывает запросы медленно. Быстро проверить: ping -c 20 hostname — если средний ping выше 150–200 мс, это уже проблема.

Ещё один случай — высокий ECM time только на части каналов. Это значит, что у одного провайдера карты разные provid для разных транспондеров, и один из них уходит на более медленный ридер. Решается через lb_weight или явное указание provid в reader-секции.

Проблемы с портами и firewall

Проверяем, слушает ли OScam/CCcam нужный порт:

netstat -tulpn | grep 12000

Если строки нет — процесс либо не запустился, либо конфиг неверный. Если строка есть, но снаружи недоступно — iptables или роутер блокирует. На Enigma2 iptables обычно не мешает, но если у вас сервер за NAT/CGNAT — проброс порта может быть физически невозможен. В этом случае единственный нормальный вариант — поднять VPN-туннель (WireGuard или OpenVPN) до сервера с белым IP и подключаться через него.

Чтение логов OScam и статусов CCcam

В OScam включаем детальный лог для конкретного ридера через webif: Readers → ваш ридер → Log Level → установить на 255. Потом tail -f /tmp/oscam.log. Ищем строки с "ECM" — там будет CAID, provid, время ответа и имя ридера, который ответил.

В CCcam через telnet (порт 16000) команда l показывает список подключённых серверов. Статус "1" — подключён, "2" — в процессе подключения. Если постоянно "2" — проблема в сетевой доступности или неверные учётные данные.

Ошибка с неверным DES-ключом newcamd в логах выглядит как invalid DES key или соединение устанавливается и сразу рвётся. Ключ должен быть ровно 14 байт в hex, то есть 28 символов. Стандартный тестовый: 0102030405060708091011121314.

Как выбрать источник кардшаринга: критерии без названий

Рынок источников для кардшаринга непрозрачен — большинство продавцов не говорят, что именно продают. Но по нескольким параметрам можно отличить нормальный источник от перепроданного решара.

На что смотреть: ECM time, аптайм, локальные карты

Локальные карты — hop 0 на стороне сервера, hop 1 на вашей стороне. Это лучшее, что можно получить. Если источник заявляет hop 1, ECM time должен быть в районе 150–250 мс при нормальной сети. Аптайм выше 99% в месяц — хороший показатель, 95% — уже терпимо, ниже — ищите другой источник.

Запросите тестовый доступ на 24–48 часов и смотрите на реальный ECM time в webif, а не на обещания. Также уточните список поддерживаемых CAID — у источника должны быть явно указаны конкретные значения, не просто "все европейские пакеты".

Признаки решары и почему это плохо

Решара (reshare) — когда источник сам является клиентом другого сервера. Каждый дополнительный хоп добавляет 50–200 мс к ECM time и увеличивает риск обрыва. Хоп 3+ практически всегда означает нестабильную работу.

Косвенные признаки решары: ECM time скачет от 100 до 800 мс без видимых причин, каналы периодически "пропадают" на несколько секунд, разные каналы одного пакета имеют очень разное время отклика.

Тестовый период и поддержка протоколов

Хороший источник всегда даёт тест. Если отказывают в тестовом доступе — повод задуматься. Проверяйте поддержку нужного вам протокола заранее: если у вас OScam с CCcam-reader, нужен CCcam-протокол на порту 12000, а не только newcamd.

Чек-лист при выборе источника:

  • Протокол: CCcam 2.3.x / newcamd / оба
  • Хоп: не выше 1 для основных CAID
  • ECM time в тесте: стабильно ниже 400 мс
  • Аптайм: история за последний месяц
  • Тестовый период: минимум 24 часа
  • Список CAID: явные значения, не общие слова

Чем OScam лучше CCcam?

OScam — открытый проект с активной разработкой. Главные преимущества: поддержка EMM (автоматическое обновление прав на карте), детальное логирование с webif, гибкая настройка приоритетов через loadbalancer, стабильная работа под нагрузкой с несколькими клиентами. CCcam проще в первоначальной настройке — один файл конфига, минимум параметров. Но он проприетарный, последняя версия 2.3.x не обновляется, а диагностика без webif значительно сложнее.

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

CCcam-протокол: порт 12000. Newcamd: диапазон 28000–28009 (конкретный порт зависит от конфига сервера). Веб-интерфейс OScam: обычно 8888. Все эти порты задаются вручную в конфигурационных файлах и должны быть открыты в firewall и проброшены на роутере, если сервер стоит за NAT.

Что означает ECM time и какое значение нормальное?

ECM time — время полного цикла расшифровки: от отправки ECM-запроса до получения control word. Норма — до 300–400 мс. При 500 мс начинаются периодические фризы, при 800 мс+ изображение замерзает постоянно. На ECM time влияют: сетевая задержка до сервера, количество хопов, загрузка источника, и количество параллельных запросов на одну карту.

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

Причин несколько. Несовпадение CAID или provid — самое частое. Group mismatch в OScam: группа ридера не совпадает с группой пользователя. Нет нужной карты у источника для этого конкретного канала. Неверный DES-ключ при newcamd (должен быть 28 hex-символов, то есть 14 байт). Канал в другом регионе или на другом транспондере, который не входит в вашу подписку. Всё это видно в логах OScam при включённом детальном логировании.

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

OScam на Enigma2: чаще всего /etc/tuxbox/config/oscam/, реже /usr/keys/. Там лежат oscam.conf, oscam.server, oscam.user. На чистом Linux путь задаётся при запуске через параметр -c /path/to/config. CCcam: конфиг всегда в /var/etc/CCcam.cfg — бинарник ищет именно там. Пути зависят от версии прошивки Enigma2 и конкретной сборки.

Можно ли запустить кардшаринг-сервер на обычном Linux ПК?

Да. OScam собирается под x86_64 без проблем. Для работы с физической картой нужен USB-картоприёмник (Smargo SmartReader, ReinerSCT или аналоги) — они поднимаются через PCSC или напрямую через device в oscam.server. Подходит любой мини-ПК или Raspberry Pi 4 — потребление маленькое, работает круглосуточно без проблем. Сборка: make USE_PCSC=1, устройство прописывается как device = /dev/ttyUSB0 или через PCSC как device = PCSC:0.

О статье

  • Практические советы и инструкции
  • Материалы по спутниковому ТВ
  • Поддержка и помощь 24/7