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 покажет попытки подключения клиентов в реальном времени.