Wicardd сервер: настройка с нуля (полное руководство)

Главная Статьи Wicardd сервер: настройка с нуля (полное руководство)

Дата публикации

13.06.2026

Wicardd сервер: настройка с нуля (полное руководство)

Wicardd сервер настройка — тема, по которой в сети либо устаревшие куски конфигов без объяснений, либо форумные треды с ответом «гугли сам». Этот материал — попытка исправить ситуацию: разбор каждого параметра, реальные команды, и объяснение того, почему что-то не работает и как это починить.

Если вы уже поставили бинарник на роутер или VPS и смотрите на пустой конфиг — читайте дальше. Если только собираетесь разворачивать — тоже подойдёт.

Что такое Wicardd и где он работает

Wicardd — это softcam-демон с поддержкой серверного режима. По функциям он пересекается с OScam и CCcam, но при этом компактнее: бинарник занимает меньше места, что критично для роутеров с 8–16 МБ флеша. OScam — мощнее и гибче, но требует больше памяти и сложнее в конфигурировании. CCcam — проще, но закрытый. Wicardd занимает нишу где-то посередине.

Бинарник называется wicardd и обычно лежит в /usr/bin/wicardd. Конфиг — либо /etc/wicardd.conf, либо /var/etc/wicardd.conf в зависимости от прошивки. При запуске путь к конфигу можно явно указать ключом -c.

Поддерживаемые платформы (роутеры, Linux, OpenWrt)

Wicardd собирается под mipsel, mips, arm, armv7l и x86/x86_64. Наиболее распространённые сценарии: роутеры на OpenWrt (TP-Link, Asus, Xiaomi с чипом MediaTek или Atheros), Raspberry Pi, а также обычный Linux-сервер или VPS под Debian/Ubuntu.

Важный момент: если скачать бинарник под mipsel и попробовать запустить его на arm-роутере — получите Exec format error или просто тишину. Перед скачиванием проверьте архитектуру командой uname -m или cat /proc/cpuinfo | grep model. Это частая ошибка у тех, кто берёт чужой бинарник.

Wicardd как сервер и как клиент

Wicardd умеет работать в обоих режимах одновременно. Как сервер — принимает подключения клиентов и отдаёт ECM-ответы. Как клиент — сам подключается к внешнему источнику карты (например, к другому newcamd-серверу) и пробрасывает карту локально.

Это полезно в сценарии: Wicardd на роутере получает карту от внешнего newcamd-источника и одновременно раздаёт её нескольким ресиверам в локальной сети.

Поддерживаемые протоколы: newcamd, CCcam, MGcamd

Из коробки поддерживаются newcamd (порты обычно 12000–15000), CCcam (стандартный порт 12000) и MGcamd. Newcamd — наиболее универсальный: работает с большинством клиентов, включая встроенный эмулятор в ресиверах. CCcam проще в настройке на стороне клиента — одна строка C: в конфиге.

Структура конфига wicardd.conf

Конфиг разбит на секции в квадратных скобках. Никакой XML, никакого YAML — простой формат ключ=значение. Это хорошо: читается быстро, не сломается от лишнего пробела. Но большинство примеров в сети дают конфиги без единого комментария, и непонятно, что менять, а что оставить.

Секция [global] и базовые параметры

[global]
nice_name = MyWicardd       # Имя сервера в логах и статусе
debug = 1                   # Уровень логирования: 0 — минимум, 3 — максимум
log_file = /var/log/wicardd.log  # Путь к лог-файлу
log_size = 512              # Максимальный размер лога в КБ перед ротацией

Про debug: на роутерах с ограниченной памятью (32–64 МБ RAM) не ставьте debug=3 постоянно. Лог растёт быстро, и при активном потоке ECM-запросов wicardd может упасть из-за нехватки памяти. Для диагностики поднимаете до 3, смотрите, опускаете обратно до 1.

Секция [server] — параметры newcamd/CCcam сервера

[server]
protocol = newcamd          # Протокол: newcamd, cccam, mgcamd
listen_port = 12000         # Порт, на котором сервер принимает подключения
key = 0102030405060708091011121314  # DES-ключ: 14 байт в hex, должен совпадать с клиентом
au = 1                      # Auto-update: 1 = включено, карта обновляется автоматически

