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

Получил строки от провайдера — и теперь не знаешь, куда их вставить? Это типичная ситуация. OScam — мощный сервер, но его конфиг неочевиден для новичка. Здесь я разберу всё: что такое oscam lines, как они устроены, куда прописываются и почему ридер может показывать CONNECTED, но каналы при этом молчат.

Что такое OScam lines и в каком формате они приходят

Line — это строка подключения к удалённому кардшаринг-серверу. Провайдер выдаёт её в формате, исторически привязанном к определённому протоколу. Сама по себе строка — это не конфиг и не готовый файл. Это набор параметров одного reader: хост, порт, логин, пароль и, в случае newcamd, ключ шифрования.

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

Формат CCcam-строки: C: host port username password

Строка CCcam начинается с префикса C:. Выглядит так:

C: yourserver.example.com 12000 myuser mypassword

Четыре поля: хост, порт, имя пользователя, пароль. CCcam — протокол с собственным шифрованием на уровне хендшейка, поддерживает передачу share-листов и хопы. Порт у большинства провайдеров в диапазоне 10000–20000, хотя встречаются и нестандартные.

Формат Newcamd-строки: N: host port user pass + DES-ключ

Строка Newcamd начинается с N: и содержит пятый элемент — DES-ключ:

N: yourserver.example.com 15000 myuser mypassword 0102030405060708090A0B0C0D0E

DES-ключ — это ровно 28 hex-символов, то есть 14 байт. Если ключ короче или длиннее, или содержит не-hex символы — коннект не установится. Многие провайдеры используют дефолтный ключ 0102030405060708091011121314 — это нормально, он не несёт криптографического смысла на уровне доступа к картам.

Формат mgcamd/radegast и где они применяются

Формат R: (radegast) и строки mgcamd встречаются реже. Radegast — старый протокол, практически вышедший из употребления. Mgcamd использует конфиг в формате N:, но сам является клиентом, а не сервером. Если провайдер выдал строку без явного префикса или с форматом типа Host:Port:User:Pass:Key — это, скорее всего, mgcamd-нотация. В OScam она используется как newcamd.

Чем line отличается от reader и от account

Это три разные сущности, и путать их — частая причина ошибок.

  • Line — строка от провайдера, которую ты получил. Просто текст с параметрами.
  • Reader — блок [reader] в oscam.server, который ты создаёшь на основе этой строки. Reader — это живое подключение OScam к удалённому серверу.
  • Account — блок [account] в oscam.user. Это учётная запись для клиентов, которые подключаются к твоему OScam. Если ты используешь OScam только как клиент — accounts тебе не нужны.

Reader читает ECM с удалённого сервера. Account — это про то, кому ты сам раздаёшь декодированный сигнал.

Куда прописывать lines: структура oscam.server

Весь конфиг OScam — это набор текстовых файлов в одной директории. Reader-ы для внешних линий идут в oscam.server. Каждый блок начинается с заголовка [reader].

Расположение конфигов: /var/etc/, /etc/tuxbox/config/oscam/, /usr/keys/

Путь зависит от платформы:

  • /var/etc/oscam/ — стандарт для большинства Linux-дистрибутивов и роутеров с OpenWrt
  • /etc/tuxbox/config/oscam/ — Enigma2-ресиверы (Dreambox, Vu+, Formuler и т.д.)
  • /usr/keys/ — некоторые старые прошивки Dreambox
  • /etc/oscam/ — если собирал OScam вручную и не менял --sysconfdir

Если не знаешь куда смотреть — ps aux | grep oscam покажет строку запуска с параметром -c, который указывает путь к конфигам.

Синтаксис блока [reader] для CCcam

[reader]
label         = cccam_main
protocol      = cccam
device        = yourserver.example.com,12000
user          = myuser
password      = mypassword
group         = 1
cccversion    = 2.3.0
ccchop        = 1
audisabled    = 1

Параметр label — произвольное имя, уникальное в файле. В WebIF ридер будет отображаться именно под этим именем. Пробелы и кириллица в label лучше не использовать.

Синтаксис блока [reader] для Newcamd

[reader]
label         = newcamd_main
protocol      = newcamd
device        = yourserver.example.com,15000
key           = 0102030405060708090A0B0C0D0E
user          = myuser
password      = mypassword
group         = 1
caid          = 0500
audisabled    = 1

