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 или отсутствии проброса на роутере.
Практические советы для стабильного просмотра
Даже самая стабильная линия 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 или внешние мониторы.