OScam server: настройка сервера кардшаринга с нуля

Если вы добрались до этой страницы, значит уже знаете, что такое кардшаринг и зачем нужен oscam server. Вопрос в другом — почему ридер висит в CONNECTING, каналы не открываются, а в логе творится что-то непонятное. Именно об этом и поговорим: полная практическая настройка с реальными примерами конфигов, без воды.

Что такое OScam server и из чего он состоит

OScam — это ECM/EMM прокси с открытым исходным кодом. Он принимает запросы на расшифровку от клиентов (ресиверов, Kodi-плагинов, медиаплееров), перенаправляет их к источникам карт — ридерам — и возвращает CW-ключи. Один и тот же процесс OScam может одновременно быть сервером для одних клиентов и клиентом для другого сервера.

Это принципиальное отличие от CCcam: в OScam роли сервера и клиента не разделены на разные приложения. Один процесс, несколько конфигурационных файлов — и всё работает.

Архитектура: сервер, ридеры и клиенты

Схема простая. Ридер — это источник карты: физическая смарт-карта в USB-ридере или подключение к удалённому серверу по CCcam/newcamd. Клиент — это аккаунт в oscam.user, который подключается к вашему oscam server по одному из поддерживаемых протоколов. Связь между ридерами и клиентами строится через параметр group — об этом подробно в разделах ниже.

Ключевые конфигурационные файлы и их пути

Конфигурация OScam разбита на несколько файлов, и каждый отвечает за своё:

  • oscam.conf — глобальные настройки, протоколы, веб-интерфейс
  • oscam.server — ридеры (источники карт)
  • oscam.user — учётные записи клиентов
  • oscam.services — фильтрация по SID (опционально)
  • oscam.dvbapi — настройка локального декодирования на ресивере

Где лежат конфиги в разных сборках

На Enigma2-ресиверах (VU+, Dreambox, Zgemma) конфиги обычно лежат в /etc/tuxbox/config/oscam/ или /usr/keys/ — зависит от сборки образа. На обычном Linux-сервере путь задаётся при запуске через ключ -c:

oscam -b -c /etc/oscam/

Некоторые сборки для OpenWRT или Debian кладут конфиги в /var/etc/oscam/. Смотрите init-скрипт — там всё написано.

Настройка oscam.conf: базовая конфигурация сервера

Это главный файл. Здесь определяется, на каких портах слушать клиентов, куда писать логи и как работает веб-интерфейс.

Секция [global] и параметры nice, logfile, WaitForCards

[global]
logfile                = /var/log/oscam.log
maxlogsize             = 500
nice                   = -1
WaitForCards           = 1
preferlocalcards       = 1
saveinithistory        = 1

WaitForCards = 1 держит OScam в режиме ожидания при старте, пока не инициализируются все ридеры. Полезно, если карта появляется с задержкой. preferlocalcards = 1 заставляет сначала обращаться к локальным картам — разумное поведение, если они есть.

Секция [cs378x] и [newcamd]: открытие портов для клиентов

cs378x — это протокол Camd 3.5x, который используют многие клиенты. newcamd — более старый, но широко поддерживаемый. Оба открываются в oscam.conf:

[cs378x]
port                   = 12000

[newcamd]
key                    = 0102030405060708091011121314
port                   = 15000@1830:000000

В port = 15000@1830:000000 цифра 1830 — это CAID (в данном случае условный пример Nagravision), а 000000 — провайдер. Если хотите открыть порт для всех CAID без фильтрации, пишите просто port = 15000.

Ключ newcamd (key) должен совпадать на сервере и у всех клиентов этого порта. Это 14 байт в hex. Менять можно на любую последовательность — главное одинаковую с обеих сторон.

Веб-интерфейс [webif] на порту 8888 и доступ из локальной сети

[webif]
httpport               = 8888
httpuser               = admin
httppwd                = mysecretpass
httprefresh            = 10
httphideidleclients    = 1
httpallowed            = 127.0.0.1,192.168.1.0-192.168.1.255

Параметр httpallowed ограничивает доступ к веб-интерфейсу только с локальной сети. Не выставляйте webif наружу без VPN — это лишняя поверхность атаки. Порт 8888 иногда занят на ресиверах (например, его используют плагины управления). Если не открывается — проверьте netstat -tlnp | grep 8888.

Секция [dvbapi] для локального раскодирования каналов

[dvbapi]
enabled                = 1
user                   = dvbapi
pmt_mode               = 0
request_mode           = 0
boxtype                = dreambox