Обрати внимание: в newcamd вместо параметров шифрования на уровне протокола используется key — это и есть DES-ключ из строки N:. Параметр caid здесь желателен — он помогает OScam правильно маршрутизировать ECM.

Обязательные параметры: label, protocol, device, user, password, group

Без этих шести параметров reader либо не запустится, либо не подключится. device — это всегда хост,порт через запятую без пробелов. group — числовой идентификатор, по которому reader привязывается к аккаунтам в oscam.user. Даже если ты не раздаёшь карты никому — group нужна для работы балансировки.

Дополнительные параметры: caid, ident, services, fallback, ccchop

caid — идентификатор системы условного доступа (например, 0500 для Viaccess, 1800 для Nagravision). Указывать не обязательно, но помогает при нескольких reader с разными картами. ident — провайдерский идентификатор, если нужна фильтрация до конкретного пакета. services — ограничение до набора сервисов из oscam.services. fallback — помечает reader как резервный. ccchop — ограничение хопов для CCcam, подробнее в разделе тонкой настройки.

Пошаговая настройка: от получения line до рабочего ECM

Вот полный путь от строки провайдера до работающего канала.

Шаг 1: добавить блок [reader] в oscam.server

Открываешь oscam.server в текстовом редакторе. Если файл не существует — создаёшь его. Добавляешь блок reader в конец файла, используя шаблоны выше. Сохраняешь.

Один reader = одна line. Несколько lines = несколько блоков [reader] в одном файле.

Шаг 2: задать group и привязать к [account] в oscam.user

Если ты только клиент и не раздаёшь дальше — этот шаг можно пропустить. Если раздаёшь (например, второй ресивер подключается к твоему OScam) — в oscam.user в блоке [account] должен быть параметр group = 1 (совпадает с group в reader). Так OScam знает, какие reader использовать для ответа клиенту.

Шаг 3: проверить caid/provid через oscam.services

Файл oscam.services не обязателен, но если он есть — убедись что нужный caid там не заблокирован. Если файл пустой или отсутствует — всё декодируется без ограничений по сервисам.

Шаг 4: перезапуск OScam и проверка статуса reader

На Enigma2-ресивере:

/etc/init.d/softcam restart

На Linux с systemd:

systemctl restart oscam

Или через kill -HUP если не хочешь полного перезапуска — OScam умеет перечитывать конфиг на лету:

kill -HUP $(pidof oscam)

Шаг 5: контроль через WebIF (порт 8888) — раздел Readers

WebIF по умолчанию на порту 8888. Открываешь http://IP-ресивера:8888 — там раздел Readers. Там видно:

  • CONNECTED — TCP-соединение установлено, handshake прошёл
  • CONNECTING — пытается подключиться, не получается
  • ERROR — соединение не установилось, обычно неверные данные или хост недоступен
  • OFFLINE — reader отключён (disabled = 1 в конфиге)

В колонках также видны ECM OK (успешно декодированных запросов), ECM NOK (отказов), время ответа в миллисекундах и timestamp последнего ECM. Если ECM OK растёт — всё работает.

Диагностика: почему line не работает

Статус CONNECTED в WebIF означает только что TCP-соединение живо. Это не гарантирует что карты есть и каналы откроются. Вот типичные проблемы и что искать в логах.

Reader в статусе CONNECTING — проблема порта/firewall

Если reader часами висит в CONNECTING — хост недоступен или порт заблокирован. Проверь:

telnet yourserver.example.com 12000

Если telnet не подключается — firewall на твоей стороне или хост мёртв. Попробуй другую сеть (мобильный интернет как тест). Если через мобильный коннект проходит — у тебя NAT или провайдерский firewall режет нестандартные порты.

CONNECTED но 0 ECM OK — несовпадение caid/provid

В логе ищи строки типа:

c (ecm) caid: 0500, provid: 000000, srvid: 0001 - no matching reader found

Или в WebIF → Readers → конкретный reader → Entitlements: если там пусто — провайдер не передал информацию о доступных картах. Либо caid в твоём oscam.server не совпадает с тем что даёт сервер. Убери caid из reader (пусть будет автодетект) и посмотри что появится в Entitlements после первого ECM.

Ошибка login failed — неверные user/pass или ban на сервере

В oscam.log выглядит так:

r (reader) login to server failed: username/password wrong or account disabled

Или для CCcam:

r (cccam) rejected login for user myuser

