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-хэндшейк.
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.