iCAM в OScam: настройка протокола, конфиг и порты

Если вы уже потратили час на гугление и всё равно не понимаете, почему ридер с icam oscam показывает CONNECTED, но каналы не открываются — вы не одни. Протокол iCAM немного выбивается из привычной логики newcamd/CCcam, и большинство гайдов просто дают готовый конфиг без объяснений. Давайте разберём это нормально, с реальными путями и командами.

Что такое iCAM и чем он отличается от классического newcamd/CCcam

Краткое описание протокола iCAM и его место в OScam

iCAM — это протокол обмена ключами поверх стандартной логики ридера в OScam. По своей сути он работает как обёртка с усиленной аутентификацией: клиент и сервер обмениваются обменным ключом (DES или AES в зависимости от реализации) до начала передачи ECM-запросов. Это делает соединение более защищённым по сравнению с голым newcamd, но и добавляет один дополнительный параметр в конфиг — key.

В oscam.server протокол задаётся строкой protocol = icam в блоке [reader]. Если этой строки нет или она написана с ошибкой — ридер просто не поднимется. Никакого graceful fallback на другой протокол нет.

Отличия от newcamd, CCcam и cs378x

newcamd работает на порту, заданном сервером (обычно 28910–28950), и использует DES-ключ для первичного обмена. CCcam — проприетарный протокол с другой структурой хэндшейка, OScam его эмулирует через protocol = cccam. cs378x — это открытый протокол от команды OScam, по сути более современная альтернатива newcamd.

iCAM ближе к newcamd по структуре, но требует обязательного совпадения обменного ключа на обеих сторонах. Если ключ не совпадает — соединение рвётся немедленно после хэндшейка, а не через время. Это важно для диагностики: быстрый disconnect почти всегда означает проблему с ключом, а не с сетью.

Версии OScam с поддержкой iCAM и как проверить сборку

Поддержка iCAM зависит от флагов компиляции. Не каждая сборка OScam её включает. Проверить просто:

oscam --build-info

В выводе ищите строку вида reader-icam или WITH_ICAM. Если её нет — ридер с protocol = icam не запустится, и в лог просто запишется что-то вроде protocol not supported. Альтернативно, в веб-интерфейсе OScam перейдите в раздел Status → About — там перечислены все включённые модули.

Актуальные сборки с поддержкой iCAM есть в официальном SVN-репозитории OScam. Использовать сборки старше revision 11700 я бы не рекомендовал — там были баги с реконнектом именно в iCAM-ридерах.

Настройка ридера iCAM в oscam.server

Минимальный рабочий блок [reader] для iCAM

Вот реальный рабочий блок для подключения через icam oscam — без лишних параметров, только необходимое:

[reader]
label                = my_icam_reader
protocol             = icam
device               = server.example.com,12000
user                 = mylogin
password             = mypassword
key                  = 0102030405060708
group                = 1
reconnecttimeout     = 30
inactivitytimeout    = 60

Этот блок достаточен для старта. Если сервер отвечает и ключ совпадает — ридер поднимется в статус CARDOK в течение 5–10 секунд.

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

device — хост и порт через запятую. Без пробелов. Порт берёте у своего провайдера ключей — обычно диапазон 10000–15000, но это не стандарт. key — обменный ключ в hex, обычно 8 байт (16 символов) для DES. Получаете его вместе с данными подключения. Если ключ не передан или равен нулям — некоторые серверы принимают соединение, другие рвут сразу. Проверяйте по логу.

user и password — ваши учётные данные на сервере. Никаких хитростей, обычная пара логин/пароль. Регистр имеет значение.

Параметр group, caid, ident и audisabled

group — один из самых важных параметров, и при этом самый часто игнорируемый. Значение group в [reader] должно совпадать с group в [account] клиента. Если у ридера group = 1, а у пользователя group = 2 — декодирования не будет, даже если коннект живой. Об этом подробнее в следующем разделе.

