OScam: установка, настройка и запуск сервера
Если вы уже работали с CCcam и устали от чёрного ящика, который непонятно что делает и почему падает — oscam это то, на что стоит перейти. Открытый исходный код, модульная конфигурация, читаемые логи. Здесь разберём всё по порядку: от структуры конфигов до диагностики конкретных ошибок.
Что такое OScam и чем он отличается от CCcam
OScam как open-source эмулятор и прокси
OScam (Open Source Conditional Access Module) — это программный клиент, сервер и прокси для работы с системами условного доступа (CAS). Один процесс может одновременно принимать карточки от ридеров, раздавать ключи клиентам по разным протоколам и проксировать запросы дальше по цепочке. Никакого отдельного "клиентского" и "серверного" варианта — один бинарник, всё управляется конфигами.
Исходники доступны на официальном SVN-репозитории (streamboard.de/svn/oscam/). Это означает, что под любое железо — Enigma2-ресивер, OpenWRT-роутер, обычный Debian-сервер — можно собрать бинарник самостоятельно. Никаких скомпилированных бинарников с неизвестным содержимым.
Ключевые отличия от CCcam: открытый код, модульность, логирование
CCcam — закрытый бинарник, разработка которого фактически остановилась несколько лет назад. Один протокол, один конфиг-файл, минимальные логи. Если что-то сломалось — смотришь в пустоту и гадаешь.
OScam устроен иначе. Конфигурация разбита на отдельные файлы по назначению: глобальные параметры, ридеры, пользователи, фильтры каналов. Логирование настраивается по маскам с детализацией до уровня отдельной подсистемы. В веб-интерфейсе видно состояние каждого ридера, время ответа ECM, активные сессии клиентов — в реальном времени.
Протоколов несколько: newcamd, cccam, camd35, cs378x, gbox. Oscam понимает все из них одновременно — можно принимать карточки по одному протоколу и раздавать по другому.
Когда OScam — правильный выбор, а когда избыточен
Если нужен простой клиент на один источник и вас устраивает CCcam — смысла мигрировать нет. OScam требует ручной настройки каждого файла, понимания CAID, SID, протоколов и прав доступа. Это не сложно, но это работа.
Но если у вас несколько источников с разными протоколами, несколько пользователей которым нужно разграничить доступ к каналам, или просто надоело гадать почему периодически фризит — переход оправдан. Прозрачность oscam в диагностике не сравнится ни с чем.
Структура файлов конфигурации OScam
Все конфиги хранятся в одном каталоге. На ресиверах это обычно /var/etc/ или /etc/tuxbox/config/. На Linux-сервере — ~/.oscam/ по умолчанию, либо любой каталог, заданный ключом -c при запуске. Путь лучше задавать явно: oscam -c /etc/oscam/.
oscam.conf — глобальные параметры и веб-интерфейс
Главный файл конфигурации. Здесь задаются глобальные параметры, секции для каждого протокола-сервера и веб-интерфейс. Минимальный рабочий вариант:
[global]
logfile = /var/log/oscam/oscam.log
maxlogsize = 512
preferlocalcards = 1
saveinithistory = 1
[webif]
httpport = 8888
httpuser = admin
httppwd = yourpassword
httprefresh = 10
Секция [webif] открывает HTTP-интерфейс. Порт 8888 — типичный вариант, встречается также 16002. Доступ без пароля — это дыра: любой на том же сегменте сети видит все ваши ридеры, логины пользователей и может перезапустить процесс. Закрывайте паролем всегда, и никогда не открывайте этот порт в интернет напрямую.
oscam.server — описание ридеров и источников
Каждый ридер — отдельная секция [reader]. Это может быть физическая смарт-карта в USB/встроенном ридере, или сетевой источник по протоколу newcamd/cccam:
[reader]
label = my_newcamd_source
protocol = newcamd
device = 192.168.1.100,15000
key = 0102030405060708091011121314
user = clientlogin
password = clientpass
caid = 0500
group = 1
Поле caid — идентификатор системы условного доступа. 0500 — Viaccess, 0604 — Irdeto, 0B00 — Conax, 0D00 — Cryptoworks. Указывайте только те CAID, которые реально нужны — лишние создают ненужный трафик запросов.
oscam.user — учётные записи клиентов
Каждый клиент, подключающийся к вашему серверу, описывается секцией [account]:
[account]
user = stb_livingroom
pwd = password123
group = 1
caid = 0500
au = 1
Параметр au разрешает обновление авторизации (AU). Без него карточки требующие периодического обновления ключей перестанут работать. Поле group связывает пользователя с ридерами — клиент видит только ридеры из своей группы.
oscam.services и oscam.dvbapi — фильтры каналов и DVB
В oscam.services описываются именованные группы каналов по SID и CAID. В oscam.user и oscam.server можно разрешать или блокировать доступ к конкретным сервисам — удобно, когда нужно пустить одного клиента только на спортивный пакет.
Файл oscam.dvbapi нужен только если OScam работает локально с DVB-тюнером через интерфейс dvbapi. На чистом сервере без тюнера он не нужен.
Установка и запуск сервера OScam
Сборка из исходников и готовые бинарники под нужную архитектуру
Это важный момент, который часто игнорируют. Oscam собирается под конкретную архитектуру: ARM (большинство современных ресиверов), MIPS (старые Dreambox), x86/x86_64 (обычный сервер). Взять бинарник "для Dreambox" и запустить на Vu+ Solo — не получится, или получится, но молча упадёт без каких-либо ошибок.
Сборка под x86 Linux:
svn checkout http://streamboard.de/svn/oscam/trunk oscam-svn
cd oscam-svn
make USE_LIBCRYPTO=1 HAVE_DVD=0
Для кросс-компиляции под ARM нужен соответствующий toolchain. Обычно он уже есть в SDK вашего ресивера (например, в составе Enigma2 OE-core). Указывается через переменную CROSS:
make CROSS=/opt/toolchain/bin/arm-linux-gnueabi-
Готовые бинарники для популярных платформ публикуются на форуме streamboard.de. Но если берёте готовый — проверяйте дату сборки и версию SVN-ревизии. Билд 2023 года пропустит несколько важных патчей.
Отдельная история — ресиверы с маленькой flash-памятью (8-16 МБ). Бинарник OScam весит от 700 КБ до 2 МБ в зависимости от включённых модулей. Если места не хватает, конфиги и лог-файлы выносятся на USB-накопитель: монтируете его в /mnt/usb/ и запускаете oscam с -c /mnt/usb/oscam/.
Первый запуск и параметры командной строки
Базовый запуск:
oscam -b -c /etc/oscam/ -r 2
Параметры: -b запускает как демон (фоновый процесс), -c задаёт каталог с конфигами, -r 2 включает автоперезапуск при аварийном завершении (уровень 2 — перезапуск с перечитыванием конфигов). Без -r при падении процесс просто исчезнет.
Проверка что процесс запустился:
ps aux | grep oscam
Веб-интерфейс по адресу http://localhost:8888 должен открыться через несколько секунд после старта — время зависит от количества ридеров и скорости их инициализации.
Автозапуск через systemd или init-скрипт
На любом современном Linux с systemd создаём unit-файл /etc/systemd/system/oscam.service:
[Unit]
Description=OScam Cardserver
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/oscam -b -c /etc/oscam/
WorkingDirectory=/etc/oscam/
Restart=on-failure
RestartSec=5
User=oscam
[Install]
WantedBy=multi-user.target
Создаём пользователя, включаем и стартуем:
useradd -r -s /sbin/nologin oscam
systemctl daemon-reload
systemctl enable oscam
systemctl start oscam
Параметр Restart=on-failure с RestartSec=5 делает то же что -r, но на уровне ОС — надёжнее. Логи смотреть через journalctl -u oscam -f.
На старых ресиверах без systemd создаётся init-скрипт в /etc/init.d/. Структура зависит от дистрибутива (OpenPLi, BlackHole, OpenATV), но суть одна: start-stop-daemon --start --exec /usr/bin/oscam -- -b -c /var/etc/.
Протоколы и сетевые порты в OScam
Протокол newcamd и его настройка
Newcamd — TCP-протокол с шифрованием, один порт на один CAID. Если у вас три CAID — нужно три порта. В oscam.conf секция [newcamd]:
[newcamd]
key = 0102030405060708091011121314
port = 15000@0500:000000
port = 15001@0604:000000
Формат: порт@CAID:SID-фильтр. Нули в SID-фильтре означают "все каналы".
14-байтный ключ шифрования одинаковый у сервера и клиента. Стандартный тестовый ключ из всех нулей или 0102...0E использовать в продакшне не стоит — смените на что-то уникальное.
Протокол cccam внутри OScam как клиент и сервер
OScam может выступать как CCcam-клиент (подключаться к CCcam-серверу) и как CCcam-сервер (принимать клиентов, которые используют CCcam). Для приёма CCcam-клиентов в oscam.conf:
[cccam]
port = 12000
version = 2.3.0
build = 11700
reshare = 1
Порт 12000 — стандарт де-факто для CCcam, но можно любой выше 1024. Если на том же хосте работает настоящий CCcam-сервер — конфликт неизбежен, смените порт в одном из них. Кстати, держать одновременно старый CCcam и oscam на одном сервере — частая ситуация при миграции. Просто не давайте им одинаковые порты.
Выбор и проброс портов на роутере
Для приёма внешних клиентов нужен проброс портов: TCP-порты newcamd (15000+) и/или cccam (12000) с роутера на сервер. Порт веб-интерфейса (8888 или 16002) пробрасывать наружу — нет, никогда.
Если сервер за NAT с динамическим IP — ридеры удалённых клиентов будут периодически терять соединение при смене адреса. Решается через DDNS-сервис: DynDNS, No-IP или любой аналог. В конфиге ридера у клиента прописывается не IP, а hostname. Но тут важно понимать: при смене IP у сервера есть пауза до обновления DNS-записи — обычно от нескольких секунд до пары минут. В это время ридер покажет ERROR.
Диагностика и решение типичных ошибок
Чтение логов: уровни debug и что они показывают
Уровень логирования задаётся параметром debuglevel в секции [global]. Значение — битовая маска от 0 до 65535, где каждый бит включает логирование определённой подсистемы:
- 1 — общая отладка
- 2 — клиентские соединения
- 4 — ридеры
- 8 — ECM-запросы
- 16 — EMM (обновление авторизации)
- 256 — трафик сети
Для диагностики проблем с каналами достаточно значения debuglevel = 64 (ECM + ридеры). Полный debug 65535 выдаёт огромный объём — на слабом железе это ощутимо нагружает систему и забивает flash-память, если лог пишется туда.
Временную метку в логе надо уметь доверять. Если часовой пояс на ресивере сбит (а это случается после обновления прошивки или разряда батарейки RTC) — все записи будут с неправильным временем, и сопоставить события с реальными действиями невозможно. Проверяйте: date на ресивере должен совпадать с реальным временем.
Ридер не подключается или статус CONNECTED но нет ECM
Статус OFF означает что oscam вообще не пытается подключиться — скорее всего, ошибка в oscam.server: неправильный IP, порт или протокол. Статус ERROR — подключение пробовалось, но получен отказ или таймаут.
Ситуация "CONNECTED но каналы не открываются" — отдельная история. Чаще всего причины:
- В
oscam.userу клиента не прописан нужный CAID или прописан неверный - В
oscam.servicesесть фильтр, который блокирует запрашиваемый SID - Источник подключён, но этот конкретный канал не входит в его пакет
- Несовпадение группы ридера и группы пользователя
Алгоритм проверки: смотрим лог на строку "ECM rejected" или "no card found for". Если есть "ECM rejected" — проблема в правах. Если вообще нет записи об ECM-запросе при переключении канала — проблема раньше, на уровне DVB-интерфейса или настройки клиента.
Долгое время ответа ECM и фризы изображения
ECM time — время от запроса ключа до его получения, измеряется в миллисекундах. Смотреть в реальном времени можно в веб-интерфейсе, раздел ECM history или через файл ecm.info.
Нормальные значения: 100-400 мс для прямого подключения к карте, 200-800 мс для сетевого источника. Значения выше 1000 мс начинают давать заметные фризы. Выше 1500 мс — картинка будет "сыпаться" на каждом refresh-интервале.
Причины высокого ECM time: перегруженный источник (слишком много клиентов на один кард-сервер), длинная цепочка прокси (каждый промежуточный сервер добавляет латентность), медленная сеть между вами и источником.
Как выбрать источник для OScam и не ошибиться
Технические критерии оценки источника
Первое что смотреть — поддерживаемые протоколы. OScam умеет много, но источник может поддерживать только один. Спрашивайте заранее: newcamd или cccam, и на каком порту.
Второе — заявленные CAID. Источник, который "поддерживает всё", при реальной проверке часто не открывает половину пакетов. Проверяйте конкретные CAID которые вам нужны — через oscam видно что именно отвечает на ECM-запросы.
Третье — информация об аптайме и перезапусках. Источник который перезапускается раз в сутки для обновления ключей — норма. Источник с несколькими падениями в неделю — уже проблема.
Признаки нестабильного и перепроданного источника
Перепроданный источник — это когда на один физический кард-сервер подключено слишком много клиентов. Признаки в oscam: ECM time нестабильно и скачет от 200 мс до 2000+ мс в течение дня, периодические "ECM timeout" без видимой причины, ридер уходит в ERROR и возвращается сам.
Если фризы появляются в прайм-тайм (19:00-23:00) и пропадают ночью — почти гарантированно перепроданный сервер. Нагрузка коррелирует с тем, сколько людей одновременно смотрит телевизор.
Другой признак проблем — частые дисконнекты с немедленным переподключением. В логе это выглядит как циклы CONNECTED → ERROR → CONNECTED с интервалом в несколько секунд. Причина обычно в нестабильной сети у источника или его попытках ротировать клиентов при перегрузке.
Тестовый период и проверка перед постоянным использованием
Нормальная практика — тестовый период 24-48 часов перед тем как делать выводы. За это время нужно захватить хотя бы один прайм-тайм период и одну ночь для сравнения.
Конкретный чек-лист проверки через веб-интерфейс oscam:
- Среднее ECM time за 24 часа — должно быть стабильным, не прыгать в 3-5 раз
- Количество "ECM timeout" в логе — единичные допустимы, систематические нет
- Время непрерывной работы ридера (uptime) — разрывы должны быть редкими
- Все нужные каналы открываются — проверяйте каждый CAID отдельно
Если источник прошёл 48 часов без существенных проблем — можно считать его рабочим вариантом. Если нет — ищите другой, не тратьте время на "оно само наладится".
В чём разница между OScam и CCcam?
OScam — открытый проект с исходным кодом, модульной конфигурацией и поддержкой множества протоколов (newcamd, cccam, camd35, cs378x). CCcam — закрытый бинарник с одним протоколом, разработка которого давно остановилась. OScam гибче и прозрачнее в диагностике, но требует ручной настройки нескольких конфиг-файлов и понимания CAID и групп доступа.
Где находятся файлы конфигурации OScam?
На ресиверах обычно /var/etc/ или /etc/tuxbox/config/. На Linux-сервере по умолчанию ~/.oscam/. Каталог можно задать явно при запуске: oscam -c /etc/oscam/. Все конфиги (oscam.conf, oscam.server, oscam.user) должны лежать в одном каталоге.
Какой порт использует веб-интерфейс OScam?
Порт задаётся в секции [webif] файла oscam.conf. Типичные значения — 8888 или 16002. Доступ обязательно защищать логином и паролем через параметры httpuser и httppwd. Открывать этот порт в интернет нельзя — только в локальной сети или через VPN/SSH-туннель.
Почему ридер показывает CONNECTED, но каналы не открываются?
Чаще всего — несоответствие прав. Проверяйте: в oscam.user у клиента должен быть прописан нужный CAID и совпадающая группа с ридером. В oscam.services не должно быть фильтра, блокирующего запрашиваемый SID. Смотрите лог на строки "ECM rejected" — они точно указывают на причину.
Что означает высокое время ответа ECM?
ECM time — задержка между запросом ключа дешифрования и его получением. Значения 100-400 мс — норма для прямого подключения к карте. Выше 1000-1500 мс начинаются видимые фризы. Причины: перегруженный источник, длинная цепочка прокси между вами и картой, или медленное сетевое соединение с источником.
Можно ли запустить OScam на обычном Linux-сервере, а не на ресивере?
Да. OScam собирается под x86/x86_64 и работает на любом Linux как полноценный кард-сервер или прокси. Режим dvbapi нужен только при наличии локального DVB-тюнера — без тюнера эту секцию просто не подключают. Типичный сценарий: VPS как сервер принимает несколько источников и раздаёт клиентам по newcamd или cccam.
Практические советы для стабильного просмотра
Даже самая стабильная линия 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 или внешние мониторы.