Card Reading в кардшаринге: настройка ридера и чтение карт 2026

Reading cardsharing — это процесс, на котором держится вся система: физическая смарт-карта читается кардридером, Control Word извлекается и отправляется клиентам. Звучит линейно, но именно здесь большинство застревает. Карта не определяется, ATR валится с ошибкой, или reader показывает CONNECTED, а каналы не открываются. В этой статье — реальные конфиги, конкретные команды диагностики и объяснение каждого параметра.

Что такое Reader в кардшаринге и как работает чтение карт

Многие путают "кардридер" как физическое устройство и "reader" как конфигурационную сущность в OScam. Это разные вещи, хотя и связанные. Важно понять оба уровня.

Принцип работы card reading: от смарт-карты до дешифрации

Цепочка такая: спутниковый ресивер присылает зашифрованный ECM-пакет → OScam находит подходящий reader → reader отправляет ECM на смарт-карту → карта возвращает Control Word (CW) → CW идёт обратно к ресиверу для расшифровки видеопотока. Всё это происходит каждые несколько секунд, потому что CW периодически меняется.

Физически смарт-карта общается с кардридером по протоколам ISO 7816 — T0 (байт-ориентированный) или T1 (блочный). OScam абстрагирует это через параметр protocol в конфиге. Вся эта механика скрыта за несколькими строками в oscam.server.

ATR (Answer To Reset) — первое что карта говорит ридеру при включении. По ATR можно определить тип карты, поддерживаемые протоколы и тактовую частоту. Если ATR не проходит — дальше ничего не работает.

Типы ридеров: внутренние, USB, сетевые (Phoenix, Smargo, SC8in1)

Для одной карты достаточно USB-ридера на чипе FT232 — это Phoenix или Smartmouse. Они дешёвые, надёжные и работают с Linux из коробки через модуль ftdi_sio. VID:PID у Phoenix — 0403:6001, легко проверить через lsusb.

Если нужно читать несколько карт одновременно — SC8in1 (8 слотов) или Smargo. Dreambox и VU+ имеют встроенные ридеры (/dev/sci0), что удобно для встраиваемых решений. Дешёвые noname-ридеры с AliExpress — лотерея: часто проблемы с ATR и таймаутами, лучше не рисковать.

На ARM-ресиверах (VU+ Duo2, Dreambox 920) встроенный ридер требует protocol=internal с device=/dev/sci0, а не /dev/ttyUSB0. Это частая точка путаницы при переносе конфига с PC на ресивер.

Разница между локальным чтением и удалённым sharing

Локальное чтение — карта физически вставлена в ридер, подключённый к серверу с OScam. Reader в терминах OScam — это секция [reader] в файле oscam.server. Она может описывать как физический ридер, так и подключение к удалённому серверу по протоколу CCcam, Newcamd или другому.

Удалённый sharing через protocol=cccam или protocol=newcamd525 — OScam выступает клиентом, который получает CW с другого сервера. Для конечного пользователя конфигурация выглядит похоже, но физического ридера нет — только сетевое подключение.

Настройка reader в oscam.server: пошаговая конфигурация

Файл конфигурации ридеров лежит в /etc/oscam/oscam.server или /usr/local/etc/oscam.server в зависимости от дистрибутива. На Enigma2-ресиверах путь обычно /etc/tuxbox/config/oscam.server. Каждый reader — отдельная секция [reader] с уникальным label.

Структура секции [reader] в oscam.server

Минимальная секция выглядит так:

[reader]
label        = mycard
protocol     = mouse
device       = /dev/ttyUSB0
caid         = 0500
ident        = 0500:032830
group        = 1

Label — произвольное имя, используется в логах и WebUI. Group — привязка reader к группе сервисов. Это важно: если reader в group=1, а services в oscam.srvid привязаны к другой группе — каналы не откроются, хотя карта читается нормально.

Параметры для локального кардридера (device, protocol, caid, ident)

Полный конфиг для USB-ридера типа Phoenix на FT232:

[reader]
label          = local_phoenix
protocol       = mouse
device         = /dev/ttyUSB0
caid           = 0500
ident          = 0500:032830
group          = 1
ratelimitecm   = 0
ratelimitseconds = 0
detect         = cd
mhz            = 600
cardmhz        = 600

protocol=mouse — для внешних USB-ридеров через последовательный порт. protocol=internal — для встроенных ридеров ресиверов (/dev/sci0). Если один не работает — попробуйте другой, это нормальная практика диагностики.

mhz и cardmhz — тактовые частоты в единицах 10 кГц. Значение 600 = 6 МГц. Большинство карт работают на 3.579 МГц (357) или 6 МГц (600). Если карта не инициализируется — попробуйте 357.