caid и ident оставляйте пустыми, если не нужна явная фильтрация. OScam и так маршрутизирует ECM по доступным CAID от ридера. Если прописать caid без ident — ридер будет принимать только запросы на этот CAID. Пример: caid = 0500 для Viaccess, caid = 1702 для Nagravision.

audisabled = 1 отключает AU (автообновление) для этого ридера. Если источник не поддерживает AU — лучше явно отключить, чтобы не было лишних запросов и ошибок в логе.

Где лежат конфиги: /etc/tuxbox/config/oscam/ и /var/keys

Путь к конфигам зависит от прошивки и параметра -c при запуске OScam. Типичные варианты:

  • /etc/tuxbox/config/oscam/ — Enigma2 на большинстве боксов (Dreambox, VU+, GigaBlue)
  • /var/etc/oscam/ — некоторые варианты OpenPLi и OpenATV
  • /usr/keys/ — встречается на старых прошивках и некоторых китайских ресиверах
  • /etc/oscam/ — при ручной установке на Linux без привязки к TV-прошивке

Посмотреть, какой путь реально использует запущенный OScam, можно командой:

ps aux | grep oscam

В выводе будет -c /путь/к/конфигам. Если параметр -c отсутствует — OScam берёт путь по умолчанию из компиляции, обычно это /usr/local/etc/oscam/.

Частая ловушка: вы редактируете файл в /etc/oscam/, а OScam читает из /var/etc/oscam/. Правки не применяются, и вы час ищете причину. Всегда проверяйте реальный путь перед редактированием.

Настройка oscam.user и раздачи на клиентов

Блок [account] для клиентов

Файл oscam.user описывает клиентов, которым OScam раздаёт ключи. Минимальный блок:

[account]
user                 = client1
pwd                  = clientpass
group                = 1
au                   = my_icam_reader
monlevel             = 2

monlevel = 2 даёт клиенту доступ к просмотру статистики через веб-интерфейс — удобно для отладки, потом можно убрать. au = my_icam_reader — имя ридера для автообновления, должно совпадать с label в блоке [reader].

Связь group между ридером и пользователем

Это тот момент, который конкуренты просто не объясняют. В OScam маршрутизация ECM работает через группы: ридер обслуживает только те ECM-запросы, которые пришли от аккаунтов с совпадающей группой.

Если у вас [reader] group = 1,2 и [account] group = 1 — всё работает. Если у ридера group = 2, а у аккаунта group = 1 — ECM до ридера не доходит, канал не декодируется. При этом статус ридера в веб-интерфейсе будет CARDOK — он живой, просто не получает запросов.

Ограничение через caid, ident и betatunnel

В [account] можно ограничить доступ клиента к конкретным CAID: caid = 0500,1702. Тогда клиент сможет получать ключи только для этих систем шифрования.

Параметр betatunnel нужен для пакетов, которые вещают в одной CA-системе, а карты работают на другой. Классический пример: betatunnel = 1801.FFFF:1722 — пакет Nagravision 1801 туннелируется через 1722. Если у вас такой пакет и канал не открывается — проверьте, нужен ли betatunnel именно для вашего CAID.

Проверка статуса и отладка соединения iCAM

Чтение статуса ридера в веб-интерфейсе (порт 8888/16002)

Веб-интерфейс OScam включается в oscam.conf в секции [webif]:

[webif]
httpport             = 8888
httpuser             = admin
httppwd              = adminpass
httprefresh          = 10

Открываете http://ip-бокса:8888 и смотрите раздел Readers. Там видно статус каждого ридера, время последнего ответа и количество декодированных ECM. Некоторые прошивки используют порт 16002 — зависит от конфига. Порт 8888 — это дефолт при ручной настройке.

Включение детального лога: oscam.conf и параметр loglevel

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

[global]
logfile              = /var/log/oscam.log
loglevel             = 255
maxlogsize           = 500

loglevel = 255 — максимальная детализация. Включайте только на время отладки, потом возвращайте к 1 или 4. При 255 лог растёт очень быстро, особенно при активном ECM-потоке. Параметр maxlogsize задаётся в килобайтах.

