Global Active Device в CCcam: что это и как настроить
Если вы видите в чужом конфиге строку G: или встречаете термин global active device в логах CCcam — это не баг и не опечатка. Это один из самых недопонятых механизмов протокола, который отвечает за то, видят ли ваши пиры вашу карту вообще. Разберём от начала до конца: что это такое, как это работает, и почему ридер может быть «активным» у вас, но невидимым для всех остальных.
Что такое Global Active Device в контексте CCcam
Определение и место в архитектуре CCcam
CCcam различает два состояния ридера: он может обслуживать только локальные ECM-запросы (то есть ресивер, подключённый напрямую к серверу), либо дополнительно анонсироваться всем подключённым пирам через механизм шаринга. Второй режим — это и есть global active device.
Физически это может быть CI+ модуль на /dev/ttyUSB0, внутренний картридер на /dev/sci0, или виртуальный reader — newcamd/cccam-соединение к другому серверу. Главное не носитель, а то, что CCcam считает его «активным в шарах» и готов отдавать через него CW другим клиентам.
Когда ридер переходит в статус global active device, он появляется в разделе Shares — этот список CCcam синхронизирует между пирами при установке соединения. Пир видит вашу карту, знает её CAID и provider ID, и может слать к вам ECM-запросы.
Отличие active device от passive/inactive reader
Passive reader — это ридер, который инициализировался, карта прочиталась, ATR совпал, но по каким-то причинам CCcam не добавил его в глобальный шаринг. Такое бывает при неправильной группе, нулевом reshare, или если карта попала под SID-фильтр.
Локальный активный ридер даёт CW только вашему ресиверу. Global active device делает то же самое, плюс отвечает на ECM от пиров. Разница не в железе — она в конфиге.
Есть ещё статус «inactive»: ридер был активен, потом карта перестала отвечать (например, после долгого простоя), и CCcam перевёл его в неактивный. В этом состоянии он не обслуживает ни локальные, ни глобальные запросы, пока карту не переинициализируют.
Где параметр появляется в логах и на статус-странице
При старте CCcam пишет в /var/log/CCcam.log примерно следующее:
05/13/2026 10:14:23 card initialised [CAID:0500 provider:042100] on reader /dev/ttyUSB0
05/13/2026 10:14:23 global card added [CAID:0500] hops:0
Строка global card added — прямое подтверждение того, что ридер стал global active device. Если её нет, а есть только card initialised — карта локальна, пиры её не получат.
Статус-страница на порту 16001 (http://127.0.0.1:16001) показывает раздел Cards. Там должна быть строка с вашей картой, CAID, provider ID и hop=0. Hop=0 означает, что карта физически у вас, не взята у пира. Если карту там нет — она не в глобальном шаринге, всё остальное неважно.
Синтаксис G-line и сравнение с C/N/F-lines
Формат строки G: hostname port username password
G-line в /etc/CCcam.cfg выглядит так:
G: hostname 12000 username password
Опционально можно добавить количество хопов и фильтр по CAID:
G: hostname 12000 username password 1 { 0500:042100 }
Здесь hostname — адрес сервера, с которым устанавливается соединение. Порт 12000 — стандартный для CCcam (диапазон 12000–15000). Username и password — учётные данные. Число 1 — количество хопов, до которых карта будет передаваться дальше. Блок в фигурных скобках ограничивает CAID и provider, которые пойдут через эту линию.
G-line используется тогда, когда сервер хочет автоматически объявить reader глобально активным для пиров. Это не значит «открыть карту вовне» в смысле брандмауэра — это декларация на уровне протокола CCcam.
Чем G-line отличается от C: (cccam peer) и N: (newcamd)
| Тип | Направление | Протокол | Назначение | Пример |
|---|---|---|---|---|
| C: | Исходящее (мы подключаемся к пиру) | CCcam | Забрать карты у пира, получить CW | C: peer.host 12000 user pass |
| F: | Входящее (клиент подключается к нам) | CCcam | Дать клиентам доступ к нашим картам | F: clientuser clientpass |
| N: | Исходящее | Newcamd | Подключиться к newcamd-серверу | N: host 10000 user pass 01 02 03 04 05 06 07 08 09 10 11 12 13 14 |
| G: | Входящее/объявляющее | CCcam | Объявить reader глобально активным для пиров | G: host 12000 user pass [hops] |
C-line — это когда вы клиент, и вы идёте к кому-то за картой. F-line — это когда кто-то идёт к вам. G-line — специфический механизм объявления, который в ряде конфигов ставится рядом с C-line, чтобы reader был виден не только локально, но и отдавался через систему шаров.
Когда вообще нужен Global вместо обычного reader
Если сервер только для себя — G-line не нужна вовсе. Но как только вы начинаете отдавать карту пирам (через F-line клиентам или через peering с другими серверами) — нужно убедиться, что reader анонсирован глобально.
В современных сборках OScam G-line как таковая не используется. Там роль глобального анонса выполняют параметры reshare и group в oscam.server и oscam.user. G-line остаётся актуальной в гибридных конфигах, где CCcam работает фронтендом для старых ресиверов, а OScam стоит за ним как бэкенд.
Настройка ридера как глобально активного: пошагово
Подготовка физической карты: PCSC/phoenix reader
Для физической карты через serial-ридер в /etc/CCcam.cfg нужны три строки:
SERIAL READER : /dev/ttyUSB0
SERIAL READER PROTOCOL : Phoenix
SERIAL READER BAUDRATE : 6000000
Для CI+ через стандартный интерфейс — /dev/sci0. Убедитесь, что устройство вообще видно: ls -la /dev/ttyUSB0 должно вернуть что-то реальное, а не ошибку. Если устройства нет — CCcam при старте напишет can't open reader и дальше уже неважно что в конфиге.
После изменения SERIAL параметров нужен полный рестарт CCcam, а не reload — часть параметров инициализируется только при старте процесса.
Прописывание reader-блока в CCcam.cfg или oscam.server
В OScam минимальный блок в /etc/oscam/oscam.server:
[reader]
label = my_physical_card
protocol = internal
device = /dev/sci0
caid = 0500
group = 1
reshare = 1
inactivitytimeout = 60
И соответствующий аккаунт в /etc/oscam/oscam.user:
[account]
user = peerclient
pwd = secretpassword
group = 1
reshare = 1
caid = 0500
Параметр group в reader и account должен совпадать — это не опция, это обязательное условие. Если группы не пересекаются, OScam не покажет карту клиенту, даже если reshare=10. Это одна из самых частых причин «карта активна, но пиры не видят».
Параметр reshare=1 означает: пир может передать карту дальше на один хоп. При reshare=0 — карта вообще не уходит пирам, только локальное использование.
Открытие наружу: порты, firewall, NAT
CCcam по умолчанию слушает на портах 12000–15000 для клиентов. Порт 16001 — только веб-статус, его наружу открывать не нужно (только для отладки с локальной сети).
OScam использует порт 8888 для webif, cs378x обычно поднимается на 10000+. Конкретный порт задаётся в /etc/oscam/oscam.conf:
[cs378x]
port = 10000
Если сервер за NAT — нужен проброс портов на роутере. Это именно та причина, когда OScam webif показывает CONNECTED / CARDOK, внутри всё работает, а внешние пиры не могут установить cs378x сессию. Reader активен внутри сети, но снаружи порт закрыт. Проверяется элементарно: nc -zv external.ip 10000 с внешней машины.
При двойном NAT (ваш роутер за роутером провайдера) проброс портов на вашем роутере не поможет — нужно либо dmz на роутере провайдера, либо VPN-туннель. OScam за двойным NAT — это отдельная головная боль, и webif при этом честно показывает CONNECTED, потому что проверяет только TCP-соединение в вашей локальной сети.
Проверка через /var/log/CCcam.log и telnet 127.0.0.1 16001
Первая проверка — лог:
tail -f /var/log/CCcam.log | grep -E "card|reader|global"
Ищем global card added и отсутствие card not found / reader error.
Вторая проверка — статус-страница:
telnet 127.0.0.1 16001
В секции Cards должна быть ваша карта с hop=0 и счётчиком ECMs. Если карты нет — она не стала global active device, и никакие настройки на стороне клиентов не помогут.
Для OScam — открываем http://127.0.0.1:8888, идём в Readers, смотрим статус: должно быть CONNECTED и CARDOK. Если там UNAVAILABLE — reader не инициализировался вообще.
Диагностика: почему ридер не становится Global Active
Reader виден локально, но не уходит в shares
Самое частое. Карта инициализировалась, лог говорит card initialised, но строки global card added нет. Проверяем в порядке вероятности:
reshare=0в OScam — карта намеренно заблокирована от шаринга- Несовпадение
group=в reader и account — OScam не связывает их - В CCcam: не задан MINIMUM DOWN HOPS или он выше hop карты
- SID-фильтр в
oscam.servicesилиsidtabрежет доступ
Для OScam можно включить расширенное логирование в oscam.conf: loglevel = 65535 и посмотреть что именно блокирует ECM. Там будет прямой текст: ecm filtered by sidtab или reader not in any group.
ATR ошибки и card init failed
ATR (Answer To Reset) — ответ карты при инициализации. Если ATR не совпадает с ожидаемым CAID, CCcam/OScam может принять карту как «активную», но ECM-запросы будут возвращать card not found. Это неочевидный кейс: в логах карта есть, на статус-странице карта есть, но декрипт не работает.
В OScam эта ситуация выглядит как CARDOK в webif, но E: (0500/042100) not found в лог-строках ECM. Причина — либо неправильный CAID в конфиге reader, либо карта другого провайдера, чей ATR похож.
Несколько физических карт одного провайдера на одном сервере добавляют ещё одну проблему: OScam выбирает reader по приоритету, и если приоритет не задан явно параметром priority в oscam.server, выбор может быть непредсказуемым. Коллизия provider ID приводит к тому, что ECM уходит не на ту карту и возвращает ошибку.
Группы (group=) и SID-фильтры режут видимость
В OScam группы — это не просто числа для красоты. Это механизм контроля доступа. Reader с group=1 и account с group=2 не «видят» друг друга. Добавьте одну и ту же группу в оба блока.
SID-фильтры в /etc/oscam/oscam.services могут запретить конкретные service ID. Если канал попал под запрет в sidtab, OScam не выдаст CW даже при активном ридере и правильных группах. Проверяется grep-ом по логу: grep "filtered" /var/log/oscam/oscam.log.
Hops/Reshare ограничивают передачу пирам
Параметр reshare в OScam работает так: reshare=0 — карта только локально, reshare=1 — пир может использовать, но не передавать дальше, reshare=2 — пир может передать ещё одному пиру, и так далее.
В CCcam аналог — количество хопов в G-line. Если задано G: host 12000 user pass 0 — карта не пойдёт дальше текущего соединения.
Параметр MINIMUM DOWN HOPS в CCcam.cfg задаёт минимальный хоп, с которого принимать карты. Если он выставлен в 1, локальная карта с hop=0 не будет принята как global active device. Это тоже реальная причина проблемы.
Ещё одна ловушка: карта засыпает после долгого простоя. Параметр inactivitytimeout в OScam (в секундах) — если за это время не было ECM-запросов, reader переходит в inactive. Обратно он не возвращается сам — нужен restart cardreader или полный перезапуск OScam. Ставьте inactivitytimeout = 0 если не хотите этой головной боли.
Безопасность и стабильность глобально открытого ридера
Ограничение количества клиентов на карту
Открытый global active device без лимитов — это приглашение для проблем. Слишком много одновременных ECM-запросов к одной карте приведёт к очереди, задержкам и freeze у всех клиентов.
В CCcam.cfg:
MAX CONNECTIONS : 10
KEEP CLIENTS WITH BAD ECMS : no
ECM CACHE : yes
MAX CONNECTIONS ограничивает общее число подключений. ECM CACHE позволяет отвечать на повторные одинаковые ECM без обращения к карте — это снижает нагрузку при нескольких клиентах с одним каналом.
В OScam ограничение на уровне account:
[account]
user = peerclient
maxconnections = 5
ratelimitecm = 10
ecmnotfoundlimit = 5
ratelimitecm — максимум ECM-запросов в секунду от одного клиента. ecmnotfoundlimit — сколько раз подряд клиент может получить «card not found» до временной блокировки. Это защита от ECM-flood — ситуации, когда клиент по какой-то причине шлёт сотни запросов в секунду и блокирует карту для всех остальных.
Параметр numthreads в oscam.conf определяет количество потоков обработки. По умолчанию 10, для загруженного сервера можно поднять до 20–30, но это не замена rate-limit.
AU (auto-update EMM): когда отключать
AU (Auto-Update) — это обработка EMM-сообщений, через которые оператор обновляет ключи подписки на карте. Если карта ваша и подписка ваша — AU нужен для корректной работы после обновления ключей оператором.
Но если вы расшариваете чужую карту — AU это риск. Активная запись EMM в карту ускоряет её износ и может привести к тому, что оператор заблокирует эту конкретную карту. Некоторые операторы специально рассылают «killer EMM» — сообщения, которые деактивируют карты, явно используемые для шаринга.
В OScam AU отключается в reader-блоке:
auprovid = 0
emmcache = 0
В CCcam.cfg: DISABLE EMM UPDATES : yes.
Симптом проблемы: карта работает, но в логах постоянно EMM written to card по несколько раз в минуту. Это ненормально. Либо кто-то специально флудит EMM, либо AU активен и записывает всё подряд.
Логирование подозрительных ECM-flood
Стандартный лог OScam при ECM-flood выглядит так: один клиент генерирует сотни строк в секунду с одним и тем же CAID. Это сразу видно при tail -f /var/log/oscam/oscam.log.
Для автоматического реагирования в oscam.conf можно включить:
[global]
logfile = /var/log/oscam/oscam.log
maxlogsize = 1000
И настроить fail2ban или собственный скрипт, который парсит лог и банит IP при превышении порога. Это не встроенная функция OScam, но реализуется за 20 строк bash.
Белый список IP в oscam.user (hostname = 192.168.1.0/24) — более надёжная защита, чем rate-limit, если вы работаете только с известными пирами.
Бэкап oscam.server / CCcam.cfg перед изменениями
Это не банальность — это реальная практика. Конфиги CCcam и OScam не имеют встроенного механизма rollback. Одна опечатка в /etc/oscam/oscam.server — и OScam при старте не найдёт reader вообще.
Перед каждым изменением reader-блока:
cp /etc/oscam/oscam.server /etc/oscam/oscam.server.bak.$(date +%Y%m%d_%H%M%S)
cp /etc/CCcam.cfg /etc/CCcam.cfg.bak.$(date +%Y%m%d_%H%M%S)
Восстановление: cp /etc/oscam/oscam.server.bak.20260513_104500 /etc/oscam/oscam.server и рестарт сервиса.
При выборе пиров и провайдеров для шаринга смотрите на конкретные вещи: время аптайма за последние 30 дней (должно быть выше 98%), прозрачные правила по количеству хопов, отсутствие freeze в прайм-тайм (18:00–23:00), техническая поддержка через тикеты с реальным временем ответа. Избегайте провайдеров, которые не могут объяснить как именно работает их reshare-политика — это признак того, что конфиг настроен наобум.
Чем Global Active Device отличается от обычного локального ридера?
Локальный reader обслуживает только запросы с того же сервера — ваш ресивер получает CW, и всё. Global active device делает то же самое, но дополнительно анонсируется в систему шаров всем подключённым пирам через G-line или механизм reshare. Пиры видят вашу карту как доступную и могут слать к ней ECM-запросы напрямую.
Почему карта «active» в логах CCcam, но пиры её не видят?
Три наиболее частые причины. Первая — reshare=0 в OScam или hops=0 в G-line: карта намеренно не уходит пирам. Вторая — несовпадение group= в блоках reader и account: OScam не связывает их между собой. Третья — порт CCcam (12000–15000) или OScam cs378x (10000+) не проброшен через NAT роутера, и внешние пиры физически не могут подключиться.
Можно ли сделать newcamd reader глобально активным в OScam?
Да. В /etc/oscam/oscam.server указываете protocol = newcamd, device = hostname,port, key = DES_ключ_14_байт, group = 1. Если в account прописан тот же group и reshare > 0 — reader станет доступен пирам как global active device. DES-ключ должен совпадать с тем, что настроен на стороне newcamd-сервера.
Что показывает страница статуса CCcam на порту 16001 про active device?
В разделе Cards отображается CAID карты, provider ID, hop=0 для физически локального ридера, и счётчик обработанных ECM-запросов. Если карта в этом разделе не появляется — она не является global active device, независимо от того, что написано в логе при старте. Эта страница — единственный достоверный источник правды по состоянию карт.
Безопасно ли держать карту как global active 24/7?
Безопасно при правильных настройках: MAX CONNECTIONS ограничивает число клиентов, ratelimitecm в OScam блокирует flood, AU (auto-update EMM) отключён если карта чужая, белый список IP-адресов пиров в oscam.user. Регулярно смотрите лог на предмет подозрительных паттернов — сотни одинаковых ECM от одного IP за секунду это сигнал проблемы.
Нужно ли использовать G-line в современных сборках или хватает OScam server/user?
В чистом OScam G-line не нужна. Достаточно пары [reader] + [account] с совпадающими group= и reshare > 0 — это полный аналог функциональности G-line. G-line остаётся актуальной только в гибридных конфигах, где CCcam стоит фронтендом для старых ресиверов, которые не умеют работать напрямую с OScam, а OScam поднят как cccam-совместимый бэкенд. В таких схемах порт 12000 занят CCcam, и важно не допустить конфликта при запуске обоих сервисов на одной машине.
Практические советы для стабильного просмотра
Даже самая стабильная линия 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 или внешние мониторы.