Секция [dvbapi] нужна только если oscam server запущен прямо на ресивере и сам декодирует каналы через DVB-адаптер. Если OScam работает на отдельном сервере и раздаёт CW по сети клиентам — эту секцию вообще не трогайте.

Настройка oscam.server: подключение ридеров и источников карт

Файл oscam.server — сердце конфигурации. Здесь описываются все источники карт: физические ридеры и удалённые подключения.

Локальный ридер для физической смарт-карты (protocol = internal/smartreader)

[reader]
label                  = local_card
protocol               = internal
device                 = /dev/ttyUSB0
detect                 = cd
caid                   = 1830
group                  = 1
audisabled             = 0
log                    = 1

Проблема с /dev/ttyUSB0: после перезагрузки имя устройства может измениться на ttyUSB1 или ttyACM0, если подключены другие USB-устройства. Надёжнее привязать по udev-правилам через серийный номер USB-ридера. Или использовать /dev/serial/by-id/... — там имена стабильные.

Права доступа — частая причина проблем. Пользователь, под которым запущен OScam, должен иметь доступ к устройству:

chmod 666 /dev/ttyUSB0
# или добавить пользователя в группу dialout:
usermod -aG dialout oscam

Подключение к другому серверу по протоколу CCcam (reader cccam)

[reader]
label                  = remote_cccam
protocol               = cccam
device                 = vpn-server.local,12000
user                   = myuser
password               = mypassword
cccversion             = 2.0.11
cccmaxhops             = 2
ccckeepalive           = 1
group                  = 1
caid                   = 0604,1830
audisabled             = 1

На параметр cccversion стоит обратить внимание. Если сервер работает на CCcam 2.3.0, а вы указали 2.0.11 — могут быть проблемы с хэндшейком. Некоторые серверы ожидают конкретную версию. Пробуйте 2.0.11, 2.1.4, 2.3.0 — в логе увидите, что происходит.

audisabled = 1 — обязательно для удалённых ридеров чужих карт. AU (Auto Update) нужен только для локальной карты. На чужом ридере его включать бессмысленно и потенциально вредно.

Подключение по newcamd к удалённой карте

[reader]
label                  = remote_newcamd
protocol               = newcamd
device                 = remote-host.example,15000
user                   = clientuser
password               = clientpass
key                    = 0102030405060708091011121314
caid                   = 0604
group                  = 2
audisabled             = 1

Ключ newcamd здесь должен совпадать с тем, что выставлен на стороне удалённого oscam server в его oscam.conf. Если ключи не совпадают — ридер никогда не войдёт в CONNECTED, и в логе будет видна ошибка аутентификации.

Параметры group, caid, ident и audisabled

Параметр group — это центральный механизм разграничения доступа в OScam, и его часто неправильно понимают. Группа — просто число от 1 до 64. Ридер принадлежит одной или нескольким группам. Клиент (аккаунт) тоже имеет список групп. Клиент видит только те ридеры, чьи группы пересекаются с его собственными.

Пример: ридер с group = 1 будет доступен клиентам с group = 1. Ридер с group = 1,2 доступен клиентам, у которых есть хотя бы одна из этих групп.

Параметр caid ограничивает, какие системы условного доступа обрабатывает ридер. ident — фильтрует по конкретным провайдерам внутри CAID. Если ident не указан, ридер обслуживает все провайдеры данного CAID.

Несколько ридеров с одинаковым CAID работают по схеме приоритет/fallback. OScam пробует их по порядку и использует тот, что ответил первым (или у которого ниже задержка). Можно явно задать приоритет через lb_weight или настройками load balancing.

Настройка oscam.user: создание учётных записей клиентов

Каждый клиент, подключающийся к вашему oscam server, должен иметь запись в oscam.user.

Базовый блок [account] с user и pwd

[account]
user                   = client1
pwd                    = securepass123
group                  = 1
caid                   = 1830,0604
au                     = 1
betatunnel             = 1833.FFFF:1830

Параметр betatunnel полезен в специфических случаях: когда клиент запрашивает CAID 1833 (Nagravision Videoguard), а у вас есть карта с CAID 1830. OScam автоматически транслирует запрос. Без этого клиент просто не получит ответ.

Привязка к ридерам через group

Клиент с group = 1 будет иметь доступ только к ридерам группы 1. Хотите дать клиенту доступ к нескольким ридерам — добавьте их в одну группу или перечислите группы через запятую: group = 1,2.

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

Ограничения: caid, ident, betatunnel, sleep

