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 просто не было.

Practical checklist for smooth viewing

Even the best CCCam or OSCam line needs two or three simple preparations. Update your receiver firmware, reset the ECM cache once a week and keep 15–20% free space on the USB stick or internal flash so that the reader can store keys without delays.

When tuning a dish, aim for MER/BER reserve: a two‑degree offset or a loose F‑connector often causes the “freezing” that users blame on cardsharing. Keep a short patch cord to test alternative routers, and save two profiles in OSCam — one for TCP, one for UDP — so you can switch instantly if your ISP starts filtering a protocol.

Utgard.tv monitors each hub 24/7, but you can speed up diagnostics by keeping a short log of your receiver actions. Note the time when you changed the channel, which CAID was active and whether you used Wi‑Fi or Ethernet. This tiny “journal” helps engineers reproduce your environment in the lab and return with a solution in minutes instead of hours.

  • Keep two line slots enabled: if the first server hits a maintenance window, the second one instantly takes over without re-entering credentials.
  • Run a monthly speed and latency test. Stable 1–2 Mbps with ping <80 ms is enough for SD/HD, but if jitter exceeds 20 ms, switch the router to wired mode.
  • Save the Utgard.tv status page and Telegram bot @utgard_tv_bot to bookmarks — they publish maintenance notices before SEMrush or uptime monitors raise alerts.