DES-ключ — это не пароль пользователя, а ключ шифрования самой сессии newcamd. Если он не совпадает на сервере и клиенте, соединение никогда не установится, и в логе будет login failed. Именно это происходит, когда копируют конфиг из интернета, не меняя ключ.

Секция [account] — учётные записи клиентов

[account]
user = client1              # Логин клиента
password = secret123        # Пароль клиента
caid = 1830                 # CAID карты, которую видит этот клиент (например, 1830 = Irdeto)
ident = 000000              # Ident/ProvID; 000000 = все провайдеры по данному CAID
group = 1                   # Группа; должна совпадать с group в секции [reader]
au = 1                      # Разрешить автообновление для этого клиента

Можно добавить несколько секций [account] — по одной на каждого клиента. Группа связывает аккаунт с ридером: если у аккаунта group=1, а у ридера group=2 — карта не передастся. Это типичная ошибка, которую не описывают в большинстве гайдов.

Секция [reader] — подключение ридера или внешнего источника карты

[reader]
label = external_newcamd    # Произвольное имя ридера
protocol = newcamd          # Протокол подключения к источнику карты
device = 192.168.1.10:12001 # IP и порт внешнего сервера
user = myuser               # Логин на внешнем сервере
password = mypassword       # Пароль на внешнем сервере
key = 0102030405060708091011121314  # DES-ключ внешнего сервера
caid = 1830                 # CAID карты на этом ридере
group = 1                   # Группа ридера (должна совпадать с group аккаунта)

Если карта вставлена физически (смарткард-ридер), device указывает на устройство типа /dev/ttyUSB0, а protocol меняется на smartreader или аналогичный. Для большинства сценариев с проброской карты используется именно внешний newcamd-источник.

Пошаговая настройка сервера Wicardd

Теория разобрана. Теперь по шагам — от нулевого состояния до работающего сервера. Wicardd сервер настройка требует последовательности: сначала бинарник, потом конфиг, потом сеть, потом клиенты.

Шаг 1. Установка и проверка бинарника

После загрузки бинарника под вашу архитектуру:

# Проверить архитектуру устройства
uname -m

# Дать права на выполнение
chmod +x /usr/bin/wicardd

# Проверить, что бинарник запускается
/usr/bin/wicardd --version

Если на последней команде получаете Exec format error — бинарник под другую архитектуру. Никакие дальнейшие шаги не помогут, нужен правильный бинарник.

Шаг 2. Создание wicardd.conf и прав доступа

# Создать файл конфига
touch /etc/wicardd.conf

# Установить правильные права — НЕ 777
chmod 600 /etc/wicardd.conf
chown root:root /etc/wicardd.conf

Это не формальность. Wicardd (и большинство демонов) отказываются читать конфиг с правами 777 или 666 — это соображения безопасности, конфиг содержит пароли. Если сервер не стартует и молчит — проверьте права первым делом.

Шаг 3. Настройка серверной секции и портов

После создания конфига по структуре выше — открыть порт в файрволле:

# Для iptables
iptables -A INPUT -p tcp --dport 12000 -j ACCEPT

# Сохранить правила (Debian/Ubuntu)
iptables-save > /etc/iptables/rules.v4

На OpenWrt правила добавляются через uci или напрямую в /etc/config/firewall. Просто добавить в iptables недостаточно — правила не переживут перезагрузку без сохранения.

Шаг 4. Добавление аккаунтов клиентов

Добавьте в конфиг столько секций [account], сколько нужно клиентов. Каждый клиент — отдельная секция со своим user/password. Один и тот же DES-ключ из секции [server] применяется ко всем клиентам — его не нужно дублировать в каждом аккаунте.

Шаг 5. Запуск, автозапуск и проверка логов

# Запуск с указанием пути к конфигу
wicardd -c /etc/wicardd.conf

# Запуск в фоне
wicardd -c /etc/wicardd.conf -b

# Проверить, что процесс запустился
ps | grep wicardd

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

# Следить за логом в реальном времени
tail -f /var/log/wicardd.log

Для автозапуска через cron — проще всего:

# Добавить в crontab
@reboot /usr/bin/wicardd -c /etc/wicardd.conf -b

