Global Active Device в OScam: настройка и ошибки
Если вы видите в логах OScam строку вроде global active device и не понимаете, норма это или сигнал о проблеме — вы не одни. Эта запись появляется при инициализации карторидера и сама по себе не ошибка. Но в связке с другими сообщениями она может указывать на конфигурационный сбой, из-за которого каналы не открываются. Разберём по порядку.
Что означает «global active device» в контексте OScam/CCcam
Строка global active device — это статусное обозначение из стека драйверов OScam, относящееся к глобальному состоянию устройства чтения. Она появляется при опросе карторидера через PCSC, Phoenix или SmartReader API и сообщает, что ядро OScam зафиксировало устройство как активное на уровне системы.
Здесь важно сразу разграничить два понятия, которые часто путают. Device — это физический или виртуальный карторидер: например, /dev/ttyUSB0 для Phoenix-ридера или идентификатор PCSC-контекста вроде PCSC:0. Reader — логическая запись в файле oscam.server, которая ссылается на этот device и содержит параметры карты (caid, ident, частоты).
Откуда берётся это сообщение в логах
Сообщение генерируется при старте reader-потока и при повторной инициализации после переподключения карты. Найти его можно в oscam.log при debuglevel 4 и выше. В веб-интерфейсе OScam (по умолчанию http://serverip:8888) оно отражается во вкладке Readers рядом со статусом конкретного ридера.
На прошивках Enigma2 лог-файл нередко лежит не там, где ожидаешь. Типовые пути: /tmp/oscam.log, /var/log/oscam.log или /hdd/oscam.log — зависит от дистрибутива (OpenPLi, OpenATV, VTi). Проверьте параметр logfile в секции [global] файла oscam.conf.
Связь со статусом reader и состоянием карты
После того как устройство помечено как active, OScam пробует прочитать ATR карты. Если карта отвечает корректно — reader переходит в состояние CARD OK и начинает обрабатывать ECM-запросы. Если ATR не читается — в логе появится что-то вроде card initialisation error и reader зависнет в петле повторных попыток.
Именно в этот промежуток — между фиксацией device как active и успешным чтением ATR — большинство пользователей и начинают диагностику. Сам факт появления статуса global active device в логе говорит о том, что OScam «видит» устройство на уровне ОС. Это уже хорошо.
Чем «active» отличается от «error» и «off»
active — устройство определено, ридер работает, карта (возможно) вставлена. error — инициализация провалилась: нет ответа ATR, неверная частота, права доступа. off — ридер явно отключён в конфиге (параметр enabled = 0) или физически не обнаружен при старте.
Так что если вы видите active и каналы всё равно не открываются — проблема не в самом статусе, а в чём-то между ридером и декодированием ECM. Именно об этом дальше.
Где искать причину: логи, конфиги и веб-интерфейс
Конфиги OScam, как правило, живут в /etc/tuxbox/config/oscam/ или /var/keys/. На некоторых сборках Enigma2 путь нестандартный — встречал /usr/keys/ и /media/hdd/oscam/. Основные файлы: oscam.conf, oscam.server, oscam.user. Для CCcam — /var/etc/CCcam.cfg.
Включение детального лога (debuglevel)
По умолчанию детализация слишком низкая, чтобы увидеть инициализацию устройства. Открываете oscam.conf, находите секцию [global] и выставляете:
[global]
logfile = /var/log/oscam.log
debuglevel = 65535
Значение 65535 включает все категории сразу. Если лог заваливается лишним, используйте точечные значения: 4 — reader-события, 8 — ATR и протокол карты. После изменения перезапустите OScam и смотрите живой поток:
tail -f /var/log/oscam.log
Веб-интерфейс на порту 8888 тоже полезен — вкладка Readers показывает текущий статус и счётчики ECM в реальном времени без необходимости копаться в текстовом логе.
Проверка секции [reader] в oscam.server
Типичная секция для Phoenix-карторидера выглядит так:
[reader]
label = local_card
protocol = mp35
device = /dev/ttyUSB0
caid = 0500
ident = 0500:032830
group = 1
mhz = 357
cardmhz = 357
detect = cd
Параметр device — главная точка отказа. Для PCSC-ридера вместо /dev/ttyUSB0 пишется PCSC:0 (или PCSC:1 для второго устройства). Это часто пропускают, путая два формата.
Ещё одна ловушка: USB-карторидер после перезагрузки может получить имя /dev/ttyUSB1 вместо /dev/ttyUSB0. Фиксируется через udev-правило в /etc/udev/rules.d/99-oscam.rules с привязкой по idVendor/idProduct. Это избавляет от головной боли раз и навсегда.
Диагностика устройства через oscam Status и список ECM
Вкладка Status в веб-интерфейсе показывает время ответа на каждый ECM-запрос. Если поле ecm time прыгает выше 1000 мс или видны ошибки No reply — проблема явно на стороне карты или соединения. Нормальный ecm time для локальной карты — до 150–200 мс. Для удалённого источника — до 300–400 мс.
Типичные ошибки и их устранение
Разберём по схеме: симптом — что проверить — как исправить.
Карторидер не определяется (device not found)
Запускаете:
dmesg | grep tty
Если строки с ttyUSB0 нет — ядро не видит устройство. Причины: нет питания по USB, нет нужного модуля ядра (cp210x, ftdi_sio, ch341), физически не воткнуто. Если строка есть, но OScam не стартует — права доступа. Быстрое решение:
chmod 666 /dev/ttyUSB0
Или добавить пользователя oscam в группу dialout. На Enigma2-боксах oscam часто запускается от root, поэтому проблема с правами встречается реже, но на Raspberry Pi с Raspbian — регулярно.
Карта инициализируется, но ECM не проходят
Здесь самое частое — несовпадение caid и ident между oscam.server и oscam.user. В oscam.user секция [account] должна содержать те же идентификаторы, что прописаны в reader:
[account]
user = client1
pwd = pass123
group = 1
caid = 0500
ident = 0500:032830
Группы (group) reader и account должны совпадать. Если reader в группе 1, а пользователь в группе 2 — ECM просто не маршрутизируются. Это тихая ошибка, которая не выдаёт внятного сообщения в логе.
Дополнительно: если несколько reader-секций с одинаковым caid — OScam выбирает по приоритету через параметр ridx (или по порядку в файле). Конфликт приоритетов можно поймать, включив debuglevel = 4 и наблюдая, на какой ридер уходят запросы.
Неверная частота mhz/cardmhz и сбои ATR
Параметр mhz — тактовая частота карторидера (в единицах 10 кГц, то есть 357 = 3,57 МГц). cardmhz — частота карты. Типовые рабочие значения: 357, 368, 400, 600. Некоторые карты отказываются инициализироваться при стандартных 357 и требуют 368 или 600.
Признак проблемы — в логе card initialisation error или просто зависшее состояние после фиксации global active device. Перебирайте cardmhz по одному, перезапуская OScam после каждого изменения. Если карта старая или проблемная, попробуйте также deprecated = 1 в секции reader — это включает старый режим работы с картой.
Конфликт прав доступа к /dev/ устройству
На некоторых системах oscam запускается от непривилегированного пользователя, а устройство принадлежит группе dialout. Проверьте:
ls -la /dev/ttyUSB0
Если там crw-rw---- 1 root dialout — добавьте oscam-пользователя в dialout через usermod -aG dialout oscam и перезапустите демон. Без этого reader будет виден системе как active, но открыть устройство OScam не сможет.
Правильная конфигурация совместного доступа к карте
Настройка раздачи карты — это когда локальная карта в вашем ридере отдаётся клиентам через протокол CCcam или Newcamd. Вот минимально рабочая конфигурация.
Минимальный рабочий [reader] для локальной карты
[reader]
label = mycard
protocol = mp35
device = /dev/ttyUSB0
caid = 1802
ident = 1802:000000
group = 1
mhz = 357
cardmhz = 357
detect = cd
nagra_read = 0
Параметр detect = cd означает, что присутствие карты определяется по CD-линии (Card Detect). Если ваш ридер не поддерживает CD — используйте rts или уберите параметр совсем.
Раздача карты по протоколу CCcam (C-line)
В oscam.conf секция для CCcam-сервера:
[cccam]
port = 12000
reshare = 1
stealth = 1
Порт по умолчанию — TCP 12000. В CCcam.cfg директива: SERVER LISTEN PORT : 12000. Клиент подключается через C-line в своём конфиге:
C: yourserver.example 12000 username password
Обязательно проверьте файрвол. На многих Enigma2-боксах iptables по умолчанию закрывает входящие. Команда для временного открытия:
iptables -A INPUT -p tcp --dport 12000 -j ACCEPT
Для постоянного — добавьте правило в /etc/iptables.rules или аналогичный файл вашего дистрибутива. За NAT-прокинутым портом — не забудьте про port forwarding на роутере.
В oscam.user для каждого CCcam-клиента:
[account]
user = client1
pwd = secretpass
group = 1
caid = 1802
ident = 1802:000000
Параметры безопасности и ограничение нагрузки на карту
Физическая карта обрабатывает один ECM-запрос примерно за 100–200 мс. При 10 клиентах с активным зэппингом запросы начинают накапливаться, ecm time растёт, и клиенты видят freeze. Ограничение через cccmaxhops = 1 запрещает клиентам ретранслировать карту дальше. Параметр cccreshare = 0 в oscam.user для конкретного аккаунта запрещает ему пошаривать карту своим клиентам.
Дополнительно можно ограничить список допустимых CAID/SID через ecmwhitelist, что защищает от паразитных запросов. Параметр sleepsend = 1 отправляет keep-alive пакеты клиентам в паузах, предотвращая дисконнекты при долгом просмотре одного канала.
Реальный предел для одной карты — зависит от карты и пакета, но из практики: больше 5–7 одновременно активных клиентов на одну физическую карту — уже зона риска.
Как выбрать надёжный источник карты (без конкретных имён)
Если своей карты нет и вы подключаетесь к удалённому источнику через C-line, вот на что реально смотреть.
Критерии стабильного аптайма и низкого пинга
Первое — географическая близость сервера. Это напрямую влияет на ecm time: при пинге 10 мс запрос обрабатывается за 200–300 мс, при пинге 150 мс — уже за 500+ мс, что заметно на быстрых переключениях каналов. Тестируйте пинг до сервера обычным ping hostname до подписки.
Второе — аптайм. Попросите тестовый доступ на 24–48 часов и смотрите не только на то, работает ли сейчас, но и на количество реконнектов в логе за этот период. Строки disconnected и reconnecting в oscam.log — ваши маяки.
Поддержка нужных caid и пакетов
Убедитесь, что источник реально раздаёт нужный CAID с нужным provid. В логе OScam при успешном подключении видно, какие CAID доступны через данный ридер. Если caid/ident в oscam.server не совпадает с тем, что реально раздаётся — ECM просто некуда отправлять, и каналы не откроются даже при живом соединении.
На что смотреть в тестовый период
В веб-интерфейсе OScam откройте вкладку Status и смотрите ecm time в реальном времени. Хороший источник: стабильные 200–400 мс, единицы ошибок за вечер. Плохой: скачки от 200 до 2000 мс, регулярные No reply, счётчик ошибок растёт быстрее счётчика успехов. Смотрите на соотношение — не на абсолютные цифры.
Параметр fallback = 1 в oscam.server переводит этот ридер в резервный режим — OScam обращается к нему только если основной не ответил. Полезно для схемы основная карта + резервный удалённый источник.
«Global active device» — это ошибка или нормальный статус?
Сам по себе статус active — это норма. Он означает, что OScam определил устройство и ридер запущен. Проблемой это становится только если рядом идут ошибки: card initialisation error, No reply, ECM error. Смотрите на совокупность строк в логе вокруг этого сообщения, а не на него изолированно.
В каком файле и где искать настройки устройства в OScam?
Настройки ридера — в файле oscam.server, секция [reader], параметр device. Типовые пути к конфигам: /etc/tuxbox/config/oscam/, /var/keys/, реже /usr/keys/ или /media/hdd/oscam/. Для CCcam — /var/etc/CCcam.cfg.
Как включить подробный лог, чтобы увидеть инициализацию устройства?
В oscam.conf, секция [global]: выставьте debuglevel = 65535 для всех категорий. Для точечной отладки ридера: debuglevel = 4 (reader-события) или 8 (ATR/протокол). Живой лог: tail -f /var/log/oscam.log. Статус ридеров в реальном времени — вкладка Readers в веб-интерфейсе на порту 8888.
Какой порт используется для раздачи карты по CCcam?
По умолчанию TCP 12000. В OScam задаётся в oscam.conf секция [cccam], параметр port = 12000. В CCcam.cfg: директива SERVER LISTEN PORT : 12000. Обязательно проверьте iptables — порт должен быть открыт: iptables -A INPUT -p tcp --dport 12000 -j ACCEPT.
Карта определяется, но каналы не открываются — почему?
Первым делом проверьте совпадение caid и ident в oscam.server и oscam.user, а также совпадение групп (group). Несовпадение — самая частая причина тихого отказа. Дальше: значения mhz/cardmhz (попробуйте 368 или 400 если 357 не работает), наличие нужного provid, ecm time и счётчик ошибок во вкладке Status.
Сколько клиентов выдержит одна оригинальная карта?
Зависит от карты и активности клиентов, но на практике больше 5–7 одновременно зэппящих клиентов на одну физическую карту — уже риск фризов и No reply. Ограничивайте через cccmaxhops = 1, cccreshare = 0 в аккаунтах клиентов и ecmwhitelist для фильтрации паразитных запросов.