OScam EMM error: решение ошибок обновления ключей

Главная Статьи OScam EMM error: решение ошибок обновления ключей

Дата публикации

30.06.2026

OScam EMM error: решение ошибок обновления ключей

Если у вас в логах OScam замелькали строки вроде EMM rejected или card not accepting emm — не паникуйте сразу. OScam: EMM error решение часто оказывается проще, чем выглядит, но сначала надо понять, что именно происходит. Иногда это реальная поломка, иногда — штатное поведение, которое люди принимают за ошибку. Разберём по шагам.

Что такое EMM в OScam и почему возникает ошибка

EMM — Entitlement Management Message. Это сообщения, которые провайдер рассылает для обновления прав доступа и ключей прямо на вашу карту. Без них карта рано или поздно перестаёт расшифровывать каналы — ключи устаревают.

ECM (Entitlement Control Message) — другое. Это запросы на расшифровку конкретного транспортного потока в реальном времени. ECM — то, что летит постоянно при просмотре. EMM — редкие обновления, которые меняют состояние самой карты.

EMM против ECM: в чём разница

ECM обрабатывается на лету: пришёл запрос, карта вернула ключ (CW), канал открылся. Это происходит каждые несколько секунд. EMM работает иначе — это команды провайдера, адресованные конкретной карте или группе карт, чтобы обновить права или поменять мастер-ключ.

Если ECM не работает — канал не открывается вообще. Если EMM не проходят — сначала всё нормально, но через некоторое время ключи устаревают и карта перестаёт отвечать на ECM. Вот почему люди иногда не замечают проблему сразу.

Как выглядит ошибка EMM в логах

Типовые строки, которые вы увидите в oscam.log:

  • EMM error — общая ошибка обработки пакета
  • emm filter или skipped emm — EMM отфильтрован по настройкам
  • EMM rejected — карта отклонила пакет
  • card not accepting emm — карта не принимает этот тип EMM
  • EMM not written — запись не прошла

Каждая из этих строк означает разное. skipped emm — это часто нормально. EMM rejected с нулевым счётчиком успешных записей — уже повод копать глубже.

Глобальные и адресные (shared/unique) EMM

Провайдеры рассылают EMM трёх типов. Global — широковещательные, адресованы всем картам сразу. Shared — групповые, для части карт. Unique — персональные, адресованы конкретной карте по серийному номеру.

OScam по умолчанию может фильтровать некоторые типы. Параметры blockemm-g, blockemm-s, blockemm-u в конфиге reader как раз управляют тем, какие типы пропускать. Если у вас блокируются unique-EMM, а именно они несут обновление прав для вашей конкретной карты — ключи обновляться не будут.

Диагностика по логам oscam

Прежде чем лезть в конфиги и что-то менять — сначала нормально прочитайте лог. Это правило номер один, и большинство людей его игнорируют, а потом меняют параметры наугад и удивляются, что ничего не помогает.

Пути конфигов зависят от прошивки. На Enigma2/OpenATV это обычно /etc/tuxbox/config/oscam/ или /etc/oscam/. На старых прошивках типа OpenPLi иногда /var/etc/oscam/. Проверьте сами через find / -name oscam.server 2>/dev/null.

Включение детального лога EMM

В секции [global] файла oscam.conf добавьте или проверьте:

[global]
logfile = /var/log/oscam/oscam.log
maxlogsize = 500
debuglevel = 64

Debug-уровень 64 включает детальный вывод EMM. Можно также запустить OScam с ключом -d 64 вручную для тестирования. Через веб-интерфейс (обычно порт 8888) зайдите в раздел Logs → Live Log и включите фильтр по EMM — там видно всё в реальном времени без перезапуска.

Осторожно с maxlogsize: если включить saveemm-unknown и забыть — лог раздуется до нескольких гигабайт за сутки. На embedded-устройствах с маленьким разделом это убивает систему.

Чтение полей CAID, provid, serial

Типичная строка в логе выглядит примерно так:

2026/03/15 14:23:11 s   [r] phoenix  EMM: CAID=0500 provid=040810 serial=A1B2C3D4 len=0133 type=unique rejected

Здесь: CAID=0500 — это идентификатор системы условного доступа (Viaccess). provid=040810 — идентификатор провайдера. serial — серийник карты. Эти значения нужно сопоставить с тем, что прописано в вашем reader в oscam.server. Если provid в логе не совпадает с тем, что стоит в ident — EMM пройти не может.

Где смотреть: oscam.log, webif Live Log, debug-уровни

Есть три способа смотреть логи. Файл oscam.log — основной, пишется постоянно, удобен для анализа после факта. Live Log в webif — удобен для наблюдения в реальном времени, но при высоком debug-уровне браузер может тормозить. И прямой запуск oscam -d 255 в терминале — максимальный вывод, удобен для первичной диагностики на десктопе.