Если система поддерживает init.d, создайте скрипт /etc/init.d/wicardd с командами start/stop/restart — стандартный шаблон для OpenWrt выглядит так:

#!/bin/sh /etc/rc.common
START=99
start() { /usr/bin/wicardd -c /etc/wicardd.conf -b; }
stop() { killall wicardd; }

После создания: chmod +x /etc/init.d/wicardd && /etc/init.d/wicardd enable.

Подключение клиента к серверу Wicardd

Сервер поднят, порт открыт. Теперь нужно правильно настроить клиентскую сторону — и убедиться, что параметры совпадают с серверным аккаунтом.

Конфиг клиента newcamd

На клиенте (другой ресивер, OScam в клиентском режиме, MGcamd) строка подключения newcamd выглядит так:

N: 192.168.1.100 12000 client1 secret123 01 02 03 04 05 06 07 08 09 10 11 12 13 14

Здесь: IP сервера, порт, логин, пароль, и затем 14 байт DES-ключа через пробел. Именно так: 14 отдельных hex-значений через пробел — не склеенной строкой. Если ключ скопирован в формате 01020304... без пробелов, клиент его не примет.

Конфиг клиента CCcam (C: line)

Если сервер работает на протоколе CCcam, строка подключения в CCcam.cfg на клиенте:

C: 192.168.1.100 12000 client1 secret123

Всё. Четыре поля: хост, порт, пользователь, пароль. DES-ключ CCcam не использует — это только newcamd.

Проверка соединения и статуса ECM

После подключения клиента в логе сервера должны появиться строки вида:

[client1] login OK
[client1] card added: CAID 1830 ProvID 000000
[client1] ECM time: 245 ms

login OK означает успешную авторизацию. card added — карта передана клиенту. ECM time — время обработки запроса на расшифровку. Если видите только login OK без card added — проблема в правах аккаунта или несовпадении group/caid.

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

Большинство проблем при Wicardd сервер настройка сводятся к нескольким категориям. Разберём каждую с конкретными командами, а не общими словами.

Клиент не подключается (login failed)

Причины в порядке вероятности:

  • Несовпадение DES-ключа — самое частое. Сравните ключ в [server] конфига и в клиентской строке байт за байтом.
  • Порт не слушается — запустите ss -tlnp | grep 12000. Если пусто — сервер не запустился или занял другой порт.
  • Порт занят — если на том же устройстве уже работает OScam или CCcam на порту 12000, wicardd не сможет его занять. Смените порт в конфиге на 12001 или другой свободный.
  • Файрволл — проверьте iptables -L -n | grep 12000. Если правила нет — добавьте.

Подключается, но нет картинки (ECM timeout / no card)

Это другая ошибка — авторизация прошла, но карта не отдаётся. Смотрите в лог: если там login OK без card added — причина в аккаунте или ридере:

  • CAID в [account] не совпадает с CAID реальной карты
  • group в [account] и [reader] разные
  • Внешний источник (ридер) недоступен — проверьте, что сам wicardd может достучаться до него
# Проверить CAID/ProvID карты через лог
grep "card" /var/log/wicardd.log

# Повысить debug для детального вывода
# В конфиге: debug = 3, затем рестарт

Высокое время ECM и фризы

ECM выше 500–600 мс даёт заметные фризы на канале. Причины:

  • Внешний источник сам медленный или перегружен
  • Сеть между сервером и источником нестабильна — проверьте пингом
  • На роутере высокая загрузка CPU при debug=3 — уменьшите до debug=1
  • Фризы только на части каналов при разных CAID на одной карте — один CAID карта отрабатывает быстро, другой медленно. Это особенность карты, не конфига.

Сервер не стартует или падает

# Запустить в foreground для просмотра ошибок
wicardd -c /etc/wicardd.conf

# Типичные ошибки:
# "cannot open config file" — неверный путь, проверьте -c
# "permission denied" — права на конфиг 777 или конфиг не принадлежит root
# "address already in use" — порт занят, смените listen_port
# "Exec format error" — неправильная архитектура бинарника

Как выбрать источник карты или внешний сервер

Если своей карты нет и вы подключаетесь к внешнему newcamd-источнику — качество источника определяет качество картинки. Никакая правильная Wicardd сервер настройка не исправит плохой источник.

Критерии надёжного источника (аптайм, время ECM, локальная карта)