Если кардридер определился как /dev/ttyUSB1 вместо /dev/ttyUSB0 из-за другого подключённого USB-устройства — зафиксируйте путь через udev rules. Создайте файл /etc/udev/rules.d/99-cardreader.rules:

SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="cardreader0"

После этого ридер всегда будет доступен как /dev/cardreader0, независимо от порядка подключения.

Параметры для удалённого reader (protocol=cccam, server, port, user, password)

Подключение к удалённому серверу по CCcam:

[reader]
label        = remote_cccam
protocol     = cccam
device       = server.example.com,12000
user         = myusername
password     = mypassword
caid         = 0500,1830
group        = 1
reconnecttimeout = 30
lb_weight    = 100

device для сетевых ридеров — хост и порт через запятую. Порт 12000 — стандартный для CCcam. Newcamd обычно на 15000 или 10000, но зависит от сервера.

reconnecttimeout — через сколько секунд пытаться переподключиться при обрыве. 30 секунд — разумное значение, не слишком агрессивное.

Настройка reader для протокола Newcamd (protocol=newcamd525)

Newcamd требует дополнительный параметр — 14-байтный ключ шифрования:

[reader]
label        = remote_newcamd
protocol     = newcamd525
device       = server.example.com,15000
user         = myusername
password     = mypassword
key          = 0102030405060708091011121314
caid         = 1830
group        = 1

Ключ должен совпадать с тем, что настроен на сервере. Если сервер использует стандартный ключ — он обычно 0102030405060708091011121314. Newcamd медленнее CCcam по задержкам, но иногда единственный доступный протокол.

Диагностика проблем чтения карты: ошибки и их решение

Логи OScam — основной инструмент диагностики. Включите подробный уровень логирования в oscam.conf:

[logging]
logfile       = /var/log/oscam/oscam.log
debuglevel    = 512

debuglevel=512 включает подробные логи reader. После правок перезапустите OScam и смотрите лог в реальном времени: tail -f /var/log/oscam/oscam.log.

Карта не определяется: проверка device и прав доступа (/dev/ttyUSB*)

Первым делом — проверить что система вообще видит ридер:

dmesg | grep -i usb
ls -la /dev/ttyUSB*
lsusb

Если /dev/ttyUSB0 не создаётся — проверьте модуль: lsmod | grep ftdi_sio. Нет модуля — modprobe ftdi_sio. На некоторых минималистичных системах его может не быть вообще, тогда нужно собирать или доустанавливать.

Права доступа — очень частая проблема. OScam обычно запускается не от root, поэтому:

chmod 666 /dev/ttyUSB0
# или лучше — добавить пользователя в группу:
usermod -a -G dialout oscam

На SELinux-системах (CentOS, RHEL) одних прав недостаточно. SELinux может блокировать доступ к /dev/ttyUSB* даже при правильных chmod. Проверьте: ausearch -m avc -ts recent | grep ttyUSB. Быстрое решение — setenforce 0, правильное — настроить контекст SELinux для устройства.

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

Ошибка ATR (Answer To Reset): несовместимость протокола T0/T1

В логах выглядит примерно так: ATR not conforming to ISO 7816-3 или просто card not found после попытки инициализации. Это значит физический контакт есть, но карта не отвечает корректно.

Что делать:

  • Проверить физический контакт карты — достать, продуть, вставить обратно
  • Попробовать сменить protocol: если стоит mouse — поставить internal и наоборот
  • Поменять частоту: mhz=357 или mhz=500
  • Проверить detect=cd — некоторые ридеры не поддерживают CD-линию, тогда уберите этот параметр

ATR — это последовательность байт, которую карта выдаёт при сбросе. Первый байт всегда 3B (прямая конвенция) или 3F (обратная). Если карта выдаёт 3F, а ридер настроен на прямую — будет ошибка. OScam обычно определяет это автоматически, но иногда помогает явно указать atr=3F....

reader not found или reader disabled в логах OScam

reader not found — OScam не видит секцию reader с таким label. Проверьте опечатки в label, убедитесь что файл oscam.server сохранён и синтаксис корректен (нет лишних пробелов перед [reader]).

reader disabled — reader найден но выключен. Добавьте enabled=1 в секцию reader. По умолчанию reader включён, но если кто-то отключил через WebUI — он останется выключенным до следующего явного включения.

Таймауты чтения: параметры ratelimitecm и ratelimitseconds

Если карта читается, но периодически появляются таймауты и ECM timeout в логах — скорее всего превышен ratelimit. Многие карты имеют встроенную защиту от слишком частых ECM-запросов и просто перестают отвечать на некоторое время.

[reader]
label            = local_phoenix
...
ratelimitecm     = 3
ratelimitseconds = 10

