OScam: настройка AU (автообновление ключей)
Если базовое расшифрование у тебя уже работает, а ключи обновляются только вручную — скорее всего, проблема в конфигурации AU. OScam au автообновление — одна из тех вещей, которые выглядят просто на бумаге, но ломаются на десяти разных уровнях. Разберём по порядку: что это вообще такое, как настроить и почему может не работать.
Что такое AU (автообновление) в OScam и зачем оно нужно
AU — это обработка EMM-пакетов (Entitlement Management Messages), которые провайдер шлёт в потоке для обновления прав на смарткарте или ридере. Без AU карта рано или поздно теряет актуальные ключи, и расшифрование останавливается. С AU — карта «слушает» поток и обновляется сама.
Разница между ECM и EMM
ECM (Entitlement Control Message) — это короткие пакеты, которые несут зашифрованный control word для расшифровки конкретного канала прямо сейчас. OScam обрабатывает их постоянно, это и есть кардшаринг в чистом виде.
EMM — другое. Эти пакеты обновляют права и ключи непосредственно на карте. Они приходят реже, адресованы конкретной карте (по её серийному номеру или группе) и должны быть записаны в EEPROM. Если ECM не работает — нет картинки. Если EMM не работают — ключи устаревают через какое-то время.
Local AU против Network AU
Local AU — карта физически вставлена в ридер на твоей машине (PCSC, smartreader, internal в ресивере). OScam сам тянет EMM из потока и пишет их в карту. Это надёжный и прямой способ.
Network AU — EMM передаются клиенту по сети через протокол (newcamd, cccam). Сервер, у которого есть физическая карта, получает EMM и перенаправляет их клиенту. Работает хуже: не все протоколы передают EMM корректно, многие серверы их фильтруют.
Когда AU вообще не требуется
При работе через CCcam-пиринг как клиент — AU тебе не нужен. Физическая карта находится у сервера, он её и обновляет. Твоя задача — получить расшифрованный control word по ECM. Включать AU на клиентской стороне, где карты нет, бессмысленно и только создаёт путаницу в логах.
Настройка AU в oscam.server (reader)
Вся конфигурация ридера живёт в /etc/oscam/oscam.server или /var/etc/oscam.server в зависимости от дистрибутива. Именно здесь включается AU для конкретной карты.
Параметр auprovid и caid
В секции [reader] параметр auprovid задаёт идентификатор провайдера, EMM которого нужно обрабатывать. Без него OScam может не понять, чьи именно EMM принимать. caid — тип условного доступа карты (например, 0x0500 для Viaccess, 0x0100 для Seca, 0x1800 для Nagravision).
Значения caid и provid смотри в логе при старте OScam — там при инициализации ридера выводится полная информация о карте. Либо открой webif на порту 8888, перейди в раздел Readers и кликни на конкретный ридер.
Флаг disableserverfilter и EMM-фильтры
Параметры blockemm-u, blockemm-s, blockemm-g, blockemm-unknown блокируют соответствующие типы EMM (unique, shared, global, unknown). По умолчанию в некоторых сборках они включены — и это первая причина, почему AU не работает у большинства. Проверь явно.
disableserverfilter = 1 отключает фильтрацию EMM по серверным правилам. Иногда это помогает, когда EMM доходят до OScam, но фильтруются раньше записи в карту.
saveemm-unknown и логирование EMM
saveemm-unknown = 1 сохраняет EMM неизвестного типа в файл для последующего анализа. Используй это при диагностике — сможешь посмотреть, что вообще приходит. Файл создаётся рядом с конфигом или по пути из savedir.
Пример секции [reader] для локальной карты
[reader]
label = mycard
protocol = pcsc
device = 0
caid = 0x0500
auprovid = 040E00
ident = 0500:040E00
group = 1
emmcache = 1,3,15
blockemm-u = 0
blockemm-s = 0
blockemm-g = 0
blockemm-unknown = 0
saveemm-unknown = 0
autospeed = 1
Для internal-ридера в ресивере (OpenPLi, OpenATV) protocol = internal, а device обычно /dev/sci0 или /dev/sci1. После обновления прошивки ресивера этот путь может сброситься — проверь обязательно, особенно если AU внезапно перестал работать после апдейта.
Счётчики ee_emm, ge_emm, gg_emm в статусе ридера показывают количество обработанных EMM типов unique/shared/global. Если все три нули при живом потоке — EMM не доходят или блокируются.
Включение AU для сетевых клиентов (oscam.user)
Если карта на сервере и нужно передавать EMM сетевому клиенту, настройка делается в /etc/oscam/oscam.user.
Параметр au в секции [account]
В секции [account] параметр au указывает, через какой ридер клиент получает AU. Имя ридера должно точно совпадать с label в oscam.server.
[account]
user = clientuser
pwd = clientpass
group = 1,2
au = mycard
caid = 0500
au = 1 против au = имя_ридера
au = 1 означает «использовать любой подходящий ридер автоматически». Удобно, но непредсказуемо при нескольких ридерах с одинаковым caid. Лучше указывать конкретное имя — так меньше неожиданностей и проще диагностировать.
Кстати, если у тебя два ридера с одним caid, и AU включён на обоих — могут возникнуть конфликты: одна и та же EMM записывается дважды или ридеры мешают друг другу. OScam это не всегда обрабатывает чисто. Лучше назначить AU только одному ридеру на каждый caid.
Протоколы newcamd/cccam и передача EMM
Newcamd умеет передавать EMM клиенту — это его сильная сторона. CCcam с EMM работает хуже: протокол изначально не проектировался под передачу обновлений, и многие реализации их попросту дропают. Если нужен надёжный network AU — смотри в сторону newcamd или cs378x (camd35 over TCP).
Ещё момент: даже если протокол поддерживает EMM, сервер должен их не фильтровать на своей стороне. Часто именно серверная фильтрация — причина, почему OScam au автообновление не работает у клиентов при внешне корректной конфигурации.
Диагностика: почему AU не работает
Начни с webif. Открой браузер, зайди на http://<ip-сервера>:8888 (порт задаётся параметром httpport в oscam.conf, по умолчанию 8888). Перейди в Readers — там увидишь колонки EMM: written, skipped, blocked, error.
Проверка через веб-интерфейс (порт 8888) и счётчики EMM
Если written = 0 при ненулевом skipped или blocked — EMM до карты не доходят. Если все нули — EMM вообще не принимаются. Если error растёт — карта получает EMM, но отклоняет их.
Это три совершенно разные ситуации с разными причинами. Не путай их.
Чтение oscam.log: written/skipped/blocked EMM
Включи детальное логирование. В /etc/oscam/oscam.conf:
[global]
logfile = /var/log/oscam/oscam.log
loglevel = 64
loglevel = 64 включает EMM-отладку. После перезапуска:
tail -f /var/log/oscam/oscam.log | grep -i emm
Смотри, что пишет лог: приходят ли EMM, фильтруются ли, какой тип (U/S/G), принимает ли их карта.
Проблема с EMM-фильтрами и blockemm
Самая частая причина нулевого written — выставлены blockemm-u = 1 или blockemm-s = 1. OScam просто выбрасывает входящие EMM до попытки записи в карту. Проверь все четыре параметра: blockemm-u, blockemm-s, blockemm-g, blockemm-unknown. Все должны быть = 0 при включённом AU.
Ещё вариант — неверный caid или auprovid. EMM фильтруются по этим значениям: если не совпадают с тем, что пишет карта при инициализации — они будут отброшены как «не для этой карты».
Права карты и срок действия подписки
Бывает и такое: EMM приходят, OScam их принимает, карта получает — но отклоняет. Счётчик error в webif растёт. Это либо истёкшая подписка (карта знает, что её права закончились, и не принимает обновления), либо неверный boxkey — ключ ридера, который нужен некоторым системам (Nagravision, например) для работы с картой.
Boxkey проверь особо тщательно. Если он указан неверно, карта будет отклонять EMM без каких-либо внятных сообщений об ошибке. Нужное значение — в документации к конкретной системе условного доступа или в логе при корректной инициализации карты.
Тонкая настройка и оптимизация AU
Когда AU заработал — не расслабляйся. Агрессивная запись EMM реально изнашивает EEPROM карты. У большинства карт ресурс записи ячеек памяти ограничен. Это не теория — это реальная проблема при OScam au автообновление без ограничений.
emmcache для снижения нагрузки на карту
Параметр emmcache в oscam.conf контролирует кэширование обработанных EMM. Формат: caid,count,time,type.
[global]
emmcache = 1,3,15
Здесь: включено (1), хранить до 3 одинаковых EMM (3), в течение 15 минут (15). Повторная одинаковая EMM в этом окне не записывается в карту. Это снижает нагрузку кратно — провайдеры часто шлют одни и те же EMM несколько раз подряд.
Без emmcache OScam пишет каждую EMM в карту отдельно. При активном потоке это десятки записей в час — карта деградирует заметно быстрее.
saveemm для анализа и резервного обновления
saveemm = 1 в секции ридера сохраняет все входящие EMM в файл. Полезно для двух вещей: диагностика (можно посмотреть, что реально приходит) и резервное обновление — если карта временно недоступна, можно потом воспроизвести EMM из дампа.
Путь файла задаётся через savedir в oscam.conf. По умолчанию — рядом с конфигами. Файл растёт быстро при активном потоке, следи за местом на диске.
Интервал reset и reader refresh
Параметр resetcycle задаёт количество ошибок до принудительного сброса ридера. Иногда при зависшем AU помогает resetcycle = 10 — ридер перечитывает карту и AU возобновляется. Но это костыль, а не решение: если AU стабильно не работает без reset — ищи причину в конфиге.
readtiers при старте показывает доступные тиры карты. Если тир с нужным caid не отображается — карта либо не инициализировалась корректно, либо подписка действительно закончилась.
Нужен ли AU при работе через CCcam-пиринг?
Нет. При шаринге обновляет карту тот, у кого она физически вставлена в ридер. Клиент получает только ECM-расшифровки. Включать AU на клиентской стороне без карты бессмысленно — OScam просто не найдёт, куда писать EMM.
Где в OScam указывается, какой ридер обновляет клиента?
В файле /etc/oscam/oscam.user, параметр au = имя_ридера в секции [account]. Значение должно точно совпадать с label в oscam.server. Можно указать au = 1 для автовыбора ридера, но при нескольких ридерах с одним caid лучше назначать явно.
Почему счётчик EMM written равен нулю?
Причин несколько: включены blockemm-u/s/g/unknown, неверный caid или auprovid, карта без прав, истёкшая подписка, неверный boxkey, ридер не в режиме AU. Начни с webif — смотри колонки skipped и blocked, потом включи loglevel = 64 и читай лог с grep по «emm».
Как посмотреть, доходят ли EMM до ридера?
Открой webif по адресу http://<ip>:8888, перейди в Readers. Колонки EMM ok/written/skipped/blocked показывают состояние в реальном времени. Для детальной картины: tail -f /var/log/oscam/oscam.log | grep -i emm при включённом loglevel = 64.
Опасно ли частое автообновление для карты?
Да. EEPROM смарткарты имеет ограниченный ресурс записи. При активном потоке без emmcache карта может получать десятки одинаковых EMM в час. Настрой emmcache = 1,3,15 в oscam.conf и при необходимости блокируй shared/global EMM, если unique достаточно для обновления.
Какой caid и provid указывать для AU?
Те, что реально принадлежат твоей карте. Смотри в логе OScam при старте ридера — там выводится полная информация о карте: caid, провайдеры, серийный номер. Либо открой webif, Readers → кликни на ридер → Reader Info. Не угадывай — ставь то, что видишь в логе.