Кардшаринг: настройка кодировок Viaccess, Irdeto, Seca
Если вы уже установили CCcam или OScam и упёрлись в то, что одни каналы открываются, а другие нет — скорее всего, дело в кодировке. Кардшаринг кодировки Viaccess Irdeto Seca работают по принципиально разным механизмам, и конфиг, который отлично работает под Viaccess, может вообще не реагировать на Irdeto. Разберём это по-человечески: что за зверь каждая кодировка, как правильно прописать ридеры и где искать причину фризов.
Чем отличаются кодировки Viaccess, Irdeto и Seca в кардшаринге
Первое, что нужно понять — каждая кодировка имеет свой CAID (Conditional Access Identifier). Это числовой идентификатор, по которому ресивер и шаринг-сервер понимают, какую систему доступа запрашивать. Без совпадения CAID запрос просто не дойдёт до нужного ридера.
CAID и идентификаторы провайдеров для каждой кодировки
Три основных диапазона, которые нужно знать наизусть:
- Seca / Mediaguard — CAID начинается с
0x0100(диапазон 0100–01FF) - Viaccess — CAID
0x0500(диапазон 0500–05FF) - Irdeto — CAID
0x0600(диапазон 0600–06FF)
Но одним CAID дело не ограничивается. У каждого провайдера внутри кодировки есть свой ident — провайдерский идентификатор. Например, для Viaccess это может быть 0500:032830 или 0500:042800. Если в ридере прописан неверный ident — запрос уйдёт в никуда. OScam его просто отклонит с пометкой ECM rejected.
Версии: Viaccess 3.0/4.0/5.0, Irdeto 1/2, Seca/Mediaguard 1/2/3
Внутри каждой кодировки есть версии, и это не просто маркетинговые числа — они влияют на структуру ECM-пакета.
Viaccess 3.0 и 4.0 встречаются чаще всего на старых европейских пакетах. Viaccess 5.0 появился с усиленным шифрованием, и конфиги, написанные под 3.0, часто не работают — протокол обмена ключами там другой. Если источник предоставляет карту Viaccess 5.0, а у вас в OScam прописан старый ident от 3.0 — канал не откроется даже при правильном CAID.
Irdeto 1 и Irdeto 2 — разные версии алгоритма. Irdeto 2 значительно сложнее с точки зрения обработки ECM. Плюс у Irdeto есть неприятная особенность: ident может динамически меняться — провайдер обновляет ключи, и вчера рабочий конфиг сегодня даёт card not found. Это не баг вашего ресивера, это намеренная защита.
Seca/Mediaguard 3 требует заметно больше ресурсов при обработке ECM по сравнению с Seca 1 и 2. На слабых ресиверах это может выражаться в задержках при переключении каналов даже при хорошем пинге до источника.
Как кодировка влияет на ECM-интервал и нагрузку на карту
ECM (Entitlement Control Message) — это зашифрованный пакет, который ресивер отправляет на сервер каждые несколько секунд, чтобы получить ключ расшифровки. Разные кодировки имеют разный интервал обновления ключей.
Seca/Mediaguard обновляет ключи каждые 10 секунд, Viaccess — примерно столько же, Irdeto бывает агрессивнее — иногда каждые 5-7 секунд. Чем короче интервал, тем выше нагрузка на карту и на сетевой канал. На перегруженном источнике именно Irdeto-каналы начинают фризить первыми в прайм-тайм.
Настройка CCcam под Viaccess, Irdeto и Seca
CCcam хранит конфиг в /var/etc/CCcam.cfg или /etc/CCcam.cfg — зависит от прошивки ресивера. На большинстве Enigma2-боксов это именно /var/etc/CCcam.cfg. Открываем, смотрим структуру.
Структура CCcam.cfg и параметр C: line
Строка подключения к источнику выглядит так:
C: hostname.example.com 12000 mylogin mypassword
Где 12000 — порт (стандартный для CCcam протокола), далее логин и пароль. Хост, логин и пароль — всё это предоставляет источник. Никаких реальных адресов здесь быть не должно, это только шаблон.
После подключения CCcam автоматически получает список доступных CAID от источника. Но «автоматически» не значит «правильно». Если источник раздаёт несколько CAID, CCcam может неправильно маршрутизировать запросы без дополнительных настроек.
Указание CAID и ident в строках подключения
В CCcam можно ограничить C: line конкретными CAID через блок фильтрации. Это делается через параметр IGNORE CAID или через CAID PRIO в конфиге:
CAID PRIO: 0500
IGNORE CAID: 0600:000000
Но честно — CCcam в этом плане менее гибкий, чем OScam. Тонкую фильтрацию по ident в нём делать сложнее. Если нужна точная маршрутизация по кодировке — лучше смотреть в сторону OScam.
Параметры F: line для отдачи и ограничения по CAID
F: line — это то, что вы раздаёте клиентам. Пример:
F: clientlogin clientpassword 1 0 0 0 { 0500:000000 }
Фигурные скобки в конце — фильтр по CAID. Если написать { 0500:000000 } — клиент получит доступ только к Viaccess-каналам. Можно перечислить несколько:
F: clientlogin clientpassword 1 0 0 0 { 0500:000000 0100:000000 }
Ноль в ident означает «любой провайдер внутри этого CAID». Если нужно ограничить до конкретного — подставьте реальный ident вместо нулей.
Настройка OScam: oscam.server и oscam.conf для разных кодировок
OScam — это другой уровень гибкости. Здесь каждый источник — отдельный [reader] в файле oscam.server, и для каждой кодировки можно настроить всё до деталей. Конфиги лежат в /etc/tuxbox/config/oscam/ или /var/etc/oscam/ — смотрите, какая папка существует на вашем ресивере.
Секция [reader] и параметры caid, ident, group
Вот пример ридера для Viaccess:
[reader]
label = viaccess_source
protocol = cccam
device = hostname.example.com,12000
user = mylogin
password = mypassword
caid = 0500
ident = 0500:032830,0500:042800
group = 1
reconnecttimeout = 30
А вот для Irdeto — отдельный ридер:
[reader]
label = irdeto_source
protocol = cccam
device = hostname.example.com,12001
user = mylogin2
password = mypassword2
caid = 0600
ident = 0600:000000
group = 2
reconnecttimeout = 30
Параметр group — ключевой для маршрутизации. Ридеры с разными группами не конкурируют между собой без явного разрешения. Это важно — без группировки OScam может отправить Irdeto-запрос в Viaccess-ридер, получить отказ и зависнуть на таймауте.
Параметр ident — это фильтр. Если ident не совпадает с тем, что в ECM-запросе — OScam не будет даже пробовать этот ридер. Для Irdeto с динамической сменой ident можно указать 0600:000000 (любой ident внутри CAID), но тогда вырастет нагрузка на ридер.
oscam.conf: настройка протоколов cccam/newcamd
В oscam.conf прописываются протоколы, которые OScam слушает. Если раздаёте на Enigma2-ресивер по CCcam:
[cs357x]
port = 16001
[cccam]
port = 12000
version = 2.3.0
reshare = 0
Если используете newcamd для клиентских подключений:
[newcamd]
port = 14000@0500:000000
key = 0102030405060708091011121314
Обратите внимание на формат порта в newcamd: port@CAID:ident. Для newcamd можно открыть разные порты под разные кодировки — один под Viaccess, другой под Seca. CCcam в этом плане проще, но менее точный.
oscam.user и oscam.services для фильтрации по CAID
Файл oscam.services позволяет создать именованные группы каналов. Например:
[viaccess_channels]
caid = 0500
ident = 0500:032830
[irdeto_channels]
caid = 0600
ident = 0600:000000
А в oscam.user для каждого клиента указываем, к каким сервисам он имеет доступ:
[account]
user = client1
password = pass123
group = 1,2
services = viaccess_channels
Это не даёт клиенту лезть в Irdeto-ридеры, даже если технически он мог бы. Хорошая практика — особенно если у вас несколько клиентов с разными правами доступа.
Логи /var/log/oscam.log и отладка ECM
Основной инструмент диагностики — лог. На большинстве систем это /var/log/oscam.log или вывод через веб-интерфейс на порту 8888.
Включите детальное логирование в oscam.conf:
[global]
logfile = /var/log/oscam.log
maxlogsize = 500
debuglevel = 64
debuglevel = 64 — это ECM-уровень. Будут видны все запросы: какой CAID пришёл, в какой ридер ушёл, какой ответ получен и за сколько миллисекунд.
Решение проблем: каналы не открываются по кодировке
Алгоритм диагностики всегда одинаковый. Сначала смотрим инфо канала прямо на ресивере — там видны CAID и SID. Сверяем с тем, что прописано в ридерах. Потом идём в лог и смотрим, что происходит с ECM-запросами.
Ошибка 'card not found' и несовпадение CAID/ident
Самая частая причина — несовпадение ident. В логе это выглядит так:
ECM rejected by reader irdeto_source (no matching service)
Или так:
no reader found for ECM 0600:A001:1234
Здесь A001 — это ident, который пришёл в ECM. Если в вашем ридере прописан 0600:B002, а в ECM пришёл A001 — OScam этот запрос отклонит. Решение: либо добавить нужный ident в ридер, либо поставить 0600:000000 для приёма любого ident этой кодировки.
С Irdeto особая проблема — ident может меняться при обновлении ключей провайдером. Конфиг, который работал неделю назад, внезапно даёт card not found. В таком случае нужно уточнять актуальный ident у источника.
Фризы и долгий ECM time — диагностика по логам
Норма ECM time — до 300-400 мс. Это время от отправки запроса до получения ключа. При таком значении переключение каналов практически мгновенное.
400-800 мс — уже заметно, но терпимо. Свыше 800-1000 мс начинаются фризы и рассыпание картинки. При 1500+ мс канал просто не открывается или открывается через 3-4 секунды.
Причины долгого ECM time бывают разные. Высокий пинг до источника — самое очевидное. Но бывает перегрузка источника в прайм-тайм: вечером с 20:00 до 23:00 ECM time растёт вдвое, хотя конфиг не менялся. Это не ваша проблема — это проблема источника, у которого слишком много клиентов на одну карту.
Ещё вариант — Seca/Mediaguard 3 с тяжёлой обработкой ECM. Здесь даже при хорошем пинге карта может долго считать ответ. Решение — источник с более мощным оборудованием.
Конфликт нескольких ридеров на одну кодировку
Если у вас два ридера с одинаковым CAID без разделения по группам и ident — OScam начнёт отправлять запросы в оба. Первый ответивший выигрывает, второй тратит ресурсы впустую. Хуже — если один ридер медленнее, OScam может приоритизировать его, и вы будете получать ключи с задержкой.
Решение — параметр cto (card timeout) и явная группировка:
[reader]
label = viaccess_primary
caid = 0500
group = 1
cto = 300
[reader]
label = viaccess_backup
caid = 0500
group = 2
cto = 300
А в клиентском аккаунте прописать приоритет группы: group = 1,2 — OScam сначала пробует группу 1, и только при неответе переходит к группе 2.
Отдельная ситуация — симулькрипт-каналы, которые одновременно зашифрованы несколькими кодировками. Ресивер шлёт ECM для всех доступных CAID. Важно явно указать приоритет: например, через oscam.conf параметр preferlocalcards = 1 — если есть локальная карта, OScam не будет лезть в сетевые источники.
Проверка через oscam webif и cccam info
Веб-интерфейс OScam доступен по адресу http://[IP-ресивера]:8888. Там в разделе Readers видно состояние каждого ридера: подключён/нет, последний ECM time, количество обработанных запросов.
В разделе Services можно посмотреть, какие CAID и ident получены от источника — это помогает понять, что вообще доступно. Если нужного CAID в списке нет — проблема на стороне источника, а не конфига.
Для CCcam есть плагин CCcam Info на ресиверах Enigma2. Он показывает список активных C: lines, их статус и список CAID. Если строка красная — нет подключения. Если зелёная, но канал не открывается — проблема в фильтрации по CAID или ident.
Как выбрать источник кардшаринга под нужную кодировку
Кардшаринг кодировки Viaccess Irdeto Seca поддерживаются разными источниками в разной степени. Один может отлично раздавать Viaccess, но иметь проблемы с Irdeto. Критерии выбора — чисто технические.
Критерии стабильности: аптайм и ECM time
Нормальный источник должен иметь аптайм не ниже 99%. Это значит не более 7-8 часов простоя в месяц суммарно. Проверить это заранее сложно, но можно попросить тестовый период — 24-48 часов достаточно, чтобы оценить стабильность.
ECM time на тестовом периоде нужно мерить не только днём, но и вечером — в прайм-тайм нагрузка максимальная. Если днём 150 мс, а в 21:00 уже 900 мс — источник перегружен и не масштабируется под нагрузку.
Поддержка нужных CAID и провайдеров
Прежде чем тестировать — спросите явно: какие CAID и ident поддерживаются? Хороший источник предоставит конкретный список вида 0500:032830, 0600:A001, 0100:000000. Если ответ расплывчатый — «все кодировки, всё работает» — это красный флаг.
Для Viaccess 5.0 и Seca/Mediaguard 3 — уточните версию отдельно. Старые источники могут не поддерживать новые версии кодировок, даже если CAID совпадает.
Локальность сервера и пинг до источника
Пинг — это половина ECM time. Если до источника 200 мс пинга, то ECM time минимум 400 мс — уже на грани. Оптимально — сервер в той же стране или соседней, пинг до 30-50 мс.
Проверить пинг просто: ping hostname.example.com из терминала ресивера. Если пинг стабильный — хорошо. Если скачет от 20 до 300 мс — у источника проблемы с каналом, и ECM time будет непредсказуемым.
И последнее: лимит подключений на аккаунт должен соответствовать реальному количеству ваших устройств. Один аккаунт — один ресивер. Попытка подключить три ресивера на один аккаунт обычно даёт нестабильность или отключение.
Какой CAID соответствует кодировкам Viaccess, Irdeto и Seca?
Seca/Mediaguard — CAID 0x0100, Viaccess — 0x0500, Irdeto — 0x0600. Но одного CAID недостаточно: внутри каждой кодировки у каждого провайдера есть свой ident — например, 0500:032830. Этот ident тоже нужно прописывать в параметре ident секции [reader] в OScam, иначе запросы уйдут мимо нужного ридера.
Почему канал на Viaccess открывается, а на Irdeto нет?
Чаще всего — несовпадение ident в ридере. Идёт в лог, ищем строку «ECM rejected» или «no reader found» с CAID 0600. Второй вариант — у источника просто нет нужного ident для этого Irdeto-провайдера. Третья причина — фильтрация по CAID в F: line (CCcam) или в oscam.user: клиент настроен только на 0500, а 0600 заблокирован.
Где находятся конфиги CCcam и OScam?
CCcam.cfg обычно в /var/etc/CCcam.cfg или /etc/CCcam.cfg — зависит от прошивки. OScam хранит конфиги в директории: /etc/tuxbox/config/oscam/ либо /var/etc/oscam/. Внутри — четыре основных файла: oscam.conf, oscam.server, oscam.user, oscam.services.
Какой ECM time считается нормальным?
До 300-400 мс — хорошо, переключение каналов практически мгновенное. 400-800 мс — терпимо, небольшая задержка при переключении. Свыше 800-1000 мс начинаются фризы и артефакты. При 1500+ мс канал либо вообще не открывается, либо зависает на несколько секунд. Причины: высокий пинг, перегрузка источника в прайм-тайм, неверный ident, тяжёлая кодировка (Seca 3).
Можно ли на одном OScam обслуживать сразу Viaccess, Irdeto и Seca?
Да, именно так и делается. Создаёте несколько секций [reader] — по одной на каждый источник с нужным CAID. Разделяете по группам: Viaccess в group = 1, Irdeto в group = 2, Seca в group = 3. В oscam.services создаёте именованные наборы по кодировке. В oscam.user назначаете клиентам нужные группы и сервисы. OScam сам маршрутизирует каждый ECM-запрос в правильный ридер.
Какой протокол выбрать — CCcam или newcamd для разных кодировок?
Протокол не привязан к кодировке. CCcam удобнее, когда источник раздаёт несколько CAID одновременно — всё приходит по одному подключению. Newcamd точнее настраивается под конкретный CAID:ident — в строке порта явно указываете, что этот порт только для 0500:032830. Выбор определяется тем, что поддерживает ваш источник, а не кодировкой канала.