iCam и OScam: настройка, конфиги и отличия в 2026

Если вы занимаетесь кардшарингом дольше пяти минут, то уже наткнулись на путаницу вокруг icam oscam. Что это — одно и то же? Форк? Конкурент? На большинстве форумов об этом пишут три слова и дают ссылку на скачивание. Здесь разберём нормально: архитектура, конфиги, диагностика, безопасность — всё что нужно для рабочего стека в 2026.

Что такое iCam и его связь с OScam

OScam — это open-source условный доступ менеджер, наследник OSCAM (Open Source Conditional Access Module). Написан на C, поддерживает десятки протоколов и считается стандартом де-факто для серьёзных инсталляций. iCam вырос из него как отдельная сборка с конкретными целями.

Происхождение iCam как форка OScam

iCam начинался как патч-сет поверх основной ветки OScam. Разработчики добавили поддержку дополнительных EMU-модулей, расширили список поддерживаемых смарт-карт и ускорили цикл обновлений ключей. По сути — тот же движок, но с другим набором патчей и иной политикой выпуска.

Это не конкурирующий проект с нуля. Кодовая база на 90% идентична OScam. Разница — в деталях реализации EMU, в частоте обновлений и в том, какие пулл-реквесты принимают мейнтейнеры.

Ключевые отличия от классического OScam

Классический OScam — консервативный проект. Патчи проходят долгую проверку, EMU-функционал вынесен в отдельную ветку (OScam-EMU). iCam агрессивнее: EMU-патчи включены по умолчанию, ключи обновляются чаще, сборка иногда содержит экспериментальные фиксы которые ещё не приняты в mainline.

Это меньше стабильности, но больше актуальности. Для пользователя это означает: если ваш провайдер сменил ключи и классический OScam ещё не поймал обновление — iCam может справиться раньше.

Поддерживаемые платформы и ресиверы

Обе сборки работают на Enigma2, DreamOS, VTi, ATV. Бинарники для ресиверов распространяются в форматах ipk (Opkg), AppImage для x86/x64 Linux-серверов, и компилируются из исходников под любую архитектуру.

Важный нюанс: iCam-бинарники иногда собираются под более новый glibc чем тот что стоит на старых ARM-ресиверах (VU+ Solo 2, DM800). В этом случае запуск завершится ошибкой version 'GLIBC_2.33' not found. Решение — сборка из исходников прямо под целевую платформу или выбор более старой версии бинарника.

Когда выбирать iCam, а когда OScam

OScam: если нужна максимальная стабильность, сервер работает на проде и апдейты EMU не критичны. iCam: если вы гонитесь за актуальными EMU-ключами или хотите новейшие патчи совместимости.

На практике для шаринг-сервера с реальными картами разница минимальна. icam oscam — скорее выбор по личным предпочтениям и тому, какую сборку проще достать для вашей платформы.

Установка iCam/OScam на ресивер и Linux-сервер

Пройдёмся по реальным командам. Без лирики.

Установка на Enigma2 (ipk пакет)

Скачиваете ipk-пакет под архитектуру ресивера (mipsel, armv7, aarch64). Затем:

opkg install oscam_*.ipk
# или для iCam:
opkg install icam_*.ipk

После установки конфиги лежат в /etc/tuxbox/config/. Там же появятся oscam.conf, oscam.server, oscam.user. Плагин DVBAPI подхватывается Enigma2 автоматически через /tmp/camd.socket.

Сборка из исходников на Debian/Ubuntu

apt-get install build-essential libssl-dev libpcsclite-dev
git clone https://github.com/oscam-emu/oscam-emu.git
cd oscam-emu
./config.sh --enable-emu --enable-cccam --enable-newcamd --enable-cs378x
make -j$(nproc)
cp oscam /usr/local/bin/
chmod 755 /usr/local/bin/oscam

Каталог конфигов создаём вручную: mkdir -p /usr/local/etc/oscam.

Запуск через systemd unit

Вот рабочий unit-файл. Кладём в /etc/systemd/system/oscam.service:

[Unit]
Description=OScam Conditional Access Server
After=network.target

[Service]
Type=forking
User=oscam
Group=oscam
ExecStart=/usr/local/bin/oscam -b -c /usr/local/etc/oscam -t /tmp/.oscam
Restart=always
RestartSec=5
PIDFile=/tmp/.oscam/oscam.pid

[Install]
WantedBy=multi-user.target

Запуск:

systemctl daemon-reload
systemctl enable oscam
systemctl start oscam

Структура директорий: /etc/tuxbox/config/ и /usr/local/etc/