Это значит: не более 3 ECM за 10 секунд. Если клиентов много — включите кэширование (cacheex), чтобы одинаковые ECM не отправлялись на карту повторно.

Проблемы с entitlement: карта читается, но каналы не открываются

В WebUI (по умолчанию порт 8888) → вкладка Readers → кликнуть на reader → смотреть Entitlements. Если список пустой — карта либо не активирована, либо OScam не может прочитать entitlements из-за неправильного CAID/ident.

Проверьте что caid в конфиге совпадает с реальным CAID карты. Посмотреть можно через WebUI: при удачном ATR OScam покажет CAID карты в секции reader. Сверьте с тем что прописано в конфиге.

Также проверьте параметр group. Reader в group=1 отдаёт карту только сервисам/клиентам, привязанным к group=1. Если пользователь в oscam.user привязан к group=2 — reader его не обслужит.

Карты с двойным CAID (например Viaccess + Nagravision на одной карте) могут требовать двух секций reader или дополнительного параметра boxid. Проверьте changelog вашей версии OScam — это поведение менялось между версиями.

Настройка Reader в CCcam.cfg: отличия от OScam

CCcam проще в начальной настройке, но даёт меньше контроля. Большинство опытных пользователей рано или поздно переходят на OScam — именно из-за гибкости управления reader, ratelimit, load balancing и кэшированием ECM.

Формат C-line и F-line в CCcam.cfg

Конфиг CCcam лежит в /etc/CCcam.cfg. Подключение к серверу:

C: server.example.com 12000 myusername mypassword

C-line — это клиентское подключение к CCcam-серверу. F-line — это аккаунт, который сервер предоставляет своим клиентам:

F: clientusername clientpassword 1 0 0 0 {}

В одном файле может быть сколько угодно C-line и F-line. CCcam автоматически балансирует между несколькими C-line, но не так гибко как OScam.

Параметры чтения локальной карты в CCcam (SMARTCARD_CLOCK, SERIAL_READER)

Для локального ридера в CCcam.cfg:

SERIAL_READER = /dev/ttyUSB0
SMARTCARD_CLOCK_FREQUENCY = 6000000

SMARTCARD_CLOCK_FREQUENCY — тактовая частота в Гц. 6000000 = 6 МГц, аналог mhz=600 в OScam. Опций намного меньше чем в OScam — нет отдельного управления ratelimit, нет гибкой привязки к группам, нет cacheex.

Миграция конфигурации reader с CCcam на OScam

Каждая C-line из CCcam.cfg превращается в секцию [reader] в oscam.server:

# CCcam.cfg:
C: server.example.com 12000 myuser mypass

# Становится в oscam.server:
[reader]
label    = migrated_cccam
protocol = cccam
device   = server.example.com,12000
user     = myuser
password = mypass
group    = 1

Для локального ридера:

# CCcam.cfg:
SERIAL_READER = /dev/ttyUSB0
SMARTCARD_CLOCK_FREQUENCY = 6000000

# Становится в oscam.server:
[reader]
label    = local_card
protocol = mouse
device   = /dev/ttyUSB0
mhz      = 600
cardmhz  = 600
group    = 1

Существуют автоматические конвертеры (oscam-config-converter), но я рекомендую переносить вручную. При автоматической конверсии легко пропустить неправильно транслированный параметр, и потом долго искать проблему.

При миграции с OScam 11xxx на 12xxx проверьте changelog — в версии 12xxx изменился формат некоторых параметров reader. В частности, некоторые параметры cacheex получили новые значения по умолчанию.

Оптимизация reader: load balancing и приоритизация

Если у вас несколько reader — локальная карта и один-два удалённых — OScam может работать с ними как с единым пулом. Это реально полезно: если основной источник недоступен, система автоматически переключается на резервный.

Параметр lb_weight и приоритет ридеров

lb_weight — вес reader при load balancing. Чем выше значение, тем больше ECM-запросов идёт на этот reader:

[reader]
label     = primary_card
protocol  = mouse
device    = /dev/ttyUSB0
lb_weight = 100
group     = 1

[reader]
label     = secondary_remote
protocol  = cccam
device    = server.example.com,12000
user      = myuser
password  = mypass
lb_weight = 50
group     = 1

При таких настройках локальная карта получит примерно 2/3 запросов, удалённый reader — 1/3. OScam сам отслеживает время ответа каждого reader и учитывает его в балансировке — медленный reader автоматически получает меньше запросов.

Fallback reader: автоматическое переключение при отказе

fallback=1 — reader используется только если все основные недоступны:

[reader]
label    = emergency_backup
protocol = cccam
device   = backup.example.com,12000
user     = backupuser
password = backuppass
fallback = 1
group    = 1

Такой reader "спит" пока основные работают. Как только все основные reader уходят в ошибку — backup автоматически включается. Хорошая практика для production-систем.