Причины: опечатка в user/password (чаще всего регистр), аккаунт отключён провайдером, достигнут лимит одновременных коннектов, ban по IP. Перепроверь буквально посимвольно. Если всё правильно — напиши провайдеру, вероятен ban.

Ошибка DES key — некорректный newcamd-ключ

В логе:

r (newcamd) DES key error: invalid key length or format

Ключ должен содержать ровно 28 hex-символов. Без пробелов. Без 0x префиксов. Только цифры и буквы A-F (регистр не важен). Проверь длину: echo -n "твой_ключ" | wc -c должно дать 28.

Канал не открывается при рабочем reader — проблема с PIDами или провайдерским ident

Reader CONNECTED, ECM OK есть, но конкретный канал не открывается. В логе ищи:

c (ecm) caid: 0500, provid: 040000 - rejected

Здесь provid (ident) 040000 не авторизован на этой карте. Line от провайдера покрывает один пакет, а ты смотришь канал из другого. Или нужно добавить ident = 0500:040000 в reader если провайдер явно ограничил доступ по ident.

Чтение oscam.log: уровень debug 4 для ECM, debug 8 для сети

В oscam.conf в секции [global]:

[global]
logfile       = /var/log/oscam.log
loghistorysize = 2000
debug         = 4

debug = 4 — подробный лог ECM-запросов. debug = 8 — сетевые события (connect/disconnect). debug = 255 — всё сразу, файл растёт быстро. Через WebIF → Log можно менять уровень на лету без перезапуска — удобно для диагностики.

Тонкая настройка: ccchop, audisabled, fallback и приоритеты

Базовый конфиг работает. Теперь о параметрах, которые реально влияют на стабильность.

ccchop 0/1/2/3 — что означает каждое значение для CCcam-reader

ccchop ограничивает количество хопов, через которые пересылается карта в CCcam-сети:

  • ccchop = 0 — без ограничений, принимаются карты любой глубины
  • ccchop = 1 — только карты с 0 хопами (прямые, на физическом ридере)
  • ccchop = 2 — карты с 0-1 хопом
  • ccchop = 3 — карты с 0-2 хопами

Для стабильности я рекомендую ccchop = 1. Чем меньше хопов — тем быстрее ECM и меньше вероятность зависания цепочки. Карты с 3-5 хопами дают заметную задержку и нестабильны.

Параметр audisabled и почему его обычно включают

audisabled = 1 отключает автоматическое обновление прав (AU — auto-update). AU нужен если ты работаешь с физической смарт-картой в локальном ридере. Для сетевых подключений (то есть для всех oscam lines от провайдера) AU бесполезен и создаёт лишний трафик. Всегда ставь audisabled = 1 для network reader.

fallback и fallback_percaid: резервные ридеры

fallback = 1 помечает reader как резервный — OScam обращается к нему только если основной reader не ответил за отведённое время. Это полезно когда у тебя две lines на один caid: одна быстрая основная, другая медленная но надёжная как backup.

fallback_percaid = 0500:1 — fallback только для конкретного caid. Так можно сделать одного reader основным для одного пакета и резервным для другого.

lb_weight и load balancing между несколькими lines

Если у тебя несколько lines от одного провайдера или разных провайдеров с одним caid — OScam может балансировать между ними. lb_weight = 100 — дефолт. Reader с весом 200 получит в два раза больше запросов чем reader с весом 100. Для равномерного распределения оставь дефолт на всех.

Балансировка включается автоматически когда несколько reader в одной group обслуживают один caid. Никакого дополнительного конфига не нужно.

inactivitytimeout и reconnecttimeout: борьба с тихими дисконнектами

inactivitytimeout = 30
reconnecttimeout  = 30

inactivitytimeout — сколько секунд ждать без трафика прежде чем считать соединение мёртвым. reconnecttimeout — через сколько секунд пробовать переподключиться после обрыва. Дефолтные значения (часто 120+) приводят к тому что reader "тихо мёртв" минутами. 30 секунд — разумный баланс.

Дополнительно: keepalive = 1 включает TCP keepalive. Помогает на роутерах с агрессивным NAT, которые режут idle-соединения через 60-90 секунд.

Безопасность и приватность при работе с lines

Line — это не просто строка текста. Это твой персональный доступ, который провайдер привязал к твоему аккаунту и IP.

Почему не стоит публиковать line на форумах

