Спутниковые карты: как работают и настройка в 2026
Если вы уже разбираетесь в спутниковом ТВ и хотите понять, что происходит внутри системы — на уровне протоколов и железа — то этот материал для вас. Satellite cards (спутниковые карты доступа) — это не просто пластиковые карточки. Это микрокомпьютеры с защищённой памятью, которые контролируют доступ к зашифрованному видеопотоку. Разберём всё: от физики смарткарты до конфигурации OScam-сервера с реальными примерами конфигов.
Что такое спутниковая карта и как она работает
Смарткарта — это микропроцессор, впаянный в пластиковую подложку по стандарту ISO/IEC 7816. Внутри: CPU (обычно 8-битный, иногда 32-битный), ROM с прошивкой, EEPROM для ключей шифрования и RAM для вычислений. Физически карта защищена от вскрытия — попытка снять чип разрушает защитный слой и уничтожает данные.
Главная задача карты — хранить мастер-ключи и вычислять Control Word (CW) по входящему ECM-пакету. CW — это 16 байт (128 бит), которые меняются примерно каждые 10 секунд. Именно этим ключом дешифруется видеопоток на стороне ресивера.
Физическое устройство smartcard (ISO/IEC 7816)
Стандарт ISO/IEC 7816 описывает восемь контактных площадок на карте: VCC (питание 5V или 3.3V), RST (сброс), CLK (тактовый сигнал), GND, VPP (программирование, обычно не используется), I/O (данные), плюс два зарезервированных. Коммуникация идёт через I/O в полудуплексном режиме — либо карта говорит, либо ридер, не одновременно.
Протоколы обмена — T=0 (байт-ориентированный) и T=1 (блок-ориентированный). Большинство спутниковых карт работают по T=0, но некоторые CAS-системы используют T=1. Тактовая частота — критический параметр: стандарт — 3.57 MHz, но многие карты работают на 3.68 или 6.00 MHz.
Роль карты в системе условного доступа (CAS)
Система условного доступа (Conditional Access System) состоит из нескольких компонентов. Головная станция провайдера шифрует видеопоток алгоритмом DVB-CSA (Common Scrambling Algorithm). Параллельно формируются ECM (Entitlement Control Messages) — зашифрованные пакеты, содержащие очередной CW, и EMM (Entitlement Management Messages) — управляющие сообщения для карт (обновление прав, ключей, баланса подписки).
Карта хранит операторские ключи и при получении ECM расшифровывает его, извлекает CW и возвращает. Без физической карты с актуальными ключами расшифровать ECM невозможно — именно поэтому система работает.
Обмен ECM/EMM между картой и ресивером
Процесс выглядит так. Ресивер принимает зашифрованный DVB-поток по спутниковому каналу. Из потока извлекаются ECM-пакеты — они идут в CAM-модуль или встроенный слот, где вставлена карта. Карта получает ECM (обычно 32–64 байта), проверяет права подписки, вычисляет CW и возвращает 16 байт обратно. Ресивер использует CW для дешифрования DVB-CSA и отображает картинку.
EMM приходят отдельным потоком и обрабатываются картой автономно — это обновление прав, продление подписки, замена скомпрометированных ключей. Некоторые провайдеры используют агрессивные EMM для «убийства» нелицензионных карт.
Основные системы кодирования (Viaccess, Nagravision, Irdeto, Conax, BISS)
CAS-систем существует несколько десятков, но на европейских и арабских спутниках чаще всего встречаются:
- Viaccess (CAID: 0x0500, 0x0502, 0x0504) — французская разработка, широко используется на Hot Bird и Astra
- Nagravision (CAID: 0x1801, 0x1802) — швейцарская, применяется у многих крупных операторов
- Irdeto (CAID: 0x0604, 0x0606) — голландская, известна частыми обновлениями ключей
- Conax (CAID: 0x0B00) — скандинавская
- BISS (CAID: 0x2600) — не карточная CAS, статический ключ, используется для временных трансляций
- CryptoWorks (CAID: 0x0D00) — Irdeto Group
Для OScam каждая CAS поддерживается отдельным модулем. Полный список поддерживаемых CAID смотреть в исходниках — файл cscrypt/ в репозитории.
CAM-модули, ридеры и интерфейсы подключения карты
Подключить спутниковую карту к системе можно тремя способами: через встроенный слот ресивера, через CI/CI+ CAM-модуль или через внешний USB-ридер на Linux-сервере. Для шаринга по сети нужен третий вариант — карта должна быть доступна программе-серверу.
CI и CI+ слоты в ресивере
Стандарт Common Interface (EN 50221) — это физический слот в ресивере для CAM-модуля. CI+ (версия 1.2, 1.4) добавляет криптографическую аутентификацию между CAM и ресивером, что усложняет вскрытие потока. Проблема CI+: модуль и ресивер должны быть авторизованы друг у друга оператором, что ограничивает использование сторонних CAM.
Для шаринга CI-слот не подходит — карта физически находится в ресивере и недоступна для OScam-сервера на отдельной машине.
Внешние USB-ридеры (Smargo, Phoenix, Omnikey)
Для подключения карты к серверу используются USB-ридеры. Распространённые варианты делятся на два типа: Phoenix-совместимые (работают через виртуальный COM-порт, чипы FTDI FT232 или CP2102) и нативные USB-ридеры типа Omnikey 3121 (работают через CCID-драйвер как PC/SC устройство).
Phoenix-совместимые ридеры — наиболее универсальный выбор для OScam. Они поддерживают регулируемую частоту тактирования, что позволяет подбирать оптимальный режим для конкретной карты. Omnikey работает через PC/SC стек, для OScam нужен протокол pcsc.
Подключение карты к Linux-серверу
После подключения ридера по USB проверяем определение устройства:
dmesg | grep -E 'tty|usb'
lsusb | grep -i ftdi
ls -la /dev/ttyUSB*
Phoenix-ридер на чипе FTDI определится как /dev/ttyUSB0 через модуль ядра ftdi_sio. Ридер на CP210x — через cp210x. Если в Linux ридер не виден, а в Windows работает — почти всегда проблема с модулем ядра. Проверяем:
lsmod | grep ftdi
modprobe ftdi_sio
Важный момент с несколькими ридерами: при перезагрузке сервера порядок /dev/ttyUSB* может меняться. Решение — udev rule по серийному номеру устройства:
# /etc/udev/rules.d/99-smartcard.rules
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", \
ATTRS{serial}=="A12B3C4D", SYMLINK+="ttyUSBcard0"
Серийный номер узнаём через udevadm info -a -n /dev/ttyUSB0 | grep serial.
Настройка скорости ридера (Mhz) и протокола (T=0, T=1)
В OScam два параметра частоты для ридера: mhz (тактовая частота ридера в единицах 10 кГц) и cardmhz (желаемая частота для карты). При старте OScam пытается установить карту на частоту cardmhz, если карта это поддерживает.
| mhz | Фактическая частота | Применение |
|---|---|---|
| 357 | 3.57 MHz | Стандарт ISO, все карты |
| 368 | 3.68 MHz | Некоторые Nagravision карты |
| 600 | 6.00 MHz | Ускоренный режим, не все карты поддерживают |
| 800 | 8.00 MHz | Редко, требует проверки совместимости ридера |
Если карта требует нестандартной частоты (например, 8 MHz), убедитесь, что ридер это поддерживает — не все чипы FTDI работают выше 6 MHz в режиме ISO. Начинайте с mhz=357 и cardmhz=357, затем увеличивайте если стабильно.
Протоколы шаринга карт по сети: CCcam vs OScam
Суть шаринга: клиентский ресивер не может сам расшифровать ECM (нет физической карты), поэтому отправляет ECM по сети на сервер, где карта вставлена в ридер. Сервер обрабатывает ECM через карту, получает CW и возвращает клиенту. Клиент дешифрует видео. Всё это должно уложиться в ~300–500 мс, иначе будет фриз.
Принцип работы протокола CCcam (порт 12000 по умолчанию)
CCcam — закрытый проприетарный протокол, разработанный примерно в 2006 году. Официальная разработка остановилась около 2014 года. Протокол работает по TCP на порту 12000 (настраиваемо). Аутентификация — через хэшированный обмен на основе имени пользователя и пароля.
Клиентская строка подключения (C-line) выглядит так:
C: hostname.example.com 12000 username password
Серверная строка для раздачи доступа (F-line в CCcam):
F: clientname password reshare-level
CCcam сохраняет популярность из-за широкой поддержки клиентскими ресиверами. Practically каждый DVB-ресивер с Enigma2 понимает CCcam без дополнительных плагинов.
OScam как современная альтернатива (newcamd, cccam, gbox)
OScam (OSCam — Open Source Cardserver) — это open source проект, активно развивающийся по сей день. Он поддерживает несколько протоколов одновременно:
- newcamd — стандартный порт 15000–15010, протокол с шифрованием DES
- cccam — совместимость с CCcam-клиентами, порт 12000
- gbox — для mesh-обмена картами между серверами
- radegast — порт 6789
- dvbapi — прямое декодирование на Enigma2-боксе без клиентского ПО
OScam работает с гораздо большим числом CAS-систем, даёт детальное логирование каждого ECM-запроса, поддерживает приоритизацию ридеров и failover между несколькими серверами.
Структура C-line и N-line
Для newcamd-подключения используется N-line (в конфиге клиента типа CCcam или OScam):
N: hostname.example.com 15000 username password 01 02 03 04 05 06 07 08 09 10 11 12 13 14
14 байт в конце — ключ шифрования DES. Для CCcam-совместимого протокола C-line:
C: hostname.example.com 12000 myuser mypassword
В oscam.server для удалённого сервера (не физической карты, а обращения к другому серверу) настройка выглядит аналогично, но через параметры блока [reader].
Hop-уровни и reshare ограничения
Hop — количество промежуточных серверов между клиентом и физической картой. Hop=0 означает что вы подключены напрямую к серверу с картой. Hop=1 — сервер между вами и картой сам получает CW от сервера с картой. Каждый дополнительный hop добавляет задержку — обычно 50–150 мс на узел.
В OScam reshare ограничивается параметром reshare в oscam.user. Значение 0 — пользователь может только смотреть, не может делиться дальше. Значение 1 — может отдавать клиентам, но уже на уровне hop+1.
Настройка OScam-сервера для работы с физической картой
Конкретные шаги, без воды. Предполагается Debian 12 или Ubuntu 22.04/24.04, ридер уже определён как /dev/ttyUSB0.
Установка OScam на Debian/Ubuntu (компиляция из исходников)
Сначала зависимости:
apt update
apt install -y build-essential libssl-dev libusb-1.0-0-dev \
libpcsclite-dev git subversion cmake
Клонируем репозиторий и компилируем с поддержкой SSL и USB:
svn checkout https://svn.streamboard.tv/oscam/trunk oscam-trunk
cd oscam-trunk
make USE_SSL=1 USE_LIBUSB=1 USE_PCSC=1
cp oscam /usr/local/bin/oscam
chmod +x /usr/local/bin/oscam
Создаём директорию конфигов и пользователя:
mkdir -p /usr/local/etc/oscam
useradd -r -s /bin/false oscam
usermod -aG dialout oscam # доступ к /dev/ttyUSB*
Если OScam компилируется, но падает при старте — чаще всего проблема с версией libssl. Проверяем: oscam -V 2>&1 | grep SSL. Если версия OpenSSL в системе отличается от той, с которой компилировали — линкуем статически: добавляем USE_LIBSSL_STAT=1 в make.
Конфигурация oscam.server для ридера
Файл /usr/local/etc/oscam/oscam.server:
[reader]
label = mycard
protocol = smartreader
device = /dev/ttyUSB0
mhz = 600
cardmhz = 357
caid = 0500
detect = cd
group = 1
emmcache = 1,3,2
log-filename = /var/log/oscam/oscam.log
Параметр detect — один из самых частых источников проблемы «Reader OFF». Он определяет, как OScam понимает что карта вставлена. Значения: cd (Carrier Detect), !cd (инверсия), dsr, cts. Если ридер показывает OFF — пробуйте по очереди все варианты.
Для Omnikey через PC/SC протокол pcsc вместо smartreader, device — номер слота (обычно 0).
Конфигурация oscam.conf и oscam.user
Минимальный /usr/local/etc/oscam/oscam.conf:
[global]
logfile = /var/log/oscam/oscam.log
maxlogsize = 1000
preferlocalcards = 1
saveinithistory = 1
[monitor]
port = 0
[webif]
httpport = 8888
httpuser = admin
httppwd = changethis
httprefresh = 10
[newcamd]
port = 15000@0500
[cccam]
port = 12000
Пример /usr/local/etc/oscam/oscam.user:
[account]
user = client1
pwd = securepassword123
group = 1
caid = 0500
au = 1
reshare = 0
keepalive = 1
maxconnections = 1
Параметр au = 1 разрешает обновление карты через EMM для этого пользователя. keepalive = 1 — CWS_KEEPALIVE, поддерживает соединение активным.
Запуск webif и мониторинг через порт 8888
После запуска OScam веб-интерфейс доступен по http://127.0.0.1:8888. На странице «Readers» виден статус ридера: ACTIVE (карта найдена и работает), OFF (карта не определена), SHUTDOWN.
На странице «Users» видны подключённые клиенты и статистика ECM — количество запросов, время отклика (ms), процент успешных ответов. Нормальное время ECM для локальной карты — 50–200 мс.
Быстрая проверка без браузера:
curl -u admin:changethis http://localhost:8888/status.html?appendlog=1
Логирование и диагностика проблем
Запуск с максимальным уровнем отладки:
oscam -d 255 -c /usr/local/etc/oscam &
Уровень 255 — все сообщения. Для продакшна достаточно -d 64 (только ошибки и предупреждения). Смотреть лог в реальном времени:
tail -f /var/log/oscam/oscam.log | grep -E 'ECM|ERROR|CAID'
В логе нормальная строка ECM выглядит примерно так:
2026/05/16 14:23:01 12345 c mycard (0500&001234/AABB): found (250 ms)
«found» — карта ответила, CW получен. «not found» или «timeout» — проблема.
Типичные ошибки и как их диагностировать
Большинство проблем с satellite cards решается по одному из нескольких сценариев. Разберём конкретно — без «проверьте настройки».
Карта не определяется (no card detected)
Первым делом — физика:
lsusb # ридер вообще виден?
dmesg | tail -20 # ошибки при подключении?
ls -la /dev/ttyUSB* # устройство создано?
Если ридер виден в lsusb, но /dev/ttyUSB0 не создаётся — модуль ядра не загружен:
modprobe ftdi_sio # для FTDI
modprobe cp210x # для Silicon Labs
Права доступа — частая причина. OScam запущен от пользователя oscam, а устройство принадлежит root:dialout. Проверяем группу пользователя:
groups oscam # должна быть dialout
chmod 666 /dev/ttyUSB0 # временное решение для теста
Постоянное решение — udev rule:
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", MODE="0666", GROUP="dialout"
ECM timeout и медленный отклик
ECM timeout в логе: timeout (1500ms). Причины и решения:
- Слишком высокая частота карты — уменьшить
cardmhzдо 357 - Плохой контакт — почистить контакты карты спиртом, проверить физическую посадку
- Кабель ридера — длинный USB-кабель без активного повторителя даёт помехи
- В oscam.conf добавить
ecmwhitelist = 0500:аааа,bbbbесли провайдер использует нестандартные ECM
Freeze видео каждые 10 секунд (проблема с CW обновлением)
Freeze строго по времени — почти всегда проблема с обновлением Control Word. CW меняется каждые ~10 секунд. Если карта не успевает обработать следующий ECM — ресивер не получает новый ключ вовремя и зависает.
Диагностика: смотреть лог на время ECM-ответа. Если время отклика >300 мс — проблема может быть в нагрузке CPU сервера, скорости карты или сетевой задержке между клиентом и сервером. Решения:
- Уменьшить
mhzв oscam.server (менее агрессивный режим, но стабильнее) - Включить кэш ECM:
maxecmcount = 5в oscam.conf - Проверить CPU:
top, если OScam грузит >50% — что-то не так
Reader OFF в webif
Это не значит что ридер физически не работает — это значит OScam не понимает что карта вставлена. Алгоритм диагностики:
- Попробовать
detect=cd - Если не помогло —
detect=!cd - Если не помогло —
detect=dsr - Если ничего не помогает —
detect=ctsили убрать параметр полностью (OScam будет считать что карта всегда вставлена)
После каждого изменения — перезапуск OScam и проверка webif через 10–15 секунд.
Проблемы с правами на /dev/ttyUSB*
Постоянное решение через systemd service — передавать устройство напрямую. В unit-файле:
[Service]
User=oscam
Group=dialout
DeviceAllow=/dev/ttyUSB0 rw
Ещё один случай: ECM проходит (в логе «found»), но видео не дешифруется. Это обычно означает неправильный CAID или Provider ID в oscam.server. Проверить реальный CAID канала можно через Enigma2 плагин или через oscam.log — он показывает CAID из ECM-пакета.
Безопасность и стабильность сервера шаринга
Сервер с физической картой — это ценный ресурс. Оставлять порты открытыми для всего интернета — плохая идея не только из соображений безопасности, но и практически: нагрузка от случайных сканеров и brute-force попыток влияет на время ECM-ответа.
Защита портов через iptables/ufw
Разрешаем доступ к портам OScam только с конкретных IP клиентов:
# Разрешить CCcam-порт только для доверенного клиента
iptables -A INPUT -p tcp --dport 12000 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 12000 -j DROP
# Разрешить newcamd только для конкретной подсети
iptables -A INPUT -p tcp --dport 15000 -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 15000 -j DROP
# Webif только локально
iptables -A INPUT -p tcp --dport 8888 ! -s 127.0.0.1 -j DROP
Для UFW то же самое лаконичнее:
ufw allow from 1.2.3.4 to any port 12000
ufw deny 12000
Использование fail2ban для блокировки brute force
OScam логирует неудачные попытки авторизации. Fail2ban можно настроить на эти логи. Создать /etc/fail2ban/filter.d/oscam.conf:
[Definition]
failregex = .* wrong password from <HOST>
ignoreregex =
И jail в /etc/fail2ban/jail.local:
[oscam]
enabled = true
filter = oscam
logpath = /var/log/oscam/oscam.log
maxretry = 5
bantime = 3600
findtime = 600
Резервное копирование конфигурации
Конфиги OScam небольшие, но их потеря — неприятность. Cron-задача для ежедневного бэкапа:
# crontab -e (от root или oscam пользователя)
0 3 * * * tar czf /root/backups/oscam-$(date +\%Y\%m\%d).tar.gz \
/usr/local/etc/oscam/ 2>/dev/null
Хранить не более 7 дней:
0 4 * * * find /root/backups -name 'oscam-*.tar.gz' -mtime +7 -delete
Мониторинг доступности через systemd watchdog
Unit-файл /etc/systemd/system/oscam.service:
[Unit]
Description=OScam Cardserver
After=network.target
[Service]
Type=simple
User=oscam
Group=dialout
ExecStart=/usr/local/bin/oscam -c /usr/local/etc/oscam -n
Restart=always
RestartSec=5
WatchdogSec=60
NotifyAccess=main
[Install]
WantedBy=multi-user.target
Параметр Restart=always — OScam автоматически перезапустится при падении. WatchdogSec=60 — если процесс не отправляет watchdog ping 60 секунд, systemd его перезапустит.
Изоляция OScam через systemd unit и непривилегированного пользователя
Запуск OScam от root — распространённая ошибка. Если в программе окажется уязвимость, атакующий получит root. Пользователь oscam должен иметь доступ только к необходимым ресурсам:
useradd -r -s /bin/false -d /usr/local/etc/oscam oscam
usermod -aG dialout oscam
chown -R oscam:oscam /usr/local/etc/oscam
chown -R oscam:oscam /var/log/oscam
Для дополнительной изоляции в unit можно добавить:
[Service]
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
NoNewPrivileges=true
ReadWritePaths=/usr/local/etc/oscam /var/log/oscam
Если сервер работает в Docker — пробрасывание USB-ридера требует явного указания устройства и привилегий:
docker run --device=/dev/ttyUSB0 --group-add dialout oscam-image
Без --device контейнер не увидит ридер вообще. Без --group-add dialout — получит «Permission denied».
В чём разница между CCcam и OScam?
CCcam — закрытое ПО, разработка фактически остановилась примерно в 2014 году. Исходный код недоступен, баги не исправляются. OScam — open source (лицензия GPLv3), активно поддерживается сообществом. OScam поддерживает несколько протоколов одновременно (newcamd, cccam, radegast, gbox, dvbapi), работает с большим числом CAS-систем и даёт детальную статистику по каждому ECM-запросу в лог. Для нового сервера — выбор очевиден: OScam.
Какой USB-ридер выбрать для подключения карты к серверу?
Ключевые критерии: поддержка протокола Phoenix (работа через виртуальный COM-порт), регулируемая тактовая частота (минимум 3.57 и 6.00 MHz), стабильная работа в Linux без проприетарных драйверов. Перед покупкой проверьте список поддерживаемых устройств в вики OScam — там указаны проверенные чипы и протоколы. Ридеры на чипах FTDI FT232 работают через стандартный модуль ядра ftdi_sio без дополнительных настроек.
Что означает hop в C-line и почему важен hop=0?
Hop — количество промежуточных серверов между вашим клиентом и физической картой. Hop=0 означает прямое подключение к серверу, где карта вставлена в ридер. При hop=1 ваш сервер получает CW от другого сервера, который держит карту. Каждый дополнительный hop добавляет задержку ECM-ответа — обычно 50–150 мс на узел. При задержке >400–500 мс начинаются фризы. Hop=0 — самая стабильная конфигурация.
Какие порты использует OScam по умолчанию?
CCcam-совместимый протокол: 12000. Newcamd: 15000 (можно назначить диапазон для разных CAID, например 15000@0500, 15001@1801). Веб-интерфейс: 8888. Radegast: 6789. Gbox работает через отдельный порт, настраивается в блоке [gbox]. Все порты задаются в oscam.conf. Наружу открывайте только те порты, к которым реально подключаются клиенты — webif держите на localhost.
Почему карта работает, но видео фризит каждые ~10 секунд?
Control Word меняется примерно раз в 10 секунд. Ресивер должен получить новый CW до того как старый истечёт — иначе фриз. Если карта не успевает обработать следующий ECM вовремя, это и есть причина. Проверьте: нагрузку CPU (должна быть низкой), время ECM-ответа в логах OScam (норма до 200 мс), физическое состояние контактов карты и кабеля ридера. Попробуйте снизить cardmhz до 357 — меньше скорость, но стабильнее.
Где находятся конфигурационные файлы OScam?
По умолчанию при компиляции — /usr/local/etc/oscam/. Некоторые дистрибутивные пакеты кладут конфиги в /var/etc/oscam/ или /etc/oscam/. Основные файлы: oscam.conf (глобальные настройки, разделы [global], [webif], порты протоколов), oscam.server (ридеры и удалённые серверы), oscam.user (учётные записи клиентов), oscam.services (группировка каналов по CAID/SID), oscam.dvbapi (настройки прямого декодирования для Enigma2). Путь при запуске задаётся флагом -c /путь/к/каталогу.
Можно ли использовать одну карту на нескольких ресиверах одновременно?
Физически карта одна и обрабатывает ECM-запросы последовательно — очередь. OScam отлично справляется с мультиплексированием запросов от нескольких клиентов к одной карте. Но чем больше одновременных клиентов — тем длиннее очередь ECM и выше задержка ответа. На практике одна быстрая карта стабильно держит 5–10 одновременных клиентов. При большем числе клиентов время ECM-ответа растёт и начинаются фризы у всех.
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.