Если хотите смотреть лог в реальном времени: tail -f /var/log/oscam.log. На Enigma2 логи иногда пишутся в /tmp/oscam.log — зависит от прав на запись.

Расшифровка статусов CONNECTED, OFF, CARDOK

OFF — ридер не пытается подключиться вообще. Причины: неверный протокол, OScam скомпилирован без поддержки iCAM, ошибка в конфиге (опечатка в protocol =), или ридер отключён параметром disabled = 1.

CONNECTED — TCP-соединение установлено, хэндшейк прошёл, но карта/сервер ещё не подтвердил готовность к декодированию. Это промежуточный статус, который должен смениться на CARDOK. Если висит в CONNECTED больше 30 секунд — проблема с аутентификацией или ключом.

CARDOK — всё хорошо, ридер готов декодировать. Если при этом каналы всё равно не открываются — проблема уже не в ридере, а в маршрутизации (group, caid, ident).

Анализ ECM: время ответа и коды ошибок

В логе при loglevel = 255 каждый ECM-запрос выглядит примерно так:

2026/06/13 14:23:01 1234 c (client1) ECM caid 0500 prov 000000 srvid 1234 -> my_icam_reader (150 ms) decoded

150 ms — время ответа. Нормальное значение для хорошего сервера — до 300 мс. Если больше 800–1000 мс — явная проблема с сетью или перегрузка источника. Вместо decoded можно увидеть not found (CAID/ident не поддерживается), timeout (ридер не ответил вовремя) или error (технический сбой на стороне сервера).

Если строк с ECM в логе нет вообще — запрос до ридера не доходит. Проверяйте группы.

Типовые ошибки iCAM и их устранение

Ридер CONNECTED, но каналы не открываются

Самая частая ситуация в связке icam oscam. Чек-лист по порядку:

  1. Проверьте group в [reader] и [account] — они должны пересекаться.
  2. Убедитесь, что CAID канала поддерживается ридером — смотрите в веб-интерфейсе, какие CAID сообщает ридер.
  3. Если в [reader] прописан caid, убедитесь, что он совпадает с CAID нужного канала.
  4. Включите loglevel 255 и посмотрите, приходят ли ECM-запросы на ридер.

Ошибка аутентификации и неверный ключ

В логе это обычно выглядит как authentication failed или handshake error, после чего немедленный disconnect и попытка реконнекта. Проверяйте три вещи: правильность ключа в hex (никаких пробелов, лишних символов), совпадение логина/пароля, и — это неочевидно — расхождение системного времени.

Некоторые реализации iCAM используют timestamp в процессе обмена. Расхождение более 30–60 секунд между клиентом и сервером ломает хэндшейк. Проверьте время на ресивере: date в терминале, и при необходимости синхронизируйте через NTP: ntpdate pool.ntp.org.

Постоянные reconnect и таймауты

Если ридер каждые 30–60 секунд переподключается — смотрите на inactivitytimeout. Если сервер не присылает данные дольше этого значения (в секундах), OScam считает соединение мёртвым и реконнектится. Для нагруженных серверов увеличьте до 120–180.

Также проверьте, не используется ли один аккаунт с нескольких устройств одновременно. Большинство серверов ограничивают число одновременных подключений на аккаунт. Второе подключение просто выбивает первое — получается бесконечный реконнект.

Конфликт caid/ident и пустой ECM

Если у вас несколько ридеров с одинаковым CAID — OScam будет маршрутизировать ECM по приоритетам и весам. Это нормально, но если настройки конфликтуют, один ридер может перехватывать все запросы, а другой простаивать. Параметры priority и weight в [reader] управляют этим поведением. Если не хотите разбираться — просто разнесите ридеры по разным group и назначьте каждому аккаунту нужную группу явно.

Как выбрать источник ключей: критерии без привязки к конкретным сервисам

Стабильность аптайма и время ответа ECM

