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.
Practical checklist for smooth viewing
Even the best CCCam or OSCam line needs two or three simple preparations. Update your receiver firmware, reset the ECM cache once a week and keep 15–20% free space on the USB stick or internal flash so that the reader can store keys without delays.
When tuning a dish, aim for MER/BER reserve: a two‑degree offset or a loose F‑connector often causes the “freezing” that users blame on cardsharing. Keep a short patch cord to test alternative routers, and save two profiles in OSCam — one for TCP, one for UDP — so you can switch instantly if your ISP starts filtering a protocol.
Utgard.tv monitors each hub 24/7, but you can speed up diagnostics by keeping a short log of your receiver actions. Note the time when you changed the channel, which CAID was active and whether you used Wi‑Fi or Ethernet. This tiny “journal” helps engineers reproduce your environment in the lab and return with a solution in minutes instead of hours.
- Keep two line slots enabled: if the first server hits a maintenance window, the second one instantly takes over without re-entering credentials.
- Run a monthly speed and latency test. Stable 1–2 Mbps with ping <80 ms is enough for SD/HD, but if jitter exceeds 20 ms, switch the router to wired mode.
- Save the Utgard.tv status page and Telegram bot @utgard_tv_bot to bookmarks — they publish maintenance notices before SEMrush or uptime monitors raise alerts.