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 настраивается одним файлом и проще в базовом использовании, но гораздо менее гибок.

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.