Хороший источник для icam oscam — это прежде всего стабильное время ответа ECM. Ориентир: среднее значение в логах ниже 300 мс, пики не превышают 600–700 мс. Если в ECM-логах постоянно мелькают значения 1500–3000 мс — источник перегружен или географически далеко от вас.

Аптайм должен быть выше 99% на дистанции хотя бы нескольких недель. Проверить это на этапе выбора сложно, но косвенный признак — наличие мониторинга на стороне провайдера и история реконнектов в вашем логе после нескольких дней работы.

Поддержка нужного протокола и caid

Перед подключением уточняйте у источника: явно поддерживается ли iCAM, какой именно ключ и его длина (8 байт для DES, 16 для AES-128), и какие CAID доступны. Если провайдер не может назвать конкретный CAID и ident — это плохой знак.

Также важно: источник должен предоставить полные данные для конфига — хост, порт, логин, пароль, ключ. Если какого-то параметра нет — связка не заработает, и это не ваша ошибка в настройке.

Прозрачность параметров подключения

Качественный источник даёт готовый блок [reader] или хотя бы все параметры списком. Если вам говорят "подключитесь и само заработает" без конкретики — вероятность проблем высокая. И отдельный момент: любое использование кардшеринга законно только для легально оплаченных вами подписок. Использование чужих подписок — это нарушение закона вне зависимости от технической реализации.

Частые вопросы

Какую версию OScam нужно собрать для поддержки iCAM?

Поддержка iCAM зависит от флагов компиляции, а не только от версии. Проверьте командой oscam --build-info — ищите WITH_ICAM или reader-icam в выводе. Альтернативно — раздел Status → About в веб-интерфейсе. Актуальные сборки с включённым iCAM есть в официальном SVN OScam. Ревизии старше 11700 лучше не использовать — там встречались баги с реконнектом в iCAM-ридерах.

Где находятся конфигурационные файлы OScam?

Зависит от прошивки и параметра -c при запуске. Типичные пути: /etc/tuxbox/config/oscam/ на Enigma2 (Dreambox, VU+), /var/etc/oscam/ на OpenPLi/OpenATV, /usr/keys/ на некоторых старых прошивках, /etc/oscam/ при ручной установке. Реальный путь смотрите в выводе ps aux | grep oscam — там будет параметр -c.

Почему ридер в статусе CONNECTED, но каналы не декодируются?

Почти всегда это несовпадение group между блоком [reader] и блоком [account]. Проверьте, что значения group пересекаются. Второй вариант — в [reader] прописаны caid или ident, которые не соответствуют нужному каналу. Включите loglevel = 255 и смотрите, приходят ли ECM-запросы на этот ридер — если строк с ECM нет, проблема в маршрутизации, а не в соединении.

Как включить подробный лог для отладки iCAM?

В oscam.conf, секция [global]: установите loglevel = 255 и задайте logfile = /var/log/oscam.log. После этого перезапустите OScam и смотрите лог через tail -f /var/log/oscam.log. После отладки верните loglevel = 1 — при 255 лог очень быстро растёт и забивает место на диске.

Какой порт использует iCAM-ридер и как проверить его доступность?

Порт задаётся в строке device = host,port блока [reader] — конкретное значение предоставляет ваш источник ключей. Стандартного порта для iCAM нет. Проверить доступность: nc -zv host port или telnet host port. Если получаете "Connection refused" — либо порт закрыт на сервере, либо фаервол блокирует. Если "No route to host" — сетевая проблема, проверяйте NAT и маршрутизацию.

Что делать при постоянных reconnect и таймаутах?

По порядку: проверьте стабильность сети (пинг до хоста ридера), убедитесь в правильности обменного ключа и пароля, увеличьте reconnecttimeout до 60 и inactivitytimeout до 120. Исключите одновременное использование одного аккаунта с нескольких устройств — большинство серверов выбивает дублирующее подключение. Проверьте время на ресивере — расхождение с сервером более 60 секунд может ломать iCAM-хэндшейк.

Практические советы для стабильного просмотра

Даже самая стабильная линия 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 или внешние мониторы.