Ключевые параметры для оценки:

  • Аптайм — хороший источник держит 99%+ без ежедневных падений. Проверяется только временем — дайте поработать 48–72 часа и смотрите лог на разрывы.
  • Время ECM — до 300–400 мс считается нормой. Выше 500 мс — уже риск фризов, особенно на динамичных каналах.
  • Локальная карта vs. решара — карта в hop 1 (прямое подключение к реальному ридеру) значительно надёжнее, чем hop 3–4. Каждый дополнительный hop добавляет задержку и точку отказа.

На что смотреть в характеристиках подключения

Перед использованием источника запросите у него параметры подключения и уточните: сколько хопов до реальной карты, какой CAID и ProvID поддерживается, есть ли ограничение на количество одновременных подключений.

В CCcam количество хопов видно в статусе: hop=1 — локальная карта, hop=2 — одна ступень решары. Чем меньше — тем лучше.

Признаки нестабильного источника

В логе wicardd нестабильный источник выглядит так: периодические reader disconnected с быстрым переподключением, скачки ECM time от 200 мс до 1500 мс, ошибки ECM timeout на отдельных CAID. Если такое встречается чаще раза в час — источник неудовлетворительный.

# Статистика ошибок по логу за последний час
grep "timeout\|disconnect\|error" /var/log/wicardd.log | grep "$(date +%H:)" | wc -l

Хороший способ проверить источник самостоятельно: подключить его через wicardd, запустить несколько часов с debug=1, затем просмотреть лог на предмет разрывов и времени ECM. Никакие обещания не заменят реального теста.

Часто задаваемые вопросы

Где находится файл конфигурации Wicardd?

Стандартные пути: /etc/wicardd.conf на большинстве Linux-систем и /var/etc/wicardd.conf на OpenWrt и некоторых прошивках роутеров. Путь можно задать явно при запуске: wicardd -c /путь/к/wicardd.conf. Если не знаете, где лежит конфиг — попробуйте find / -name "wicardd.conf" 2>/dev/null.

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

Для протокола newcamd обычно используют диапазон 12000–15000, для CCcam — чаще всего 12000. Конкретный порт задаётся параметром listen_port в секции [server] конфига. Порт должен быть открыт в файрволле: iptables -A INPUT -p tcp --dport 12000 -j ACCEPT. Если порт уже занят другим процессом — выберите любой свободный выше 1024.

Почему клиент подключается, но нет изображения?

Авторизация прошла успешно, но карта не передаётся клиенту. Проверьте: совпадает ли CAID в секции [account] с CAID реальной карты; одинакова ли группа (group) в секциях [account] и [reader]; доступен ли сам ридер или внешний источник карты. В логе должна быть строка card added после login OK — если её нет, проблема именно здесь.

Что такое DES-ключ в newcamd и зачем он нужен?

DES-ключ — это 14-байтный ключ шифрования сессии протокола newcamd. Он шифрует обмен данными между сервером и клиентом на этапе установки соединения. Если ключ на сервере и клиенте не совпадает — соединение не установится, в логе будет login failed. Ключ задаётся параметром key в секции [server] конфига и прописывается в клиентской строке как 14 hex-байт через пробел.

Как настроить автозапуск Wicardd после перезагрузки?

Три варианта. Первый — cron: добавьте строку @reboot /usr/bin/wicardd -c /etc/wicardd.conf -b командой crontab -e. Второй — /etc/rc.local: добавьте ту же команду перед строкой exit 0. Третий — init.d скрипт (подходит для OpenWrt): создайте /etc/init.d/wicardd с функциями start/stop и выполните /etc/init.d/wicardd enable. После любого варианта проверьте через ps | grep wicardd после перезагрузки.

Как проверить, что сервер реально слушает порт?

Команда ss -tlnp | grep wicardd покажет процесс и порт, на котором он принимает подключения. Если ss недоступен — используйте netstat -tlnp | grep 12000. Отсутствие вывода означает, что сервер не запустился или запустился на другом порту. Параллельно следите за логом: tail -f /var/log/wicardd.log покажет попытки подключения клиентов в реальном времени.

О статье

  • Практические советы и инструкции
  • Материалы по спутниковому ТВ
  • Поддержка и помощь 24/7