Кэширование ECM: параметры cacheex и cacheex_maxhop

Cacheex — механизм обмена закэшированными CW между OScam-серверами. Три режима:

  • cacheex=1 — только принимать кэш от других серверов (пассивный)
  • cacheex=2 — принимать и отдавать кэш (активный обмен)
  • cacheex=3 — агрессивный режим, push всех CW без запроса

cacheex_maxhop=3 — максимальное количество "прыжков" кэша между серверами. Без этого ограничения кэш может расходиться бесконечно по сети OScam-серверов.

Для одного сервера с несколькими локальными ридерами cacheex не нужен. Он полезен когда несколько OScam-серверов объединены в сеть и нужно избежать одинаковых ECM-запросов к одной карте.

Мониторинг состояния reader через WebUI и логи

WebUI по умолчанию на порту 8888 (настраивается в oscam.conf секция [webif]). Вкладка "Readers" показывает:

  • CONNECTED / CARDOK / ERROR — статус reader
  • Entitlements — активные подписки на карте
  • ECM count — количество обработанных ECM-запросов
  • Среднее время ответа (ms)

CARDOK означает карта определена и читается нормально. CONNECTED без CARDOK — соединение есть, но карта не инициализирована. ERROR — нужно смотреть логи.

В логах ищите паттерн r [label] — все строки, связанные с конкретным reader. Например: grep "r \[local_phoenix\]" /var/log/oscam/oscam.log | tail -50 покажет последние события для этого reader.

Частые вопросы

Какой кардридер лучше выбрать для OScam?

Зависит от задачи. Для одной карты — USB Phoenix или Smartmouse на чипе FT232 (VID:PID 0403:6001). Для нескольких карт одновременно — SC8in1 (8 слотов) или Smargo. Если работаете на Dreambox или VU+ — используйте встроенный ридер, это проще всего. Главное требование — совместимость с протоколами T0/T1 и поддержка в ядре Linux через модуль ftdi_sio. Дешёвые noname-ридеры с маркетплейсов часто дают проблемы с ATR и непредсказуемые таймауты — не стоит экономить.

Чем отличается protocol=internal от protocol=mouse в OScam?

internal — для встроенных ридеров ресиверов, устройство обычно /dev/sci0. mouse — для внешних USB-ридеров типа Phoenix или Smartmouse, подключённых через последовательный порт (/dev/ttyUSB0). Если USB-ридер не работает с internal — попробуйте mouse. Это быстрее чем искать причину в настройках: просто меняете одно слово и перезапускаете OScam.

Почему reader показывает CONNECTED но каналы не открываются?

CONNECTED означает соединение установлено, но проблема может быть в нескольких местах. Первое — проверьте caid и ident: они должны точно совпадать с тем что выдаёт карта (смотрите WebUI). Второе — entitlement: откройте вкладку Readers в WebUI и проверьте список активных подписок. Третье — group: reader и пользователь в oscam.user должны быть в одной группе. Четвёртое — ratelimit: если превышен лимит ECM-запросов, карта временно перестаёт отвечать. Смотрите логи с debuglevel=512 — там будет конкретная причина отказа.

Как проверить что кардридер определился в Linux?

Три команды последовательно: dmesg | grep -i usb — видеть момент обнаружения устройства системой. ls -la /dev/ttyUSB* — убедиться что файл устройства создан. lsusb — увидеть VID:PID ридера (для Phoenix FT232 это 0403:6001). Если устройства нет — проверьте модуль: lsmod | grep ftdi_sio. Нет в списке — загрузите: modprobe ftdi_sio. На Enigma2-ресиверах встроенный ридер появляется как /dev/sci0, а не ttyUSB.

Можно ли использовать несколько reader одновременно в OScam?

Да, и это одно из главных преимуществ OScam перед CCcam. Количество reader не ограничено — каждый описывается отдельной секцией [reader] с уникальным label. OScam автоматически балансирует нагрузку между ними. Через lb_weight задаёте приоритет, через fallback=1 — помечаете резервные reader. Можно смешивать: локальная карта в USB-ридере + несколько удалённых подключений по CCcam/Newcamd — всё работает параллельно.

Как перенести настройки reader с CCcam на OScam?

Каждая C-line (C: host port user pass) становится секцией [reader] с protocol=cccam, device=host,port, user и password. Локальный ридер: SERIAL_READER=/dev/ttyUSB0device=/dev/ttyUSB0 с protocol=mouse. F-line из CCcam.cfg — это аккаунты клиентов, они переносятся в oscam.user, а не в oscam.server. Существуют автоматические конвертеры, но лучше делать вручную — так сразу добавляете нужные параметры вроде lb_weight, group и ratelimitecm, которых в 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 или внешние мониторы.