NewCamd server: настройка и подключение OScam
Если вы уже крутите OScam и хотите поднять newcamd server для раздачи карты клиентам — эта статья для вас. Разберём конфиги от и до: секция [newcamd] в oscam.conf, DES-ключ, привязка CAID к порту, и почему клиент получает connection refused или CW NOT FOUND вместо нормальной дешифровки.
Что такое NewCamd server и зачем он нужен
Протокол NewCamd простыми словами
NewCamd — это клиент-серверный протокол для передачи ECM и EMM пакетов по TCP. Клиент посылает зашифрованный ECM-запрос, сервер отвечает CW (Control Word). Вся коммуникация защищена 14-байтным DES-ключом, который должен быть одинаковым на обеих сторонах соединения.
Работает поверх обычного TCP. Это значит, легко пробрасывается через NAT, туннель или VPN. Порт выбирается произвольно в конфиге — никакого фиксированного стандарта нет, но исторически прижился диапазон 15000–15050.
Чем NewCamd отличается от CCcam и MGcamd
Главное отличие — один порт привязан к одной карте (CAID). Это не баг, это архитектура протокола. Если у вас три карты — открываете три разных порта, каждый со своим ключом или одним общим. CCcam в этом плане проще для администратора: один порт, все карты летят через него.
MGcamd — это клиентский эмулятор, а не сервер. Он сам подключается по протоколу NewCamd, используя файл newcamd.list для описания подключений. То есть MGcamd — клиент, OScam с секцией [newcamd] — сервер. Не путайте роли.
Когда использовать NewCamd, а когда CCcam
NewCamd хорош там, где нужна чёткая привязка: одна карта, один порт, один пользователь. Локальная связка OScam + MGcamd через NewCamd — классика для ресиверов на базе Enigma2. Стабильно, минимум накладных расходов, легко отладить по логам.
CCcam выигрывает, когда карт много и нужно раздавать их скопом. Или когда клиент не умеет NewCamd — у CCcam шире поддержка на старом железе. Но если задача конкретная — поднять newcamd server под один спутниковый пакет — лишняя сложность CCcam здесь просто лишняя.
Настройка NewCamd server в OScam
Секция [newcamd] в oscam.conf
Открываем oscam.conf и добавляем секцию. Вот рабочий пример:
[newcamd]
key = 0102030405060708091011121314
port = 15050@0500:032830,043800
mgclient = 1
Ключ — 14 байт в hex, 28 символов, без пробелов и разделителей. Порт пишется в формате порт@CAID:ident. Если ident не нужен — достаточно 15050@0500. Несколько ident под один CAID — через запятую. Несколько портов — каждый на новой строке.
Параметр mgclient = 1 нужен для совместимости с MGcamd-клиентами. Без него некоторые версии MGcamd не проходят рукопожатие нормально и сразу обрывают соединение.
Файл oscam.user и создание учётной записи
Без записи в oscam.user клиент не пройдёт авторизацию. Минимальный блок:
[account]
user = testuser
pwd = testpass123
group = 1
au = 1
caid = 0500,1830
Параметр au = 1 (auto-update) нужен, если карта требует EMM для обновления ключей. Без него карта может держать CW сейчас, но через несколько дней перестанет его отдавать. Группа пользователя должна совпадать с группой reader, который читает физическую карту.
Параметр key (DES-ключ) и порт
DES-ключ — 14 байт в hex без каких-либо разделителей. Стандартный дефолт многих конфигов: 0102030405060708091011121314. Оставлять его в продакшене — плохая идея, поменяйте на свой.
Есть нюанс, который ломает людей: некоторые старые конфиги содержат 12-байтные ключи — 24 hex-символа. Это устаревший формат. Современный OScam ожидает ровно 14 байт. Если ключ короче — авторизация сломается даже при формальном совпадении символов. OScam просто откажется принимать такую конфигурацию или выдаст ошибку при старте.
Привязка CAID к порту
Формат записи порта — то, что большинство статей объясняют плохо или вообще не объясняют. Разберём на конкретном примере:
port = 15050@0500:032830,043800
port = 15051@1830:000000
port = 15052@0604
Порт 15050 принимает ECM-запросы для CAID 0500 с ident-кодами 032830 и 043800. Порт 15051 — для CAID 1830. Порт 15052 — для CAID 0604 без привязки к конкретному ident. Клиент, подключившийся к 15050 и запросивший канал с CAID 1830, получит отказ — это нормальное поведение протокола, а не ошибка конфига.
Пути к конфигам зависят от образа. На стоковых образах Enigma2 это обычно /etc/oscam/ или /var/keys/. На образах типа OpenPLi — /etc/tuxbox/config/oscam/. При ручной сборке из исходников — /usr/local/etc/oscam/. После правки конфига нужен рестарт OScam или команда перечитывания конфига через веб-интерфейс (кнопка Reload в разделе Config).
Подключение клиента к NewCamd server
Подключение к newcamd server со стороны клиента настраивается по-разному в зависимости от программы. Разберём основные варианты.
Строка cwshare.cfg и newcamd.list в MGcamd
В MGcamd используется файл newcamd.list, который живёт в /etc/mgcamd/ или /usr/keys/. Строка подключения выглядит так:
CWS = 192.168.1.100 15050 testuser testpass123 01 02 03 04 05 06 07 08 09 10 11 12 13 14
DES-ключ здесь пишется десятичными значениями байтов через пробел — ровно 14 чисел. Не hex, а десятичная запись. Байт 0x01 = 01, байт 0x0E = 14, байт 0xFF = 255. Перепутать формат — типичная причина login failed, которую потом долго ищут.
Настройка reader в oscam.server на стороне клиента
Если клиент тоже OScam, добавляем reader в oscam.server:
[reader]
label = newcamd_remote
protocol = newcamd
device = 192.168.1.100,15050
key = 0102030405060708091011121314
user = testuser
password = testpass123
caid = 0500
group = 1
reconnecttimeout = 30
Параметр reconnecttimeout = 30 — сколько секунд ждать перед повторным подключением при обрыве. Без явного значения OScam может держать "мёртвый" reader в статусе connected без реальной активной сессии, что приводит к путанице при диагностике.
Отдельный момент — несколько reader с одинаковым CAID в oscam.server. Это создаёт конфликт приоритетов: OScam начинает балансировать ECM-запросы между ними, ECM time скачет, каналы фризят. Если у вас два newcamd reader на один CAID — явно прописывайте приоритет через параметр cccmaxhops или loadbalancemode, либо разведите их по разным группам.
Проверка статуса в веб-интерфейсе OScam
Веб-интерфейс OScam по умолчанию на порту 8888: http://192.168.1.100:8888. Раздел Readers показывает статус каждого reader: должно быть connected с зелёным индикатором. ECM time — среднее время ответа карты в миллисекундах.
Нормальный ECM time — до 300–400 мс. Стабильно выше 800 мс — что-то не так: перегружен канал, длинная цепочка решары, или проблемы с картоприёмником. При ECM time выше 1.5–2 секунд начинаются фризы на каналах, хотя reader формально числится подключённым.
Типичные ошибки и troubleshooting
Порт закрыт или недоступен (connection refused)
Первым делом проверяем, слушает ли OScam нужный порт на сервере:
netstat -tlnp | grep 15050
# или
ss -tlnp | grep 15050
Если вывод пустой — OScam не запустился с этим портом. Причины: ошибка синтаксиса в конфиге, секция [newcamd] не применилась, или порт занят другим процессом. Перезапускаем OScam, читаем лог запуска.
Если порт слушается локально, но снаружи connection refused — iptables или nftables блокируют входящий трафик. Открываем порт:
iptables -A INPUT -p tcp --dport 15050 -j ACCEPT
iptables-save > /etc/iptables/rules.v4
За NAT-роутером этого мало — дополнительно настраиваем проброс порта с внешнего IP на локальный адрес сервера. Без этого клиент из интернета никогда не достучится, даже если firewall открыт на самом сервере.
Несовпадение DES-ключа
Самая частая причина login failed или мгновенного разрыва соединения сразу после рукопожатия. Ключ должен совпадать побайтно: один и тот же 14-байтный DES-ключ на сервере в oscam.conf и на клиенте в oscam.server или newcamd.list.
Частые ошибки: лишние пробелы в hex-строке, путаница между hex и десятичным форматом в newcamd.list, и — внимание — использование 12-байтного ключа на одной стороне и 14-байтного на другой. OScam в логе выдаст login failed: user testuser без дополнительных деталей. Убеждаемся в длине ключа первым делом.
Карта подключена, но нет дешифровки (CW NOT FOUND)
Reader говорит connected, ECM time показывает значения, но каналы не открываются. В логе — CW NOT FOUND. Возможные причины:
- Неверный CAID или ident: клиент запрашивает канал под CAID, не привязанный к этому порту
- Пользователь в oscam.user не имеет прав на этот пакет — проверить параметры caid и services
- Параметр
auне включён, карта устарела и не получила EMM-обновление - Картоприёмник с устаревшей прошивкой — карта физически читается, но перестала отдавать CW на определённые каналы после обновления шифрования
Проверяем через веб-интерфейс раздел Services — какие CAID и SID реально разрешены для пользователя. Сверяем с тем, что запрашивает клиент в логах ECM-запросов.
Логи OScam и уровень детализации
Запускаем OScam с максимальным дебагом:
oscam -d 255 -l /tmp/oscam.log
Флаг -d 255 — битовая маска, включающая все категории логирования одновременно. Лог лучше писать в /tmp/ — там обычно есть место и нет проблем с правами. На systemd-системах лог также читается через journalctl -u oscam -f.
В секцию [global] oscam.conf добавляем:
[global]
loghistorysize = 2000
Тогда веб-интерфейс показывает последние 2000 строк лога прямо в браузере — удобно для быстрой диагностики без SSH. В логах ищем конкретные строки: login failed, CW NOT FOUND, CAID not found — они сразу указывают на проблему.
Как выбрать сервер или провайдера: на что смотреть
Стабильность аптайма и пинг до сервера
Нужен реальный аптайм за несколько недель, а не обещания. Пинг до сервера — до 100 мс комфортно, 100–200 мс терпимо, выше — ECM time будет расти. Плохой newcamd server с пингом 400 мс даст постоянные фризы даже при локальной карте на той стороне.
Динамический IP сервера — отдельная боль. Если IP меняется без предупреждения, клиент теряет подключение до ручного обновления конфига. Нормальный сервер имеет статический IP или DDNS с коротким TTL (60–120 секунд). Если у вас динамический IP на своём сервере — настройте DDNS через ddclient или inadyn.
Локальные карты против решары
Локальная карта в ридере — это когда сервер сам читает физическую смарт-карту. ECM time минимальный, надёжность максимальная, цепочка зависимостей — одно звено. Решара — когда сервер сам получает CW от другого сервера и пересылает вам. Каждый hop добавляет задержку и точку отказа.
Цепочка из трёх-четырёх решар — почти гарантированные фризы. Идеально — один hop максимум. Спрашивать про hop count — нормальная практика при выборе. В OScam hop count виден в веб-интерфейсе рядом с ECM-ответом.
Поддержка нужных CAID и каналов
Протокол NewCamd жёстко привязывает порт к CAID. Прежде чем настраивать подключение, нужно точно знать CAID вашего пакета. Ошибиться с CAID — потратить час на диагностику: reader подключится, но CW не пойдут, и непонятно почему.
Проверить CAID канала можно прямо в Enigma2: кнопка Info → Service Info → CAIDs. Или через веб-интерфейс OScam в разделе Services после первого неудачного ECM-запроса — там будет видно, что именно запрашивал клиент и какой CAID использовался.
Частые вопросы
Какой порт по умолчанию использует NewCamd?
Жёсткого стандарта нет. Исторически прижился диапазон 15000–15050, чаще всего встречается 15050. Порт задаётся вручную в oscam.conf, и каждая карта обычно сидит на своём порту. Подойдёт любой свободный порт выше 1024.
Сколько символов должен быть DES-ключ в NewCamd?
14 байт — это 28 hex-символов без пробелов и разделителей в oscam.conf. Ключ должен совпадать побайтно на сервере и клиенте, иначе авторизация не пройдёт. Старый 12-байтный формат (24 символа) не поддерживается современными версиями OScam — не пытайтесь его использовать.
Можно ли раздать несколько карт через один NewCamd порт?
Нет. Один порт — одна карта (CAID). Для нескольких карт открывают несколько портов с разными CAID. Если нужна раздача всех карт через одно подключение — смотрите в сторону CCcam, там архитектура принципиально другая.
Почему клиент подключается, но каналы не открываются?
Чаще всего — несовпадение CAID или ident между запросом клиента и настройкой сервера. Второй вариант — проблема с правами: параметры su/au в oscam.user не настроены, или карта не отдаёт CW. Смотрите логи: строки CW NOT FOUND с указанием CAID и SID скажут конкретно, что именно не сходится.
Чем NewCamd лучше или хуже CCcam?
NewCamd проще для одной карты: меньше overhead, легче дебажить, стабильнее в локальной сети. CCcam удобнее, когда карт много и нужна гибкая раздача разным клиентам. Одна карта — выбор в пользу NewCamd. Много карт для разных клиентов — CCcam.
Как проверить, что NewCamd server слушает порт?
На сервере: netstat -tlnp | grep 15050 или ss -tlnp | grep 15050. Должна появиться строка с LISTEN и процессом oscam. Снаружи: telnet host 15050 — открытый порт даёт пустое соединение, закрытый — connection refused. Если порт закрыт снаружи, но открыт локально — проблема в firewall или отсутствии проброса на роутере.
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.