[account]
user                   = client2
pwd                    = anotherpass
group                  = 1
caid                   = 0604
ident                  = 0604:000000,000010
sleep                  = 30
disabled               = 0

Параметр sleep задаёт время в минутах, после которого неактивный аккаунт автоматически блокируется. Полезно для ресурсосбережения. disabled = 1 позволяет временно отключить аккаунт, не удаляя его из конфига.

Защита от перегрузки: cccmaxhops, cccreshare, numusers

[account]
user                   = client3
pwd                    = pass3
group                  = 1
cccmaxhops             = 1
cccreshare             = 0
numusers               = 1

cccreshare = 0 запрещает клиенту пересылать карты дальше. Без этого параметра клиент теоретически может создать собственный сервер на базе вашей карты — нехорошо. cccmaxhops = 1 ограничивает глубину цепочки. numusers = 1 разрешает только одно одновременное подключение с этим аккаунтом.

Проверка работы и чтение логов

Лог OScam — главный инструмент диагностики. Научившись его читать, вы будете закрывать 80% проблем за пару минут.

Анализ oscam.log: статусы ECM (found/not found/timeout)

Типичная строка лога ECM выглядит так:

2026/01/15 14:23:41 c client1 (192.168.1.10) ECM SID 0x1234 CAID 1830 Prov 000000 found (150 ms) by local_card

Здесь: client1 — кто запросил, ECM SID 0x1234 — конкретный канал, CAID 1830 — система условного доступа, found — запрос успешно разрешён, 150 ms — время ответа, local_card — какой ридер ответил.

Если вместо found видите not found — ни один ридер не смог расшифровать. Если timeout — ридер не ответил вовремя. Оба случая означают, что канал не откроется.

Веб-интерфейс: вкладки Readers, Users, Status

Открываете http://192.168.1.1:8888 в браузере. Во вкладке Readers смотрите колонку Status: CONNECTED — всё хорошо, CONNECTING — что-то не так, DISABLED — ридер выключен. Во вкладке Users видите активные сессии, время последнего ECM и среднее время ответа.

Диагностика по времени ответа ECM (ms) и hops

Нормальное время ответа ECM — до 300-500 ms. Если видите постоянно 800+ ms — каналы будут фризить или вообще не откроются. Локальная карта обычно отвечает за 50-150 ms. Ридер через удалённый сервер — 100-400 ms в зависимости от расстояния и загрузки.

Hops — количество промежуточных серверов в цепочке. Hop 0 — локальная карта. Hop 1 — первый удалённый сервер. Чем больше хопов, тем выше задержка. Три и более хопов — уже риск нестабильной работы.

Команды запуска и отладки (oscam -b -r 2, debug level)

# Запуск в режиме демона:
oscam -b -c /etc/oscam/

# Запуск с повышенным уровнем отладки (в лог пишется больше):
oscam -b -c /etc/oscam/ -r 2

# Просмотр лога в реальном времени:
tail -f /var/log/oscam.log

Уровень -r 2 заставляет писать в лог детальные отладочные сообщения. Удобно при первоначальной настройке. На постоянной основе не включайте — лог растёт очень быстро.

Типичные проблемы и их решения

Ридер в статусе CONNECTING и не переходит в CONNECTED

Это самая распространённая проблема. Причины по убыванию вероятности:

  • Неверный логин или пароль — самое частое. Проверьте трижды.
  • Порт закрыт или не проброшен на роутере. Проверяется так: telnet remote-host 12000. Если соединение не устанавливается — порт недоступен.
  • Несовпадение протокола. Вы пишете protocol = cccam, а сервер слушает только newcamd.
  • Несовпадение версии CCcam (cccversion). Попробуйте 2.0.11, затем 2.3.0.
  • IP забанен на стороне сервера.

ECM найден, но каналы не открываются (freeze/чёрный экран)

Статус found в логе есть, но картинки нет — значит CW-ключ дошёл до клиента, но что-то не так с его применением. Проверьте:

  • Настройки dvbapi на стороне ресивера — правильный ли boxtype.
  • CAID/ident — клиент может запрашивать CAID 1833, а у вас только 1830. Настройте betatunnel.
  • Время ответа — если ECM time постоянно 600+ ms, картинка будет фризить даже при статусе found.

Ошибки прав доступа к /dev/ttyUSB0 и конфигам

Две типичные ошибки в логе: ERROR: Cannot open device /dev/ttyUSB0 и ERROR: Cannot open config file. Первая лечится правами на устройство:

