Cardsharing на OScam: настройка сервера с нуля
Если вы уже установили OScam на ресивер, роутер или Linux-приставку и теперь смотрите на пустой oscam.server, не понимая, с чего начать — этот материал для вас. Cardsharing oscam работает иначе, чем CCcam: здесь всё строится на блоках конфигурации, связях между ними и точном синтаксисе. Одна лишняя пробел — и карта не инициализируется. Разберём всё по порядку, с реальными примерами конфигов и диагностикой по логам.
Что такое cardsharing на OScam и как работает обмен ключами
OScam — это open-source softcam, написанный на C, который умеет одновременно читать физическую смарт-карту в картоприёмнике и раздавать ключи клиентам по сети. Или наоборот — получать ключи от удалённого сервера и передавать их своему DVB-адаптеру. Это ключевое отличие от более простых решений.
Принцип работы DCW и контрольных слов
Каждые ~10 секунд зашифрованный поток DVB содержит ECM-пакет (Entitlement Control Message). Смарт-карта расшифровывает его и возвращает DCW — двойное контрольное слово длиной 16 байт, которое используется для декодирования видео. Без актуального DCW картинка замерзает или рассыпается на артефакты.
При кардшаринге карта находится на одной машине, а запрос ECM приходит от другой. Сервер передаёт полученный DCW обратно клиенту по сети. Задержка этой передачи и есть то самое ECM time, которое видно в веб-интерфейсе OScam.
Роль OScam как клиента и как сервера
В oscam.server описываются ридеры — и локальные (физическая карта), и сетевые (удалённый сервер как источник ключей). В oscam.user описываются учётные записи клиентов, которые подключаются к вашему OScam за ключами. Один и тот же демон может одновременно быть клиентом вышестоящего сервера и раздавать ключи вниз.
Локальный ридер против сетевого соединения
Локальный ридер читает карту через картоприёмник: /dev/sci0 для внутреннего ридера ресивера или /dev/ttyUSB0 для USB-картоприёмника на чипах PL2303/FTDI. Сетевой ридер — это подключение к чужому серверу по протоколу newcamd, CCcam или cs378x. Настройка принципиально разная, и путать их нельзя.
Структура конфигурационных файлов OScam
Пути зависят от платформы. На Enigma2-прошивках (Dreambox, VU+, GigaBlue) конфиги обычно лежат в /etc/tuxbox/config/oscam/. На роутерах с OpenWrt или Entware — в /etc/oscam/ или /usr/local/etc/oscam/. На голом Linux — куда скажете при запуске через ключ -c /путь/к/папке. Точный путь всегда можно проверить командой ps aux | grep oscam.
oscam.conf — глобальные параметры и веб-интерфейс
Это главный конфиг. Минимальная рабочая секция [global] и [webif]:
[global]
logfile = /var/log/oscam.log
nice = -1
maxlogsize = 1000
[webif]
httpport = 8888
httpuser = admin
httppwd = mypassword
httprefresh = 10
После запуска веб-интерфейс будет доступен по адресу http://IP:8888. Смените пароль от дефолтного — это не паранойя, а базовая гигиена.
oscam.server — описание ридеров и подключений
Каждый ридер — отдельный блок [reader] с заголовком [reader]. Здесь описывается и локальная карта, и сетевые подключения. Порядок блоков не принципиален, важны параметры внутри. Синтаксис строгий: параметр = значение, без пробелов вокруг знака равно в некоторых версиях — лучше ставить пробелы везде, так надёжнее.
oscam.user — учётные записи клиентов
Каждый клиент, который будет подключаться к вашему OScam, получает блок [account] в этом файле. Здесь задаются логин, пароль, группа (group) и ограничения по CAID. Без записи в oscam.user клиент не подключится вообще.
oscam.services и oscam.dvbapi
oscam.services позволяет группировать каналы по SID и создавать профили доступа — нужно для тонкой фильтрации. oscam.dvbapi управляет взаимодействием с DVB-адаптером напрямую, актуален когда OScam и декодер на одной машине. Для базовой настройки эти файлы можно не трогать.
Настройка ридера и протоколов: newcamd, cccam, cs378x
Это самая важная часть. Большинство проблем с cardsharing oscam — именно здесь: неверный протокол, неправильный ключ или несвязанные группы.
Локальный ридер для смарт-карты (protocol = mp35/internal)
Для внутреннего картоприёмника ресивера:
[reader]
label = local_card
protocol = internal
device = /dev/sci0
detect = cd
mhz = 357
cardmhz = 357
group = 1
caid = 0500
emu = 0
audisabled = 0
Для USB-картоприёмника (PL2303, FTDI) меняем device и protocol:
[reader]
label = usb_card
protocol = mp35
device = /dev/ttyUSB0
detect = cd
mhz = 357
cardmhz = 357
group = 1
Про mhz и cardmhz: значение 357 соответствует 3.57 МГц. Некоторые карты инициализируются только на 368 (3.68 МГц). Если карта зависает при инициализации — первым делом пробуйте менять эти два параметра. Попробуйте 357, 368, 600. В логе при этом будет что-то вроде card init error или просто тишина после ATR.
Сетевой ридер по протоколу newcamd (порт 15000+)
Подключение к удалённому серверу через newcamd:
[reader]
label = newcamd_server
protocol = newcamd
device = server.example.com,15000
key = 0102030405060708091011121314
user = mylogin
password = mypassword
caid = 0500
group = 1
reconnecttimeout = 30
Ключ key — это 14 байт в hex-формате без пробелов и разделителей (28 символов). Стандартный тестовый ключ 01 02 03 ... 14 записывается как 0102030405060708091011121314. Если сервер использует другой ключ — вы получите wrong checksum в логе и нулевые DCW.
Стандартные порты: newcamd работает на 15000–15011 (часто отдельный порт под каждый CAID), иногда используют 10000 или нестандартные.
Подключение по CCcam (порт 12000) и cs378x
CCcam проще в настройке — не нужен DES-ключ, одно соединение передаёт несколько карт:
[reader]
label = cccam_server
protocol = cccam
device = server.example.com,12000
user = mylogin
password = mypassword
group = 1
cccversion = 2.2.11
ccckeepalive = 1
cs378x — протокол Camd35 по UDP, порт обычно 15000 или 10000:
[reader]
label = cs378x_server
protocol = cs378x
device = server.example.com,10000
user = mylogin
password = mypassword
group = 1
Параметры group, caid, ident и audisabled
Это та самая связь, которую все упускают. Параметр group в [reader] должен совпадать с group в [account] клиента. Если у ридера group = 1, а у клиента group = 2 — карта не отдаст ключи, и никаких ошибок в логе не будет. Просто тишина.
caid фильтрует по системе условного доступа (Irdeto = 0604, Viaccess = 0500, Nagra = 1800 и т.д.). ident фильтрует по провайдеру внутри CAID. Если не уверены — лучше не задавать, OScam сам разберётся.
audisabled = 1 отключает обновление карты (AU/EMM). Для локального ридера обычно нужно audisabled = 0, иначе карта устареет. Для сетевых ридеров AU обычно недоступен — сервер сам решает, передавать EMM или нет.
Настройка клиентов в oscam.user и веб-мониторинг
Когда ридеры настроены, нужно прописать клиентов, которые будут к вам подключаться. Или прописать хотя бы один тестовый аккаунт для проверки.
Блок [account]: user, pwd, group
[account]
user = client1
pwd = clientpass
group = 1
au = local_card
Параметр au = local_card указывает, с какого ридера клиент будет получать EMM-обновления. Здесь local_card — это label из блока [reader]. Без этого клиент получает только DCW, но не обновления карты.
Ограничение по CAID и сервисам
Хотите ограничить клиента только определённой системой:
[account]
user = client2
pwd = pass2
group = 1
caid = 0500
services = myfavoritepackage
Параметр services ссылается на профиль из oscam.services. Если файла нет — просто не задавайте этот параметр.
Просмотр статуса ридеров и ECM-времени через webif
В веб-интерфейсе на http://IP:8888 раздел Readers показывает статус каждого ридера: CARDOK (карта читается), CONNECTED (сетевой ридер подключён), или красный статус при проблемах. Зелёный ридер — хорошо. Всё остальное — повод смотреть лог.
В разделе Clients видно активные подключения и ECM time в миллисекундах. Нормальное значение для комфортного просмотра — до 300–400 мс. При 500+ начинаются фризы при переключении каналов. Я наблюдал значения 80–150 мс на хороших серверах и 800+ мс на перегруженных — разница ощутимая.
Чтение лога oscam.log и уровни отладки
Путь к логу задаётся в [global]: logfile = /var/log/oscam.log. Уровень детализации — параметр cs_log_level. Значение по умолчанию 1, максимум для отладки — 255 (но это очень много текста):
[global]
logfile = /var/log/oscam.log
cs_log_level = 255
maxlogsize = 5000
Следить за логом в реальном времени: tail -f /var/log/oscam.log. Строки с rdr — события ридера, с client — события клиентских подключений. Строки с AU — события обновления карты.
Диагностика типичных ошибок cardsharing
Вот где реально помогает опыт. Большинство гайдов останавливаются на "должно работать", не объясняя, что делать когда не работает.
Ридер в статусе CARDOK, но нет DCW
Карта инициализирована, но каналы не открываются. Первое, что проверяю — параметр group. В 80% случаев именно здесь проблема: у ридера group = 1, а у аккаунта клиента в oscam.user — group = 2 или вообще не задан. Нет совпадения группы — нет DCW.
Дальше проверяем caid и ident. Если в [reader] прописан конкретный CAID, а клиент запрашивает другой — запрос уйдёт в никуда. Смена CAID или ident провайдером вещания — ещё одна частая причина, почему вчера работало, а сегодня нет. Провайдеры периодически меняют ident, и если у вас жёсткая фильтрация — обновляйте конфиг.
Ошибка connect/handshake и закрытые порты
Проверить, доступен ли порт сервера с клиентской машины:
telnet server.example.com 15000
# или
nc -zv server.example.com 15000
Если соединение не устанавливается — порт закрыт. Причины: файрвол на сервере, NAT без проброса портов, или OScam вообще не запущен. Проброс портов на роутере — обязательно для серверного режима: TCP-порт 12000 для CCcam, 15000 для newcamd, 8888 для webif (последний лучше наружу не открывать).
За двойным NAT (роутер за роутером, типично для OpenWrt на TP-Link) нужен проброс на обоих уровнях. На OpenWrt пути конфигов могут быть в /etc/oscam/ или /opt/etc/oscam/ в зависимости от того, установлен ли OScam через opkg или Entware. Права на файлы конфигов должны быть 644, на папку — 755.
Неверный DES-ключ newcamd (14 байт)
В логе появляется что-то вроде: wrong checksum, expected XX got YY. Причина однозначная — ключ key в блоке [reader] не совпадает с ключом на сервере. Ключ должен быть ровно 28 hex-символов (14 байт). Проверьте: нет ли лишних пробелов, нет ли переноса строки, все ли символы в нижнем или верхнем регистре (OScam не чувствителен к регистру, но лучше унифицировать).
Конфликт CAID и проблемы с AU/EMM
Если у вас несколько ридеров отдают один и тот же CAID — OScam будет опрашивать их в порядке приоритета. Параметр lb_weight задаёт вес ридера при балансировке нагрузки, fallback = 1 делает ридер резервным — он используется только когда основной недоступен. Это работает так: если у ридера A и ридера B одинаковый group и CAID, но у B стоит fallback = 1, то B включится автоматически при падении A.
Проблема с AU: если для локального ридера audisabled = 1 — EMM-пакеты не обрабатываются и карта не обновляется. Карта с истёкшим сроком или невалидными entitlements перестаёт отдавать DCW. В логе это видно по строкам с EMM.
Высокое ECM time и фризы изображения
ECM time выше 500 мс — уже повод для беспокойства. Причины: большой пинг до сервера, перегруженный сервер, нестабильный канал связи. Что делать: добавить второй ридер в ту же group как резерв, проверить загрузку процессора на машине с OScam, убедиться что на роутере нет QoS, режущего этот трафик.
Пинг напрямую определяет базовое ECM time. Если сервер находится в 200 мс пинга — меньше 400 мс вы не получите даже при идеальных условиях. Географическая близость сервера важна не меньше, чем его технические характеристики.
Как выбрать источник ключей: критерии без привязки к именам
Здесь расскажу про методологию оценки, без упоминания конкретных сервисов — их оценивать вам самим.
Стабильность и аптайм сервера
Реальный аптайм виден по статистике подключений в oscam webif — если ридер регулярно переподключается (смотрите столбец reconnects), это индикатор нестабильного сервера. Хороший сервер — это минимум реконнектов за сутки. Заявленные "99.9% uptime" без возможности проверки — маркетинг.
Низкое ECM time и географическая близость
Попросите тестовую линию перед покупкой и смотрите реальное ECM time в webif, а не слова провайдера. Для европейских пакетов сервер должен быть в Европе. Сервер в Азии при просмотре европейских каналов добавит 100–300 мс только на сетевую задержку.
Поддержка нужных CAID и пакетов
Убедитесь, что сервер реально отдаёт нужный вам CAID. В oscam webif в статусе ридера после подключения видно, какие CAID доступны. Если нужного CAID нет в списке — канал не откроется, и это не проблема вашей конфигурации.
Прозрачность условий и техподдержка
Адекватная техподдержка — это ответы по существу с запросом oscam.log, а не просто "перезагрузите ресивер". Хороший признак: провайдер может объяснить, какой протокол использует, на каком порту, какой CAID отдаёт. Если на эти вопросы нет ответов — ищите другой источник.
Где в OScam лежат конфигурационные файлы?
Зависит от платформы. На Enigma2-прошивках (Dreambox, VU+) — обычно /etc/tuxbox/config/oscam/. На роутерах с OpenWrt или Entware — /etc/oscam/, /var/etc/oscam/ или /usr/local/etc/oscam/. Точный путь задаётся при запуске через ключ -c: oscam -c /etc/oscam. Проверить активный путь: ps aux | grep oscam.
Чем отличается протокол newcamd от CCcam в OScam?
newcamd требует 14-байтовый DES-ключ (28 hex-символов в параметре key) и традиционно использует отдельный порт под каждый CAID (15000–15011). CCcam на порту 12000 проще в настройке — не нужен DES-ключ, одно соединение может передавать несколько карт. Оба настраиваются в блоке [reader] в oscam.server, разница только в параметрах.
Почему ридер показывает CARDOK, но каналы не открываются?
Карта инициализирована, но DCW не отдаётся. Первое что проверять — совпадение параметра group между [reader] в oscam.server и [account] в oscam.user. Несовпадение группы — самая частая причина. Дальше: правильный ли CAID у ридера, есть ли нужная подписка на карте, не задан ли ident фильтр на несуществующего провайдера.
Какое ECM time считается нормальным?
До 300–400 мс — комфортный просмотр. При 500–600 мс уже могут быть фризы при переключении каналов. Выше 800 мс — проблема, которую нужно решать. Значение зависит от пинга до сервера, загрузки карты и стабильности соединения. Смотрите ECM time в разделе Clients веб-интерфейса OScam.
Как проверить, открыт ли сетевой порт ридера?
С клиентской машины: telnet host port или nc -zv host port. Если соединение не устанавливается — проверьте файрвол на сервере, проброс портов (NAT) на роутере, и убедитесь что OScam реально запущен и слушает нужный порт. На роутере за NAT для работы серверного режима необходимо пробрасывать TCP-порты наружу.
Что делать, если карта не обновляется (AU/EMM)?
Проверьте что у локального ридера в oscam.server не стоит audisabled = 1. В блоке [account] клиента должен быть параметр au = label_ридера — имя метки вашего локального ридера. Убедитесь что EMM-пакеты вообще приходят (видно в логе по строкам AU). Для сетевых ридеров AU обычно недоступен — сервер сам управляет обновлением своей карты.
Практические советы для стабильного просмотра
Даже самая стабильная линия 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 или внешние мониторы.