iCam в OScam: настройка протокола и конфигов
Если ты уже потратил пару часов на поиски «протокола iCam» и не нашёл ничего внятного — это нормально. Большинство статей по теме icam oscam либо описывают давно устаревшие версии, либо вообще путают iCam с отдельным программным обеспечением. На деле всё проще и одновременно чуть хитрее: iCam — это клиентское название для подключения по протоколу newcamd, и настраивается оно в OScam ровно так же, как обычный newcamd-ридер. Ниже — разбор от первой строчки конфига до работающего ECM.
Что такое iCam и его место среди протоколов OScam
iCam не является отдельным протоколом в техническом смысле. Это клиентская реализация (и одновременно маркетинговое название линии) на основе newcamd357 — одного из вариантов протокола newcamd с 14-байтным DES-ключом для шифрования обмена. В OScam нет отдельной опции protocol = icam. Всё, что нужно — прописать protocol = newcamd в секции [reader], и это будет работать.
Путаница возникает потому, что поставщики линий часто называют свой продукт «iCam-линией» или «iCam-сервером», что создаёт впечатление какого-то особого формата. Но под капотом — стандартный newcamd-сокет с согласованием ключа при подключении.
iCam как разновидность newcamd (порт-протокол 525/newcamd357)
Классический newcamd работает на портах из диапазона 510–560, хотя конкретный порт всегда задаёт серверная сторона. Для iCam-линий чаще всего встречаются порты 525, 527, 530 — но это не стандарт, а просто распространённая практика. Точный порт ты получаешь от поставщика вместе с логином, паролем и DES-ключом. Без этих данных гадать по форумам бессмысленно.
Формат newcamd357 отличается от старого newcamd509 длиной ключа: 14 байт против других вариантов. Если ключ указан неправильно — соединение установится, но CW (Control Words) расшифровываться не будут. Об этом подробнее в разделе про ошибки.
Отличие iCam от CCcam и mgcamd по логике обмена ECM/EMM
CCcam использует собственный бинарный протокол с другим форматом handshake и иначе организованным пулом карт. mgcamd — ещё одна реализация с немного другой логикой маршрутизации запросов. Newcamd (и iCam как его вариант) работает по схеме «один ридер — один сервер»: клиент подключается напрямую к серверу, сервер авторизует его и начинает отвечать на ECM-запросы.
В OScam это означает, что каждая iCam-линия прописывается как отдельный [reader] в oscam.server. Нет никакого общего пула как в CCcam-клиенте — только точка-точка.
Когда имеет смысл использовать именно iCam-ридер
Если поставщик выдаёт тебе данные именно в формате newcamd/iCam — выбора нет, используешь его. Но если есть возможность выбрать протокол, newcamd хорош для случаев, когда нужна предсказуемая задержка: он не переусложнён, и ECM time обычно получается ниже, чем у некоторых CCcam-реализаций с большими пулами карт.
Настройка ридера iCam в oscam.server
Файл oscam.server — основное место, где прописываются все ридеры. В зависимости от сборки OScam и образа ресивера путь к нему может быть разным:
/etc/tuxbox/config/oscam.server— стандартный путь для большинства образов Enigma2 (OpenATV, OpenPLi, DreamElite)/var/etc/oscam.server— встречается в некоторых сборках для VU+, Xtrend/usr/keys/oscam.serverили/var/keys/oscam.server— нестандартные пути в отдельных кастомных образах
Перед правкой обязательно проверь реальное расположение через find / -name oscam.server 2>/dev/null. Если редактируешь не тот файл — изменения просто игнорируются, и потом долго ищешь где ошибка.
Полная секция [reader] с protocol = newcamd
Вот рабочий шаблон для icam oscam-ридера:
[reader]
label = icam_line1
protocol = newcamd
device = your.server.host,525
key = 0102030405060708091011121314
user = your_login
password = your_password
group = 1
caid = 0500
ident = 0500:041800
audisabled = 1
reconnecttimeout = 15
lb_weight = 100
Это минимально рабочий блок. Ниже разберём каждое поле.
Параметры key, device, user, password и group
label — произвольное имя ридера. Используй латиницу без пробелов. Это имя потом видно в веб-интерфейсе.
protocol = newcamd — именно так указывается iCam в OScam. Никаких icam, newcamd357 и прочих вариантов в этом поле нет.
device — принимает хост и порт через запятую без пробелов: host,port. Если поставщик дал IP-адрес — вставляй IP. Но если у сервера динамический IP, рано или поздно соединение упадёт и не восстановится. Лучше просить DNS-имя у поставщика и использовать его — OScam переразрешит имя при переподключении.
key — 14 байт DES-ключа, записанных подряд в hex без пробелов и разделителей. Итого 28 символов. Пример: 0102030405060708091011121314. Частая ошибка — вставить ключ с пробелами (01 02 03 04...) или указать 16 байт вместо 14. OScam в таком случае может принять конфиг без ошибки, но декодирования не будет.
user / password — логин и пароль, которые выдаёт поставщик. Регистр имеет значение.
group — числовой идентификатор группы. Ридер и аккаунт в oscam.user должны принадлежать одной группе, иначе маршрутизация ECM не заработает. Можно указать несколько через запятую: group = 1,2.
Указание CAID, ident и onbad для фильтрации
caid — идентификатор системы условного доступа в hex. Например, 0500 для Viaccess, 1702 для Nagravision, 0604 для Irdeto. Если линия поддерживает несколько CAID — перечисли через запятую.
ident — уточнение до конкретного провайдера внутри CAID. Формат: CAID:ProviderID. Например, 0500:041800. Без этого OScam будет слать на ридер все ECM с нужным CAID, а сервер будет часть из них отклонять. Указание ident снижает нагрузку и ускоряет ответы.
audisabled = 1 — отключает EMM-обновления авторизации. Для большинства клиентских линий это правильно: ты не управляешь картой, только читаешь с неё CW.
Связка ридера с oscam.user и выдача каналов
Даже при правильно настроенном ридере каналы не откроются, если аккаунт в oscam.user не связан с ридером через group. Это самая частая причина ситуации «ридер CONNECTED, декодирования нет».
Совпадение group между [reader] и [account]
Файл oscam.user лежит рядом с oscam.server — в том же каталоге. Минимальный рабочий аккаунт выглядит так:
[account]
user = local_user
pwd = local_pass
group = 1
au = 1
uniq = 0
Значение group = 1 в [account] должно совпадать с group = 1 в [reader]. OScam использует группы как механизм маршрутизации: ECM от аккаунта идёт только в ридеры той же группы. Если группы не совпадают — ридер просто не получает запросы.
Параметры au, services и chid
au = 1 — разрешает авторизационные обновления для этого аккаунта. Для локального использования обычно нужно.
services — опциональный фильтр по списку сервисов из oscam.services. Если не заполнен — аккаунт получает доступ ко всему, что отдаёт ридер.
chid — фильтр по конкретным channel ID. Редко нужен на клиентской стороне, но иногда поставщик ограничивает набор каналов на серверной стороне по CHID — тогда прописывать его здесь бессмысленно.
Проверка через веб-интерфейс OScam (порт 8888/16002)
Включить веб-интерфейс можно в oscam.conf (путь тот же каталог, что и остальные конфиги):
[webif]
httpport = 8888
httpuser = admin
httppwd = admin
httprefresh = 10
После перезапуска OScam открывай http://IP_ресивера:8888 в браузере. В разделе Readers ищи свой ридер по label. Зелёный статус CONNECTED с указанием карты — хорошо. Жёлтый TRYING — соединение не установлено. Красный — ошибка аутентификации или недоступный хост.
ECM time (время ответа на запрос декодирования) в норме — от 50 до 500 мс. Если видишь тысячи миллисекунд или таймауты — проблема либо в сети, либо на стороне сервера.
Отладка подключения iCam: чтение логов и статусов
Веб-интерфейс показывает агрегированный статус. Для реальной диагностики нужен лог. По умолчанию он или пишется в файл, или вообще отключён — зависит от конфига.
Включение debug-уровня в oscam.conf (loglevel, cwlogdir)
В секции [global] файла oscam.conf:
[global]
logfile = /tmp/oscam.log
loglevel = 64
maxlogsize = 500
cwlogdir = /tmp/cw
Для диагностики подними loglevel до 255 временно — это включает всё, включая debug newcamd-соединений. После решения проблемы верни на 64 или 0, иначе лог забьёт диск за пару часов на активном сервере.
Смотреть лог в реальном времени: tail -f /tmp/oscam.log. При подключении нового ридера icam oscam ты увидишь последовательность: попытка соединения → handshake → статус карты.
Расшифровка статусов: CONNECTED, CARD INSERTED, NO CARD
CONNECTED — TCP-соединение установлено, ключ согласован. Это ещё не означает, что карта есть и работает.
CARD INSERTED — сервер сообщил о наличии карты. Хороший знак.
NO CARD — соединение есть, но сервер не сообщает о карте. Либо карта физически не вставлена на сервере, либо для твоего аккаунта она не открыта.
В логе при корректном подключении увидишь строки типа:
reader icam_line1 [newcamd] connecting to your.server.host (port 525)
reader icam_line1 [newcamd] connection established
reader icam_line1 [newcamd] card system: Viaccess, CAID: 0500
Анализ ECM time и кодов ответа (rc) в логе
Каждый ECM-запрос в логе сопровождается кодом rc (reason code). Основные значения:
- rc=0 (FOUND) — CW получен успешно, канал должен открыться
- rc=1 (CACHE1) — ответ взят из кэша
- rc=2 (CACHE2) — ответ из второго уровня кэша
- rc=3 (READER) — ответ пришёл от ридера
- rc=4 (NOT FOUND) — ридер не смог расшифровать ECM
- rc=7 (TIMEOUT) — ридер не ответил вовремя
- rc=E (ERR) — ошибка на стороне ридера
Если видишь постоянные rc=4 — скорее всего CAID/ident не совпадает с тем, что реально отдаёт сервер. Rc=7 — проблема с задержкой или фаерволом.
Типичные ошибки и что НЕ работает
Пройдёмся по граблям, на которые наступает большинство при первой настройке icam oscam.
Неверный DES-ключ: connect есть, decode нет
Это самая коварная ситуация. Newcamd-протокол устроен так, что handshake проходит успешно даже с неверным ключом — соединение устанавливается, статус CONNECTED появляется. Но все CW будут зашифрованы неверно, и OScam просто не сможет их расшифровать. В логе при этом никакой явной ошибки нет — просто нет успешных ECM.
Проверяй ключ тщательно. Распространённые форматы, которые НЕ работают в поле key:
01 02 03 04 05 06 07 08 09 10 11 12 13 14(с пробелами)01:02:03:04:05:06:07:08:09:10:11:12:13:14(с двоеточиями)- 16 байт вместо 14 (32 символа в hex вместо 28)
Правильно: 01020304050607080910111213 — 28 символов, без разделителей. Буквы в hex могут быть в любом регистре.
Конфликт CAID/ident и фильтрация на стороне сервера
Бывает, что поставщик линии предоставляет доступ только к части CAID или только к определённым провайдерам внутри CAID. Если в oscam.server прописать caid = 0500, а сервер реально отдаёт только 0500:041800, то запросы для других провайдеров в рамках Viaccess будут уходить на ридер и возвращаться с rc=4.
Решение — уточнять ident до реального набора от поставщика. Это и снизит нагрузку, и уберёт мусорные ответы из лога.
Ещё один кейс — несколько iCam-ридеров с одинаковым CAID. OScam будет балансировать между ними, и если один из них медленнее или нестабильнее, будут фризы. Настрой lb_weight: для более быстрого ридера поставь выше (например 200 против 100), и OScam будет отправлять на него больше запросов.
Проблемы с фаерволом и NAT на нестандартном порту
Если ридер застрял в статусе TRYING и никуда не двигается — первым делом проверяй исходящий порт. На многих домашних роутерах и у некоторых провайдеров нестандартные порты (525, 527 и подобные) могут быть заблокированы.
Быстрая проверка с Linux-сервера или ресивера: telnet your.server.host 525 или nc -zv your.server.host 525. Если соединение не устанавливается — проблема на уровне сети, OScam здесь ни при чём.
На ресиверах за NAT иногда нужно явно разрешить исходящий трафик в iptables. Проверь: iptables -L OUTPUT -n. Если там есть жёсткие политики DROP для исходящего — добавь правило для нужного порта.
И отдельно про динамический IP сервера: если поставщик выдал тебе IP-адрес напрямую, а не DNS-имя — при смене IP у поставщика соединение упадёт и не восстановится, пока ты вручную не обновишь device в конфиге. Проси DNS-имя или договаривайся о статическом IP.
Чем iCam отличается от обычного newcamd в OScam?
По сути — ничем. iCam — это клиентское/коммерческое название для линий, работающих на протоколе newcamd357. В OScam нет отдельного типа protocol = icam: всё настраивается через protocol = newcamd. Логика обмена ECM идентична обычному newcamd, разница только в том, какой порт и ключ выдаёт конкретный поставщик.
Какой порт указывать для iCam-ридера?
Порт всегда определяет серверная сторона — он передаётся вместе с логином, паролем и DES-ключом. Никакого фиксированного стандарта нет. Часто встречается диапазон 525–530, но это просто практика, не спецификация. В поле device пишется host,port через запятую без пробелов.
Почему ридер показывает CONNECTED, но каналы не открываются?
Три самые частые причины: неверный 14-байтный DES-ключ (соединение есть, но CW не расшифровываются), несовпадение значения group между oscam.server и oscam.user (ECM просто не маршрутизируются на ридер), либо сервер не отдаёт CAID/ident, который прописан в конфиге. Смотри rc-коды в логе с loglevel = 255.
Где лежат конфиги OScam для настройки iCam?
Основные файлы — oscam.conf, oscam.server, oscam.user — в большинстве Enigma2-образов находятся в /etc/tuxbox/config/. В некоторых сборках для VU+ и Xtrend — в /var/etc/. Отдельные кастомные образы кладут конфиги в /var/keys/ или /usr/keys/. Реальный путь проще всего найти командой find / -name oscam.server 2>/dev/null.
Как проверить, что iCam-линия рабочая?
Через webif OScam по адресу http://IP:8888: ридер должен показывать статус CONNECTED, рядом — информацию о карте (CARD INSERTED). ECM time в норме — от 50 до 500 мс. Если видишь CONNECTED без карты или постоянные таймауты — проблема на стороне поставщика или в конфигурации CAID/ident.
Можно ли подключить iCam-ридер на порт CCcam?
Нет. Протоколы несовместимы на уровне формата обмена данными. CCcam использует свой проприетарный бинарный протокол с другим handshake и структурой пакетов. iCam/newcamd — совершенно другой формат. Попытка подключить newcamd-ридер к CCcam-порту просто не установит соединение, ридер будет вечно в TRYING.
Практические советы для стабильного просмотра
Даже самая стабильная линия 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 или внешние мониторы.