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. Чек-лист по порядку:
- Проверьте
groupв [reader] и [account] — они должны пересекаться. - Убедитесь, что CAID канала поддерживается ридером — смотрите в веб-интерфейсе, какие CAID сообщает ридер.
- Если в [reader] прописан
caid, убедитесь, что он совпадает с CAID нужного канала. - Включите 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 или внешние мониторы.