Миграция с CCcam на OScam: полное руководство 2026
Процесс cccam to oscam — одна из самых частых задач, с которой сталкиваются администраторы кардшаринг-серверов. CCcam застрял на версии 2.3.2 ещё в 2012 году, разработка заброшена, а OScam продолжает развиваться через форки oscam-emu и oscam-trunk. Если вы читаете это — вы, скорее всего, уже решили мигрировать. Хорошая новость: это реально сделать за несколько часов без потери подключений.
Главное — понять что конвертация cccam to oscam — это не просто "скопировать C-lines". Это смена архитектуры конфигурации. Один файл CCcam.cfg превращается в четыре отдельных файла OScam с разными ролями. Разберём по шагам.
Почему пользователи переходят с CCcam на OScam
CCcam — закрытый бинарник, последняя версия 2.3.2 вышла больше десяти лет назад. Никакого исходного кода, никаких патчей безопасности, никакой поддержки новых стандартов шифрования. OScam — открытый исходный код, активный SVN (revision 11800+), форки живут и обновляются.
Но разница не только в поддержке.
Ключевые архитектурные различия
CCcam — монолит. Один процесс, один файл конфигурации, один протокол. OScam — модульный: каждый протокол, каждый тип reader, каждая группа клиентов — отдельная сущность с независимыми параметрами. Это сложнее в начале, но даёт контроль который в CCcam просто невозможен.
CCcam не умеет писать в базу данных статистику по ECM, не умеет балансировать нагрузку между readers. OScam делает это из коробки через lb_mode. Разница в latency на медленных peers — ощутимая, я видел уменьшение времени ECM с 800ms до 200ms после включения lb_mode=1.
Что OScam умеет, а CCcam — нет
Веб-интерфейс на порту 8888 — полная картина по всем readers, users, ECM в реальном времени. EMM-поддержка для обновления карт прямо через OScam, без отдельного emu. DVB API для нативной интеграции с Enigma2 приёмниками — никаких промежуточных плагинов. Поддержка протоколов в одном бинарнике: cccam, newcamd, camd35, gbox — подключай клиентов любого типа.
gbox-протокол в CCcam вообще отсутствует. Newcamd в CCcam есть, но настраивается через один блок в CCcam.cfg без гибкости. В OScam каждый протокол — отдельная секция с десятками параметров.
Когда миграция оправдана, а когда нет
Мигрировать стоит если: нужна EMM-поддержка, нужен веб-мониторинг, peers работают через разные протоколы, хочется lb_mode для автовыбора быстрого reader, приёмник — Enigma2 с поддержкой DVB API.
Не стоит мигрировать если: все peers требуют специфических CCcam-only функций которые не задокументированы в OScam, или система работает идеально и любое изменение — риск даунтайма на продакшне с живыми пользователями. OScam не сделает карты "лучше" — он только лучше управляет маршрутизацией ECM.
Подготовка к миграции: что собрать из CCcam
Никогда не останавливайте CCcam пока не сделали бэкап и не проверили что OScam поднялся на параллельном порту. Это правило номер один.
Где лежат конфиги CCcam
На Enigma2 приёмниках (Dreambox, VU+, Zgemma): /var/etc/CCcam.cfg. На обычном Linux-сервере: /usr/local/etc/CCcam.cfg или /etc/CCcam.cfg в зависимости от способа установки. На OpenEmbedded системах иногда встречается /etc/CCcam.cfg. Если не уверены — find / -name "CCcam.cfg" 2>/dev/null.
Структура C-line, N-line, F-line
C-line — подключение к удалённому CCcam-серверу (исходящий reader):
C: server.example.com 12000 myusername mypassword {hop=1}
N-line — подключение к newcamd-серверу:
N: server.example.com 15000 myuser mypass 01 02 03 04 05 06 07 08 09 10 11 12 13 14
F-line — локальный пользователь которому раздаётся CCcam:
F: username password
Именно C-lines нужно конвертировать в блоки [reader] в oscam.server. N-lines тоже конвертируются, но через protocol=newcamd с DES-ключом из N-line. F-lines станут записями в oscam.user.
Экспорт списка peers и hop-настроек
Пока CCcam ещё работает, зайдите через telnet: telnet localhost 16001, потом команда s — покажет активных peers и их статус. Скопируйте вывод. Это ваш список того что реально работает, а не того что прописано в конфиге (иногда в CCcam.cfg есть мёртвые C-lines которые стоит выкинуть сразу).
Hop-настройка {hop=1} в C-line означает что CCcam не будет передавать эти карты дальше по сети. Аналог в OScam — параметр cccmaxhops в reader.
Резервная копия рабочей конфигурации
cp /var/etc/CCcam.cfg /var/etc/CCcam.cfg.backup.$(date +%F)
# Либо для Linux-сервера:
cp /usr/local/etc/CCcam.cfg /usr/local/etc/CCcam.cfg.backup.$(date +%F)
Бэкап занимает секунду. Его отсутствие может стоить часов восстановления.
Установка OScam и базовая структура конфигов
OScam распространяется через официальный SVN-репозиторий и несколько git-зеркал. Для Enigma2 — ищите готовые ipk-пакеты в официальных фидах вашего образа (OpenATV, OpenPLi, OpenVix). Не берите бинарники с непонятных сайтов — только официальные сборки или компилируйте сами.
Где брать актуальный билд OScam
SVN: svn co https://svn.streamboard.tv/oscam/trunk oscam-trunk. Для Enigma2 приёмников — пакеты из репозитория образа, например opkg install oscam на OpenATV. Форк oscam-emu собирается из https://github.com/oscam-emu/oscam-patched если нужны программные эмуляторы.
Для классической миграции cccam to oscam достаточно ванильного oscam-trunk. oscam-emu нужен только в специфических сценариях с определёнными CAID.
Структура конфигурационных директорий
На Enigma2: /etc/tuxbox/config/oscam/. На Linux: /usr/local/etc/oscam/ или /etc/oscam/. Запустить с указанием директории: oscam -b -c /etc/tuxbox/config/oscam/.
Минимальный набор: oscam.conf, oscam.server, oscam.user, oscam.dvbapi
Четыре файла — и ничего лишнего для старта. Вот минимальный oscam.conf:
[global]
logfile = /tmp/oscam.log
maxlogsize = 1024
nice = -1
lb_mode = 1
lb_save = 300
[webif]
httpport = 8888
httpuser = admin
httppwd = changeme
httprefresh = 10
[cccam]
port = 12000
reshare = 1
version = 2.3.2
minimizecards = 0
[dvbapi]
enabled = 1
au = 1
pmt_mode = 0
request_mode = 1
Webif на порту 8888 — только внутри LAN! Никогда не открывайте его наружу без VPN или как минимум без basic-auth и fail2ban.
Конвертация C-lines из CCcam.cfg в oscam.server
Это сердце всей миграции cccam to oscam. Каждая C-line из CCcam.cfg превращается в блок [reader] в файле oscam.server.
Маппинг параметров: CCcam C-line → OScam reader блок
| CCcam C-line | OScam oscam.server |
|---|---|
| hostname | device=hostname,port |
| port | (часть device) |
| username | user=username |
| password | password=password |
| {hop=1} | cccmaxhops=1 |
| {reshare=0} | cccreshare=0 |
Пример конвертации: одна C-line → готовый [reader]
CCcam.cfg:
C: peer.example.com 12000 myuser secretpass {hop=1}
Становится блоком в oscam.server:
[reader]
label = peer1
protocol = cccam
device = peer.example.com,12000
user = myuser
password = secretpass
group = 1
cccversion = 2.3.2
cccmaxhops = 1
cccreshare = 0
cccwantemu = 0
inactivitytimeout = 30
reconnecttimeout = 30
Параметр label — уникальное имя reader. Используйте короткие латинские имена без пробелов: peer1, peer2, provider_nl, итп. Он появится в логах и в webif.
Параметры cccversion, cccmaxhops, cccwantemu
cccversion — критически важен. OScam отправляет удалённому CCcam-серверу информацию о версии при хендшейке. Если ваш peer работает на CCcam 2.0.11 — ставьте cccversion=2.0.11. Несовпадение иногда рвёт соединение ещё на этапе авторизации, хотя пароль правильный.
cccwantemu=0 по умолчанию — правильно для большинства случаев. Ставьте cccwantemu=1 только если peer предоставляет программные эмуляторы и вы это знаете.
cccmaxhops — максимальное количество прыжков карт которые OScam примет от этого reader. Hop=10 означает "принимать всё". Hop=1 — только карты первого уровня от прямого владельца.
Что делать с hop > 1 и reshare ограничениями
Если в CCcam была настройка {hop=2 reshare=0} — в OScam это: cccmaxhops=2 и cccreshare=0. cccreshare=0 означает что OScam не будет пересылать карты полученные от этого reader к вашим downstream-клиентам. cccreshare=1 — разрешает пересылку на один уровень.
Проверьте соглашения с каждым peer перед тем как ставить reshare. Это вопрос этики и иногда технических требований со стороны удалённого сервера.
Настройка oscam.user для клиентов и DVB API
В CCcam F-lines задавали клиентов. В OScam это файл oscam.user. Каждый блок [account] — один клиент с паролем, группой, фильтрами CAID.
Создание локального пользователя для приёмника
Если приёмник на той же машине что и OScam (Enigma2 с встроенным OScam):
[account]
user = dvbapi
pwd =
group = 1
au = peer1
dvbapi = 1
uniq = 0
Пустой пароль — специально для локального DVB API. OScam подхватит этого пользователя через секцию [dvbapi] автоматически.
Привязка через group= к нужным readers
Параметр group= — главная причина ошибки "ECM not found" у половины пользователей которые делают cccam to oscam миграцию. Логика простая: reader с group=1 обслуживает только клиентов с group=1. Если у вашего dvbapi-пользователя group=1, а reader — group=2, они никогда не увидят друг друга.
Для простой конфигурации поставьте group=1 везде. Когда освоитесь — можно разделить readers по группам и раздавать разным клиентам разные наборы источников.
Использование dvbapi user vs cccam user
Если приёмник подключается к OScam через CCcam-протокол (внешний box, или Enigma2 со старым плагином), создайте отдельный аккаунт с паролем и без dvbapi=1:
[account]
user = myreceiver
pwd = mypassword123
group = 1
au = peer1
uniq = 1
На приёмнике в CCcam.cfg или плагине — C-line с этими данными указывает на ваш OScam по его IP и порту 12000.
Caid/ident фильтры для оптимизации
Параметр caid= в [account] ограничивает какие CAID доступны клиенту. Например, caid=1803,0604 — только Nagravision и Irdeto. Это уменьшает бессмысленные ECM-запросы и снижает нагрузку на readers. Для начала можно не ставить — OScam будет передавать всё что умеет.
Запуск, отладка и проверка через webif
Первый запуск
Запуск в фоне с указанием конфиг-директории:
oscam -b -c /etc/tuxbox/config/oscam/
# Или для Linux:
oscam -b -c /usr/local/etc/oscam/
Для отладки — запуск в foreground с максимальным debug-уровнем:
oscam -d 255 -c /etc/tuxbox/config/oscam/
Это поток всего — readers, clients, ECM, ATR. Много, но при первом запуске иначе не разобраться.
Чтение логов: уровни debug 0–65535
OScam использует битовую маску для debug-уровней. Полезные значения:
1— только ошибки4— ATR и чтение физических карт64— активность клиентов128— активность readers255— всё перечисленное + разное
Для диагностики readers достаточно -d 128. Полный 255 — только когда совсем непонятно что происходит, лог растёт быстро.
Web-интерфейс http://IP:8888 — Readers, Users, Status
Вкладка Readers — самая важная. Каждый reader показывает статус: CONNECTED или DISCONNECTED, количество карт, время последнего ECM. Если после старта все readers в DISCONNECTED — первым делом проверяйте group=, потом сетевую доступность пира, потом cccversion.
Вкладка Status показывает активные ECM-запросы в реальном времени. Там видно: запрос от какого user пришёл, какой reader его обработал, за сколько миллисекунд.
Проверка ECM через логи
tail -f /tmp/oscam.log | grep -i ecm
Строка успешного ECM выглядит так:
2026/01/15 14:23:01 c (ecm) found (245 ms) by peer1
Строка с ошибкой:
2026/01/15 14:23:01 c (ecm) not found (3000 ms)
Если видите "not found" с таймаутом 3000ms — reader либо не подключён, либо не находится в нужной группе, либо не имеет нужного CAID.
Типичные ошибки миграции и их решение
ECM 'not found' хотя CCcam работал на тех же peers
Причина номер один — несовпадение group=. Reader group=1, а user group=2. Проверьте оба файла. Причина номер два — в reader не прописан нужный CAID. Если в блоке [reader] есть параметр caid= с конкретными значениями, а запрос идёт на другой CAID — он будет проигнорирован.
Проверьте так: в webif → Readers → кликните на reader → посмотрите список CAID которые он видит. Сравните с CAID в запросе от приёмника.
Reader CONNECTED но карты не отдаёт
CONNECTED означает только что TCP-соединение установлено и авторизация прошла. Но peer мог не передать список карт (SID/CAID). Попробуйте cccwantemu=1 — это заставит OScam запросить у пира список программных эмуляторов тоже. Иногда помогает. Второй вариант — проверить cccmaxhops на стороне пира, он может ограничивать что отдаётся клиентам с определённым hop-уровнем.
Несовпадение cccversion — peer рвёт соединение
Это реальная проблема с легаси-серверами. CCcam 2.0.11 может отказывать клиентам которые представляются как 2.3.2. Решение прямолинейное: поставьте cccversion=2.0.11 в reader. Если не знаете версию пира — попробуйте 2.0.11, 2.1.4, 2.2.1, 2.3.2 по очереди и смотрите что даст CONNECTED без быстрого реконнекта.
Проблемы с reshare после миграции
Если downstream-клиенты жалуются что перестали получать определённые каналы — проверьте cccreshare в readers и reshare в секции [cccam] oscam.conf. Глобальный параметр reshare=1 в [cccam] разрешает передачу карт клиентам. Но если конкретный reader имеет cccreshare=0 — его карты не пересылаются, даже если глобально разрешено.
Можно ли держать CCcam и OScam одновременно на одной машине?
Да, но они не должны слушать один и тот же порт. CCcam по умолчанию занимает 12000. Измените порт OScam в секции [cccam]: поставьте например port = 12001 пока тестируете. Параллельная работа — лучший способ постепенной миграции: переключаете peers по одному с CCcam на OScam, проверяете, потом следующий. Когда все перенесены — останавливаете CCcam через /etc/init.d/CCcam stop и возвращаете OScam на порт 12000.
Как сконвертировать сразу 30+ C-lines из CCcam.cfg в oscam.server?
Вот awk-однострочник который парсит C-lines и генерирует блоки [reader]:
awk '/^C:/ {
n++
printf "[reader]\nlabel = peer%d\nprotocol = cccam\ndevice = %s,%s\nuser = %s\npassword = %s\ngroup = 1\ncccversion = 2.3.2\ncccmaxhops = 10\ncccreshare = 0\ncccwantemu = 0\nreconnecttimeout = 30\n\n", n, $2, $3, $4, $5
}' /var/etc/CCcam.cfg >> /etc/tuxbox/config/oscam/oscam.server
После автогенерации обязательно пройдите по каждому reader вручную: проставьте правильный cccversion для каждого пира, проверьте cccmaxhops, добавьте caid= если нужны фильтры. Автогенерация создаёт каркас, не финальный конфиг.
Почему после миграции часть каналов раскодируется медленнее?
OScam строже в таймаутах. По умолчанию ecmtimeout=3000 (3 секунды) в [global] oscam.conf. Если пир отвечает за 2.8 секунды — ECM иногда проваливается. Попробуйте увеличить до 5000. Второе — включите lb_mode=1 в [global], это включает loadbalancer который выбирает самый быстрый reader для каждого CAID. Без lb_mode OScam идёт к readers по порядку, не по скорости.
Нужно ли менять конфиг на приёмнике (Enigma2) после перехода на OScam?
Зависит от режима. Если приёмник подключается по CCcam-протоколу — нет. OScam слушает на том же порту 12000, cccam-протокол тот же, с приёмника менять ничего не нужно, только убедитесь что в oscam.user создан аккаунт с правильным паролем. Если переходите на нативный DVB API — нужно удалить CCcam-плагин с приёмника, установить OScam как нативный плагин, настроить oscam.dvbapi с правильными CAID/provid приоритетами.
Какие порты OScam использует и какие нужно открыть в firewall?
Стандартные: 8888 — webif, 12000 — cccam, 15000 — newcamd, 16001 — телнет/monitor. Наружу открывайте только тот порт через который peers подключаются к вам. Webif (8888) и monitor (16001) — никогда не снаружи без VPN. Если OScam запущен от не-root пользователя и нужен порт ниже 1024 — используйте setcap cap_net_bind_service=+ep /usr/bin/oscam вместо запуска от root.
OScam падает при старте — что смотреть первым?
Запустите в foreground без -b с максимальным дебагом: oscam -d 255 -c /путь/к/конфигам/. Чаще всего причины: синтаксическая ошибка в конфигах (дублирующийся label у readers — это фатальная ошибка), права доступа к директории конфигов (OScam должен иметь права записи для лога и oscam.srvid), занятый порт — проверьте lsof -i :8888 и lsof -i :12000. Конфиги скопированные с Windows часто приходят в DOS-формате (CRLF) — OScam может игнорировать такие строки. Прогоните через dos2unix /etc/tuxbox/config/oscam/*.conf.
Стоит ли использовать форки oscam-emu или oscam-stream?
oscam-emu добавляет программные эмуляторы для ряда устаревших CA-систем — полезен в специфических сценариях. oscam-stream — для relay потоков, это уже другая задача. Для обычной миграции cccam to oscam достаточно vanilla oscam-trunk из официального SVN. Не усложняйте: начните с основной сборки, переходите на форки только когда точно знаете зачем.
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.