Сначала диагностика, потом правки. Не наоборот.

Настройка приёма EMM в oscam.server

Вот тут начинается самое интересное и где большинство конфигов сделано неправильно. Ключевые параметры reader в файле /etc/oscam/oscam.server:

[reader]
label         = mycard
protocol      = phoenix
device        = /dev/ttyUSB0
caid          = 0500
ident         = 0500:040810,0500:032830
group         = 1
emmcache      = 1,3,2,1
blockemm-unknown = 1
blockemm-u    = 0
blockemm-s    = 0
blockemm-g    = 1
saveemm-u     = 1
saveemm-s     = 1
mhz           = 357
cardmhz       = 357

Разберём каждый параметр по делу.

Параметр emmcache и его формат

Формат: emmcache = enabled,keeptime,count,save. Где enabled — 1 включает кэш. keeptime — время хранения в минутах (обычно 3). count — количество раз, которое один и тот же EMM должен прийти, прежде чем его запишут на карту. save — сохранять кэш на диск (1) или нет (0).

Значение emmcache = 1,3,2,1 — EMM кэшируется, хранится 3 минуты, записывается после 2-го появления, кэш сохраняется. Это разумные дефолты для большинства карт Viaccess и Nagravision. Для Conax иногда меняют count на 1.

disableserverfilter и blockemm/saveemm

Если ваш OScam работает как прокси и стоит между клиентами и картой, может мешать серверный фильтр. В oscam.conf в секции [global] добавьте:

disableserverfilter = 1

Это отключает глобальный фильтр EMM на уровне сервера. Без этого параметра EMM могут резаться ещё до того, как дойдут до reader, и вы будете видеть skipped emm даже при правильных настройках reader.

Параметры blockemm-u, blockemm-s, blockemm-g — блокировка unique, shared, global EMM соответственно. Значение 0 = пропускать, 1 = блокировать. Если блокируете всё подряд "от греха" — карта не обновляется. Логично.

ecmwhitelist и фильтры reader

Параметр ecmwhitelist фильтрует ECM, но косвенно влияет и на то, какие провайдеры считаются "своими" для reader. Если CAID/provid не попадает в белый список — EMM от этого провайдера могут игнорироваться ещё на этапе роутинга.

Проверьте, что в ident прописаны все нужные provid через запятую. Например: ident = 0500:040810,0500:032830,0500:032000. Лишние не мешают, но отсутствующие — ломают.

Разница для local карты и сетевого reader (cccam/newcamd)

И вот самое главное, что большинство руководств замалчивают. EMM принимает только local reader — физическая карта в картоприёмнике, подключённом к вашей машине напрямую. Протокол internal или phoenix/smargo.

Если у вас reader типа protocol = cccam или protocol = newcamd — через него EMM не придут. Вообще. Это не баг, это архитектура: cccam-протокол передаёт только ECM/CW, но не EMM. Удалённый сервер вашу карту не обновит.

Типовые причины EMM error и их устранение

После диагностики логов обычно причина становится очевидной. Вот четыре наиболее частых сценария, с которыми я сталкивался.

Неверный CAID/provid в reader

Самая частая причина. В логе видите EMM с provid=040810, а в oscam.server у вас прописано ident = 0500:032830. Несовпадение — EMM отклоняется ещё на уровне роутинга.

Решение: скопируйте точные значения CAID и provid из лога и пропишите в ident reader. Перезапустите OScam. Проверьте лог — строки rejected должны смениться на written или хотя бы found in cache.

Карта не принимает EMM (read-only / неподходящий пакет)

Иногда card not accepting emm — это не ошибка конфига, а нормальное поведение карты. Некоторые карты работают в read-only режиме в определённых регионах, или конкретный тип EMM (global) не предназначен для вашего пакета подписки.

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

Фильтрация EMM на стороне сервера

Если OScam настроен и как сервер (отдаёт ECM другим клиентам), серверный фильтр может резать входящие EMM до того, как они дойдут до карты. Включите disableserverfilter = 1 в [global] и пересмотрите значения blockemm-* в reader.

Проверка простая: временно выставьте все blockemm-* в 0 и посмотрите на лог. Если EMM пошли — значит проблема была в фильтрах. Потом уже настраивайте точнее под свои нужды.

Проблемы с картоприёмником и таймингами (mhz, cardmhz)

Это редкая, но коварная причина. Картоприёмник на неверной частоте отлично работает для ECM (простые короткие запросы), но сбоит именно на EMM, которые длиннее и требуют стабильной связи.

Типовые значения mhz и cardmhz для разных ридеров: Phoenix/Smargo — 357 или 368. Некоторые карты Viaccess работают лучше на 600. Начните с 357/357, если не работает — попробуйте 368/368, затем 600/600. Параметр mhz — частота интерфейса, cardmhz — частота самой карты.