Провайдеры мониторят одновременные коннекты. Если твоя line появилась в паблике — к ней подключатся десятки людей. Провайдер увидит 30 коннектов с разных IP под одними кредами и забанит аккаунт. Восстановление обычно невозможно.

Кроме того, хост из твоей line может получить DDoS-атаку или сканирование — это проблема для всех, кто на том же сервере.

Ограничение хопов (ccchop) и защита от перепродажи

Если ты используешь OScam как центральный сервер и раздаёшь дальше — ccchop = 1 в reader от провайдера не даёт пересылать карты дальше по цепочке. Провайдер видит только один хоп — твой сервер. Это уменьшает вероятность бана за "перепродажу".

VPN/туннелирование трафика OScam

Если провайдер дал line, а твой ISP или корпоративная сеть блокирует нестандартные порты — туннелируй через WireGuard или OpenVPN. OScam сам по себе не умеет работать через SOCKS/HTTP-прокси, поэтому нужен именно сетевой туннель. После поднятия VPN убедись что OScam биндится на нужный интерфейс — параметр bindip в oscam.conf.

Локальное хранение oscam.server: права 600 и владелец root

В файле oscam.server хранятся пароли в открытом виде. Установи правильные права:

chmod 600 /etc/oscam/oscam.server
chown root:root /etc/oscam/oscam.server

На Enigma2-ресиверах с многопользовательским доступом через FTP или SSH это особенно актуально. Если файл доступен для чтения всем — любой пользователь системы видит твои кредентиалы.

Также: не храни резервные копии lines в /tmp/ или в домашней директории пользователя с широкими правами доступа. Бэкап — только в директорию с правами 700.

Чем отличается line C: от line N: и что выбрать?

C: — CCcam-протокол. TCP-соединение с шифрованием на уровне хендшейка, поддержка хопов, share-листы. N: — Newcamd. Тоже TCP, но с DES-ключом, и считается более быстрым и стабильным на одиночный ECM-запрос. Если провайдер дал обе — приоритет newcamd: меньше задержка, нет оверхеда от share-листов. CCcam оставь как fallback или для совместимости со старыми серверами, которые не понимают newcamd.

Сколько lines можно добавить в один OScam?

Технического лимита нет. На практике 20–50 reader работают без проблем на обычном Linux-боксе. Каждый reader — это отдельный TCP-коннект и отдельный поток. Перегрузка проявляется ростом времени ECM выше 500–800 мс и таймаутами. Если у тебя много lines под один caid — группируй через group и используй lb_weight для балансировки нагрузки между ними.

Reader показывает CONNECTED, но каналы не открываются — что проверить?

Первым делом — WebIF → Readers → имя reader → Entitlements. Там должна быть карта с нужным caid. Если Entitlements пустые — провайдер не передал информацию о доступных картах или line ограничена по caid/ident. Далее: проверить oscam.services и параметр group в [account] (если раздаёшь дальше). Включить debug = 4 и искать в логе строки ecm и dcw — там будет видно почему конкретный запрос отклоняется.

Что делать если line после нескольких часов работы отваливается в CONNECTING?

Уменьшить inactivitytimeout = 30 и reconnecttimeout = 30, добавить keepalive = 1. Если не помогает — проверить роутер: многие провайдерские роутеры режут idle TCP через 60–120 секунд. Проверочный тест: подключить ресивер напрямую через мобильный интернет. Если там line не отваливается — проблема в локальной сети или роутере. Решение: VPN-туннель или смена роутера с настройкой tcp_keepalive_time.

Как добавить line, если провайдер дал только URL вида cccam://user:pass@host:port?

Это просто удобная нотация для передачи данных, OScam её не понимает напрямую. Разбираешь вручную: protocol = cccam, device = host,port, user = user, password = pass. Создаёшь стандартный блок [reader]. Префикс cccam:// в oscam.server не используется — это только формат записи для передачи через мессенджер или почту.

Можно ли использовать одну line на двух ресиверах одновременно?

Обычно нет — провайдеры лимитируют количество одновременных коннектов на одну line (чаще всего 1, иногда 2). Попытка подключиться с двух IP одновременно ведёт к бану. Правильное решение: поднять один OScam как центральный сервер, второй ресивер подключается к нему как newcamd/cccam клиент. Провайдер видит один коннект — от центрального OScam. Это стандартная схема "central server + clients".

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.