ls -la /dev/ttyUSB0
# Если owner не совпадает с пользователем oscam:
chown oscam:dialout /dev/ttyUSB0
chmod 660 /dev/ttyUSB0

Для конфигов: директория и файлы должны быть читаемы пользователем, под которым запущен OScam. chown -R oscam:oscam /etc/oscam/ решает большинство случаев.

Конфликт портов и блокировка фаерволом

Проверить, что порты реально открыты:

netstat -tlnp | grep oscam
# или
ss -tlnp | grep 12000

Если порт не слушается — OScam не запустился нормально или секция в конфиге написана с ошибкой. Если порт слушается, но снаружи недоступен — проблема в фаерволе:

iptables -A INPUT -p tcp --dport 12000 -j ACCEPT
iptables -A INPUT -p tcp --dport 15000 -j ACCEPT

На роутерах с NAT нужно также пробросить порты на IP-адрес вашего oscam server.

Как выбрать источник карт (провайдера): критерии без названий

На что смотреть при выборе источника карт — без конкретных имён, только технические критерии.

Стабильность аптайма и время ответа ECM

Попросите тестовый доступ и смотрите не только на то, открываются ли каналы сейчас, но и на ECM time в динамике. Нормальный показатель — стабильно ниже 400 ms на протяжении нескольких часов. Скачки от 50 до 1200 ms говорят о перегрузке сервера или нестабильном интернет-каналу между вами.

Поддерживаемые caid и количество локальных карт

Спросите прямо: карты локальные (hop 0-1) или это решаринг чужого решаринга? Лог и веб-интерфейс покажут: в колонке Hops значения 0-1 — хорошо, 3-4 и выше — сигнал о длинной цепочке. Уточните, какие именно CAID поддерживаются и есть ли фильтрация по провайдерам.

Ограничения по hops и reshare

Хороший сервис явно говорит: reshare не разрешён или разрешён с ограничениями. Если вам на тестовом доступе видны hops 4+ — ищите дальше. Цепочка из четырёх перепродавцов карты не даёт стабильного просмотра при плохом соединении.

Тестовый период и техническая поддержка

Тестовый доступ на 24-48 часов — минимальный стандарт. За это время вы успеете проверить ECM time в разное время суток, поведение при пиковой нагрузке вечером, и то, как быстро реагирует поддержка на вопросы. Поддержка, которая отвечает через сутки, обычно такой же скоростью реагирует на реальные проблемы.

Часто задаваемые вопросы

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

В Enigma2-сборках чаще всего /etc/tuxbox/config/oscam/ или /usr/keys/. В Linux-сборке путь задаётся через флаг -c при запуске: oscam -b -c /etc/oscam/. Основные файлы: oscam.conf, oscam.server, oscam.user. Посмотрите в init-скрипт запуска — там путь указан явно.

Какой порт открыть для подключения клиентов к OScam server?

Зависит от протокола. Для cs378x — порт задаётся в секции [cs378x] (стандартно 12000). Для newcamd — в секции [newcamd] (стандартно 15000). Оба порта нужно пробросить на роутере через NAT, если сервер находится за NAT. Проверить доступность: telnet ваш-ip порт.

Почему ридер висит в статусе CONNECTING?

Скорее всего одно из: неверный логин/пароль, закрытый или непроброшенный порт, несовпадение протокола, несовпадение версии cccversion. Проверьте лог — там будет конкретная ошибка. Затем протестируйте порт через telnet. Если соединение не устанавливается вообще — проблема в сети или фаерволе.

В чём разница между параметрами group у ридера и пользователя?

Group — это механизм связи между ридерами и аккаунтами. Ридер принадлежит группе(ам). Клиент тоже имеет список групп. Клиент получает доступ только к тем ридерам, чьи группы пересекаются с его группами. Например, ридер с group = 1 виден клиенту с group = 1, но невидим клиенту с group = 2.

Какое время ответа ECM считается нормальным?

До 300-500 ms — нормально, каналы открываются без задержек. 500-700 ms — на грани, периодически возможны фризы при плохом соединении. Выше 700-800 ms — проблема, каналы будут регулярно прерываться. Локальная карта даёт 50-150 ms; это ориентир, к которому стоит стремиться.

Чем OScam отличается от CCcam как сервер?

OScam открытый, настраивается через несколько текстовых файлов и поддерживает множество протоколов одновременно: cccam, newcamd, cs378x. Детальная фильтрация по caid/ident, гибкое управление группами, подробный лог с временем ответа ECM — всего этого в CCcam нет. 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 или внешние мониторы.