mhz     = 357
cardmhz = 357

Если после смены частот EMM стали проходить — вы нашли проблему.

Что НЕ помогает и частые ошибки настройки

Хочу отдельно написать про то, что не работает, потому что видел это в конфигах слишком часто.

Бессмысленное включение всех saveemm подряд

Люди включают saveemm-unknown = 1, saveemm-u = 1, saveemm-s = 1, saveemm-g = 1 — и думают, что это поможет. На самом деле saveemm-unknown пишет на диск все неизвестные EMM, которых может быть тысячи в час. Лог переполняется, диск забивается, система тормозит.

Включайте saveemm только для типов, которые реально нужны вашей карте. Определить это можно из логов с включённым debug-уровнем — смотрите, какие типы EMM (u/s/g) реально записываются успешно.

Попытка ловить EMM через сетевой шаринг

Повторю ещё раз, потому что это критично. Если у вас reader через cccam или newcamd — ждать обновления ключей бессмысленно. Эти протоколы не передают EMM. Никогда. OScam: EMM error решение через сетевой шаринг не существует в принципе — EMM должны обрабатываться локально на физической карте.

Есть редкие исключения: некоторые реализации CS378x или собственные серверные решения умеют пробрасывать EMM, но это нестандартно и требует специальной настройки на обоих концах. В 99% случаев — не рассчитывайте на это.

Слепое копирование чужих конфигов

Скопированный чужой oscam.server с другими CAID, другим provid и другими частотами — это почти гарантированные проблемы. Значения ident, mhz, cardmhz, emmcache зависят от конкретной карты, конкретного провайдера и конкретного железа.

Чужой конфиг можно использовать как отправную точку, но CAID и provid нужно взять из своих логов, а частоты — подбирать под своё железо. Иначе получите EMM error решение которого займёт часы, хотя проблема была в неверном ident с самого начала.

И да: часть строк EMM skipped в логах — это штатное поведение. OScam: EMM error решение не всегда означает что-то нужно менять. Если emmcache пишет успешные записи и каналы работают — не трогайте то, что работает.

Ошибка EMM в OScam всегда означает проблему?

Нет. Строки skipped emm или emm filtered часто штатны — карта или фильтр просто не принимает конкретный тип EMM. Реальная проблема только тогда, когда ключи реально не обновляются и каналы начинают отваливаться через несколько часов или дней. Смотрите на счётчик успешных записей в emmcache — он важнее, чем наличие строк rejected в логах.

Можно ли принимать EMM через cccam-сервер?

Как правило — нет. Протокол cccam передаёт только ECM (запросы на расшифровку) и CW (control words в ответ). EMM через этот протокол не передаются по дизайну. EMM должны приходить на local reader с физической картой напрямую через DVB-карту или картоприёмник. Редкое исключение — специализированные серверные решения с нестандартными расширениями протокола, но это не cccam в обычном понимании.

Какие параметры в oscam.server отвечают за EMM?

Основные: blockemm-unknown, blockemm-u, blockemm-s, blockemm-g — блокировка типов EMM (0 = пропускать). saveemm-u, saveemm-s, saveemm-g — сохранение на диск. emmcache — формат CAID,keeptime,count,save, например 1,3,2,1. ident — обязательно укажите правильный CAID:provid, иначе EMM не дойдут до reader вообще.

Почему карта не принимает EMM (card not accepting emm)?

Четыре основные причины: неверный provid или ident в конфиге reader; неподходящий тип EMM для данного пакета подписки; проблемы с частотами картоприёмника (параметры mhz/cardmhz — попробуйте 357, 368 или 600); либо карта действительно не имеет прав на это обновление у данного провайдера. Начинайте диагностику с проверки CAID/provid в логах.

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

В oscam.conf в секции [global] установите debuglevel = 64 и укажите logfile = /var/log/oscam/oscam.log. Либо запустите OScam вручную с ключом -d 64. Через webif (порт 8888 по умолчанию) зайдите в раздел Logs → Live Log. В логах ищите строки EMM и сопоставляйте CAID/provid/serial с тем, что прописано в вашем reader.

Влияют ли частоты mhz и cardmhz на ошибки EMM?

Да, и это недооценённая причина проблем. Неверные mhz/cardmhz вызывают нестабильное чтение карты, причём ECM могут работать нормально (они короче), а EMM сбоить (они длиннее и требуют стабильной передачи). Типовые значения для Phoenix/Smargo: 357 или 368. Для некоторых карт Viaccess — 600. Подбирайте под своё железо опытным путём, начиная с 357/357.

О статье

  • Практические советы и инструкции
  • Материалы по спутниковому ТВ
  • Поддержка и помощь 24/7