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 или внешние мониторы.