На Enigma2-ресиверах: /etc/tuxbox/config/ — основной каталог. На Linux-серверах: /usr/local/etc/oscam/ или любой каталог передаваемый через флаг -c. Рабочие файлы (логи, пид, кэш) уходят в /tmp/.oscam/.

Права доступа и владелец процесса

Конфигурационные файлы с паролями — строго 600:

chown oscam:oscam /usr/local/etc/oscam/*
chmod 600 /usr/local/etc/oscam/oscam.user
chmod 600 /usr/local/etc/oscam/oscam.server

Запускать от root — плохая идея. Создайте отдельного пользователя: useradd -r -s /bin/false oscam.

Базовая конфигурация: oscam.conf, oscam.server, oscam.user

Здесь большинство туториалов облажались — показывают конфиги без объяснения что означает каждый параметр. Исправляем это.

oscam.conf — глобальные параметры и WebIF на порту 8888

[global]
logfile                = /tmp/.oscam/oscam.log
maxlogsize             = 512
logduplicatelines      = 0
disableuserfile        = 1
saveinithistory        = 1

[webif]
httpport               = 8888
httpuser               = admin
httppwd                = yourpassword
httpallowed            = 127.0.0.1
httprefresh            = 15

[monitor]
port                   = 988
monlevel               = 2

httpallowed = 127.0.0.1 — обязательно. Открывать WebIF в интернет без этого параметра нельзя ни при каких обстоятельствах.

oscam.server — описание ридеров и протоколов (cccam, newcamd, cs378x)

[reader]
label                  = myccam
protocol               = cccam
device                 = server.example.com,12000
user                   = mylogin
password               = mypassword
group                  = 1
cccversion             = 2.3.2
cccmaxhops             = 3
ccckeepalive           = 1
inactivitytimeout      = 30
reconnecttimeout       = 15
lb_weight              = 100

inactivitytimeout — сколько секунд без активности до разрыва соединения. 30 секунд — разумный дефолт для нестабильных линков. lb_weight влияет на балансировщик: чем выше вес, тем чаще OScam обращается к этому ридеру.

oscam.user — учётные записи клиентов и группы

[account]
user                   = localclient
pwd                    = clientpass
group                  = 1
au                     = 1
betatunnel             = 1
uniq                   = 4
monlevel               = 0

uniq = 4 — запрет повторного логина с тех же учётных данных. Обязательно для публичных серверов, иначе один аккаунт смотрят десятки людей.

oscam.dvbapi — маппинг CAID для прямого расшифровывания

[dvbapi]
enabled                = 1
au                     = 1
boxtype                = dreambox
user                   = localclient
listenport             = 9000

Параметр boxtype критичен. Для VU+ ставим vu, для Dreambox — dreambox, для DM900 — dm900. Неправильный boxtype — и DVBAPI не поднимется даже при идеально настроенном остальном.

oscam.services — группировка каналов по провайдеру

[PROVIDER1]
caid               = 0500
provid             = 000000
srvid              = 0001,0002,0003

Этот файл полезен когда нужно ограничить доступ конкретного пользователя определёнными каналами или провайдерами. В простых конфигурациях его можно не создавать.

Протоколы и порты: CCcam, Newcamd, CS378x, GBox

Каждый протокол существует по своей причине. Давайте по делу.

CCcam протокол: порт 12000 и обмен hops

CCcam работает на порту 12000 по умолчанию. Handshake: клиент подключается, сервер отдаёт список доступных CAID/провайдеров через механизм "hops". Каждый hop — это один узел в цепи обмена ключами. cccmaxhops = 3 означает что OScam примет карты не глубже третьего уровня.

CCcam хорошо работает через интернет с нестабильным каналом. Протокол умеет переподключаться, поддерживает keepalive. Но он тяжелее по трафику и сложнее в диагностике чем более простые альтернативы.

Newcamd: индивидуальные порты на CAID

Newcamd исторически старше CCcam. Каждый CAID получает свой порт — в конфиге это выглядит как port = 15050@0500:000000. Протокол хорошо поддерживается старыми CAM-модулями и ресиверами начала 2010-х.

Шифрование в newcamd слабее чем в CS378x. Для нового стека рекомендую CS378x, newcamd оставить только для совместимости.

CS378x (camd35 over TCP): надёжность и шифрование

CS378x — это camd35 поверх TCP с шифрованием. Работает на порту 15000 (по умолчанию). Быстрее CCcam на локальной сети, лучше переносит нестабильность чем raw UDP camd35. Latency обычно 5–15мс против 20–50мс у CCcam на дальних серверах.

[reader]
label                  = local_cs378x
protocol               = cs378x
device                 = 192.168.1.100,15000
user                   = localuser
password               = localpass
group                  = 1

DVBAPI для локальной расшифровки на ресивере

DVBAPI — не протокол шаринга, а интерфейс между OScam и демультиплексором ресивера. OScam получает ECM от тюнера через сокет /tmp/camd.socket, расшифровывает, отдаёт обратно. Никакой сети — всё локально. Это самый быстрый способ работы на ресивере.

Когда какой протокол использовать

  • CCcam — подключение к удалённому серверу через интернет, нужна совместимость с большинством провайдеров
  • CS378x — локальная сеть или VPN с доверенными пирами, нужна скорость
  • Newcamd — старое оборудование требует именно этот протокол
  • DVBAPI — локальная расшифровка на ресивере с Enigma2

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

80% проблем с icam oscam решается чтением логов. Звучит банально, но большинство людей или не смотрит логи вообще, или смотрит не там.

Анализ логов через /tmp/.oscam/oscam.log

# Живой хвост лога:
tail -f /tmp/.oscam/oscam.log

# Только ошибки по конкретному ридеру:
tail -f /tmp/.oscam/oscam.log | grep "myccam"

# Подробный debug (осторожно — нагрузка на диск):
oscam -b -d 255 -c /usr/local/etc/oscam

Уровень -d 255 выдаёт всё включая ECM байты. На проде не держать — лог разрастается за минуты. Используйте только для диагностики конкретной проблемы.

Ошибка connection refused и проверка iptables

Если в логе видите Connection refused или Connection timed out — сначала проверьте файрвол:

# Открыть порт CCcam:
iptables -A INPUT -p tcp --dport 12000 -j ACCEPT

# Открыть WebIF только для локального доступа:
iptables -A INPUT -p tcp --dport 8888 -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 8888 -j DROP

# Проверить что порт слушается:
ss -tlnp | grep 12000

Если ss показывает что OScam не слушает порт — проблема в конфиге, не в файрволе. Проверьте секцию [reader] и синтаксис oscam.server.

ECM timeout: настройка ecmnotfoundlimit и lb_min_ecmcount

В логе видите ECM: not found или ECM time: timeout? Варианты:

[global]
# Увеличить порог перед переключением ридера:
ecmnotfoundlimit       = 10

[reader]
lb_min_ecmcount        = 5
lb_max_ecmcount        = 500
lb_reopen_seconds      = 900

ecmnotfoundlimit = 10 означает что после 10 неудачных ECM OScam переключится на следующий ридер. Маленькое значение — частые переключения, зато быстрее реакция на мёртвый ридер.

Card not found и проверка CAID/SID

Открываете WebIF (http://127.0.0.1:8888), идёте в Readers → ваш ридер → Cards. Если карта не отображается — ридер не авторизовался. Проверяете логин/пароль и соответствие CAID.

Типичная ошибка: ридер подключён, карты есть, но канал не декодируется. Причина — SID канала не входит в список разрешённых на стороне сервера. Это проблема на стороне провайдера.

Freeze картинки: lb_savepath и балансировка ридеров

[global]
lb_savepath            = /usr/local/etc/oscam/oscam.stats

OScam сохраняет статистику ECM-времени и при следующем старте выбирает ридер с исторически лучшим latency. Если freeze продолжается — проверьте ping до сервера. Больше 100мс для HD-каналов уже проблема. Для 4K-контента комфортный порог — до 50мс.

Безопасность и оптимизация работы

Большинство туториалов по icam oscam заканчиваются на "запустили, работает". Это ошибка — открытый OScam на VPS это дыра.

Ограничение WebIF: httpallowed и httpuser/httppwd

[webif]
httpport               = 18080
httpuser               = myadmin
httppwd                = $(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 24)
httpallowed            = 127.0.0.1,192.168.1.0/24
httpdyndns             = 0

Меняйте порт с дефолтного 8888 на нестандартный. Боты сканируют именно 8888. На нестандартном порту — тишина. И никогда не оставляйте пустые httpuser/httppwd — это открытый WebIF для любого кто знает порт.

Критическая ошибка которую видел несколько раз: человек меняет httpallowed в WebIF через браузер, сохраняет, и теряет доступ к WebIF навсегда потому что не перезапустил OScam для применения изменений. Всегда редактируйте oscam.conf напрямую и делайте systemctl restart oscam.

Fail2ban для защиты от bruteforce на порт WebIF

Создайте /etc/fail2ban/filter.d/oscam.conf:

[Definition]
failregex = .* user .* \(\) rejected.*
            .* user .* \(\) authentication failed.*
ignoreregex =

Затем в /etc/fail2ban/jail.local:

[oscam-webif]
enabled  = true
port     = 18080
filter   = oscam
logpath  = /tmp/.oscam/oscam.log
maxretry = 5
bantime  = 3600
findtime = 600

После systemctl restart fail2ban — пять неудачных попыток за 10 минут блокируют IP на час.

Настройка cacheex для снижения нагрузки

[reader]
cacheex                = 2
cacheex_maxhop         = 2

cacheex_mode = 2 — двусторонний обмен кэшем с доверенными пирами. OScam кэширует расшифрованные CW и отдаёт их другим серверам без повторного обращения к карте. Нагрузка на ридер падает значительно.

Но осторожно: cacheex с ненадёжным пиром приводит к падению OScam или получению мусорных CW. Включайте только с проверенными партнёрами.

Мониторинг через MRTG или Grafana

OScam умеет отдавать статистику через Monitor API на порту 988. Prometheus-exporter для OScam можно найти на GitHub — он парсит WebIF и экспортирует метрики: количество активных клиентов, ECM время, количество ошибок по ридеру.

В связке с Grafana получаете дашборд с историей. Я настраивал такой стек и он реально помогает поймать момент когда ридер начинает деградировать задолго до того как пользователи жалуются на freeze.

Регулярная ротация логов через logrotate

# /etc/logrotate.d/oscam
/tmp/.oscam/oscam.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    postrotate
        systemctl reload oscam 2>/dev/null || true
    endscript
}

Без ротации лог за несколько недель работы займёт несколько гигабайт. На VPS с маленьким диском это критично.


Чем iCam отличается от OScam-EMU?

iCam — сборка OScam со встроенными EMU-патчами и обновлёнными ключами, нацеленная на быстрые релизы. OScam-EMU — официальная ветка с поддержкой эмуляции, более консервативная в плане принятия патчей. Функционально близки: оба поддерживают одни и те же протоколы и конфиги. Разница в частоте обновлений и конкретном наборе патчей. Если OScam-EMU закрывает ваши нужды — нет смысла переходить на iCam.

Какой порт по умолчанию использует OScam WebIF?

Порт 8888, задаётся параметром httpport в секции [webif] oscam.conf. Настоятельно рекомендую сменить на нестандартный (например, 18080 или 29191) и ограничить доступ через httpallowed = 127.0.0.1. На дефолтном 8888 боты стучатся постоянно.

Почему не работает DVBAPI после установки iCam?

Первое — проверить boxtype в oscam.dvbapi (dreambox, vu, dm900 — в зависимости от ресивера). Второе — убедиться что /tmp/camd.socket существует и OScam имеет права на запись. Третье — права на сам сокет: ls -la /tmp/camd.socket. После изменений перезапускать нужно сначала OScam, потом Enigma2. В обратном порядке DVBAPI не подхватывается.

Как добавить ридер через CCcam протокол в oscam.server?

Минимальная рабочая секция:
[reader]
label = myserver
protocol = cccam
device = hostname,12000
user = login
password = password
group = 1
cccversion = 2.3.2
cccmaxhops = 3
ccckeepalive = 1

После сохранения файла OScam применяет конфиг без перезапуска — нужно подождать несколько секунд или нажать Refresh в WebIF.

Что делать если в логах постоянно ECM: not found?

Проверить по порядку: 1) активна ли подписка на данный CAID у провайдера, 2) правильное ли время на сервере (ntpd -q или chronyc makestep), 3) посмотреть hops у ридера в WebIF — если 0 карт, ридер не авторизован. Увеличить ecmnotfoundlimit = 15 чтобы OScam не переключался слишком быстро при временных сбоях.

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

Технически да — разные конфиг-директории через -c, разные порты WebIF, ридеров и DVBAPI, разные systemd units. Но практического смысла нет. Выберите одну сборку. Два экземпляра на одном железе создают путаницу с конфигами и конкурируют за ресурсы. Если хочется поэкспериментировать — используйте контейнер.

Как настроить автозапуск OScam через systemd?

Создать /etc/systemd/system/oscam.service с секциями Unit (Description, After=network.target), Service (ExecStart=/usr/local/bin/oscam -b -c /usr/local/etc/oscam, User=oscam, Restart=always, RestartSec=5) и Install (WantedBy=multi-user.target). Затем выполнить systemctl daemon-reload и systemctl enable oscam. После перезагрузки OScam стартует автоматически.

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.