Настройка EPG (local tv guide) на CCcam/OScam в 2026

Ресивер открывает каналы, картинка идёт — но телегид пустой или показывает что-то случайное. Это одна из самых частых жалоб после настройки кардшаринга. Хорошая новость: EPG и декодирование — это два разных механизма, и починить гид можно, не трогая CCcam или OScam. Плохая — придётся разобраться в том, как именно ресивер получает данные программы, потому что способов несколько, и путают их постоянно. Ниже — конкретная техника без воды.

Что такое EPG (local tv guide) и почему он пустой при кардшаринге

Начнём с фундамента. Кардшаринг — это только расшифровка. CCcam и OScam передают управляющее слово (CW) от сервера к клиенту, и ресивер с его помощью декодирует видеопоток. Всё. Данные о программе передачи они не трогают и не знают о них вообще.

Откуда ресивер берёт данные телегида

Есть два источника. Первый — EIT (Event Information Table), встроенная таблица в DVB-потоке. Каждый транспондер в стандарте DVB-S/C/T обязан передавать EIT с расписанием на ближайшие дни. Ресивер принимает этот поток и складывает данные в базу epg.dat. Второй источник — внешний XMLTV-файл, который плагин (обычно EPGImport) скачивает из интернета по расписанию и импортирует в ту же базу.

Почему CCcam/OScam сами по себе EPG не передают

Протокол CCcam (порт 12000 по умолчанию) и протокол OScam (newcamd/camd35/radegast) передают только CW. Никаких метаданных о сетке вещания в этих протоколах нет — это не их задача. Поэтому после подключения к шарингу EPG не появляется автоматически: ресивер просто не получает никаких данных о программах.

Разница между EPG из потока (DVB) и внешними XMLTV источниками

EIT из транспортного потока — это "родные" данные канала. Плюсы: не нужно ничего настраивать, время всегда корректное (UTC прямо в потоке), покрытие полное. Минусы: нужно, чтобы ресивер реально принимал сигнал с транспондера, где идут данные EIT. При IPTV-источнике или перепакованном бэкенде EIT в потоке почти никогда нет — операторы его вырезают при перепаковке. Тогда единственный выход — XMLTV.

XMLTV — это XML-файл с расписанием, который кто-то агрегирует из открытых источников. Плюсы: работает независимо от сигнала, покрывает каналы которых нет в DVB. Минусы: нужна настройка, привязка каналов вручную, и timezone надо проверять отдельно.

Настройка EPG из транспортного потока на enigma2

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

Включение EPG в настройках ресивера

Идём в Menu → Setup → Service Searching → EPG Settings. Там должно быть включено "Enable EPG", "EIT for current transponder" и "Cross-transponder EPG". Последнее позволяет собирать EIT с других транспондеров в фоне, а не только с текущего. Без этого гид будет заполняться только по тем каналам, которые вы реально смотрели.

Пути и файлы: /etc/enigma2/settings и epg.dat

База EPG хранится в /etc/enigma2/epg.dat. Если у вас подключён жёсткий диск, лучше сразу вынести её туда: /media/hdd/epg.dat. На встроенном flash 64–128 MB этот файл быстро разрастается до 8–15 MB и может просто не влезть. Это одна из причин, почему гид пропадает после перезагрузки.

Путь к базе задаётся в /etc/enigma2/settings параметром:

config.epg.cachepath=/media/hdd/

Параметры config.epg.* и время хранения данных

Основные параметры в том же файле settings:

config.epg.maxdays=5
config.epg.eit=true
config.epg.saveepg=true
config.epg.cachepath=/media/hdd/

maxdays — сколько дней вперёд хранить данные. Значение 5 разумно, больше 7 нет смысла. saveepg=true — сохранять базу при выключении. Без этого параметра ресивер не пишет epg.dat при штатном shutdown и гид теряется.

Принудительное сканирование EIT now/next и schedule

EIT делится на two parts: "now/next" (текущая и следующая программа) и "schedule" (на несколько дней вперёд). Schedule передаётся не постоянно, а пакетами раз в несколько часов. Поэтому первые 2–3 часа после перезагрузки гид может быть заполнен только частично — это нормально.

Перезапустить enigma2 для применения настроек:

init 4 && sleep 5 && init 3

Или через веб-интерфейс OpenWebif: Power → Restart GUI.

Подключение внешнего XMLTV / EPGImport

Если EIT в потоке нет (IPTV, перепакованный сигнал) — нужен EPGImport. Это плагин для enigma2, который скачивает XMLTV-файлы из интернета и импортирует расписание в базу epg.dat.

Установка плагина EPGImport

На большинстве сборок enigma2 (OpenATV, OpenPLi, OpenVision) EPGImport есть в официальных репозиториях:

opkg update
opkg install enigma2-plugin-extensions-epgimport

После установки плагин появится в Menu → Plugins. При первом запуске он создаст каталог /etc/epgimport/ если его нет.

Структура источников: каталог /etc/epgimport/

Каталог /etc/epgimport/ — это место, где лежат все ваши источники и маппинги каналов. Типичное содержимое:

/etc/epgimport/
  custom.sources.xml       — ваши источники XMLTV
  custom.channels.xml      — маппинг channel id → service reference
  rytec.sources.xml        — пример источника из комплекта плагина

Файлы *.sources.xml и *.channels.xml

Файл источника описывает, откуда качать XMLTV. Минимальный пример:

<sources>
  <source type="gen_xmltv" channels="/etc/epgimport/custom.channels.xml">
    <description>My EPG Source</description>
    <url>http://your-epg-provider/xmltv.xml.gz</url>
  </source>
</sources>

Атрибут type="gen_xmltv" — стандартный для gzip-сжатых XMLTV. Если файл не gzip, используйте type="xmltv".

Файл channels.xml привязывает идентификаторы каналов из XMLTV к каналам ресивера:

<channels>
  <channel id="channel.id.from.xmltv">1:0:1:4B7:7DD:2BF:820000:0:0:0:</channel>
</channels>

Вот тут большинство гайдов и заканчиваются — не объясняя, откуда брать этот длинный service reference. Об этом — в следующем разделе.

Привязка каналов через service reference

Service reference — уникальный идентификатор канала в enigma2. Он кодирует тип сервиса, namespace, transport stream ID (TSID), original network ID (ONID) и service ID (SID). Без корректного service reference EPGImport не знает, к какому каналу привязать программу.

Расписание автоматического импорта

В настройках EPGImport (Plugins → EPGImport → Setup) есть параметр "Import time" — время автоматического запуска. Я рекомендую ставить 03:00–04:00 ночью, когда ресивер скорее всего в standby. Там же включается "Wake up receiver for EPG import" — это важно, иначе в режиме deep standby импорт не запустится.

Можно также запустить импорт вручную через тот же плагин или командой по SSH:

python /usr/lib/enigma2/python/Plugins/Extensions/EPGImport/EPGImport.py

Сопоставление каналов и часовых поясов

Это самая техническая часть, где чаще всего делают ошибки. Неправильная привязка = пустой гид или программа не на том канале. Сдвиг часового пояса = правильная программа, но смещённая на несколько часов.

Как найти service reference канала

Способ первый — файлы букетов. Букеты хранятся в /etc/enigma2/ с именами вида userbouquet.favourites.tv или userbouquet.dbe0.tv. Открываем нужный:

cat /etc/enigma2/userbouquet.favourites.tv

Строки вида #SERVICE 1:0:1:4B7:7DD:2BF:820000:0:0:0: — это и есть service reference. Название канала идёт следующей строкой после #DESCRIPTION.

Способ второй — OpenWebif. Заходим на http://[ip-ресивера], раздел Services/Bouquets. Там для каждого канала есть кликабельная строка со всеми параметрами включая полный service reference.

Сопоставление channel id из XMLTV с каналом ресивера

В XMLTV-файле каждый канал имеет атрибут id, например bbc.one.uk или cnn.us. В вашем channels.xml вы связываете этот id с service reference ресивера. Если id не совпадает с тем, что использует ваш XMLTV-источник — ничего не импортируется. Поэтому сначала откройте XMLTV-файл и посмотрите реальные id каналов, потом пишите channels.xml.

Один физический канал в нескольких букетах может иметь разные service reference из-за разного namespace. В channels.xml можно прописать несколько строк с одним channel id для разных service reference — EPGImport заполнит все.

Коррекция смещения времени (timezone offset)

XMLTV-файл передаёт время либо в UTC, либо в локальном поясе — зависит от источника. Если ваш ресивер настроен, например, на UTC+3, а источник отдаёт UTC без указания зоны, программа будет сдвинута на 3 часа. В настройках EPGImport есть параметр timezone offset — ставите нужный сдвиг в часах и минутах.

Проверить часовой пояс ресивера:

date
cat /etc/timezone

Если ваш XMLTV-источник указывает время с явным timezone (например 20260530120000 +0300), смещение не нужно — enigma2 сам пересчитает.

Что делать с каналами без идентификатора в источнике

Бывает: канал есть в букете, но в XMLTV-источнике его нет. Варианты: найти другой источник, который этот канал покрывает, или добавить ручную запись в channels.xml с приблизительным id и посмотреть, есть ли похожий канал в источнике под другим именем. Если канал совсем экзотический — EPG для него возможен только через EIT из DVB-потока.

Диагностика проблем с локальным телегидом

Итак, вы всё настроили, но local tv guide всё равно не работает как надо. Вот последовательность проверок.

Гид пустой только на части каналов

Проверьте, есть ли EIT на нужном транспондере. Это можно сделать анализатором — например, через dreamboxedit или любую утилиту, которая умеет парсить DVB-таблицы. Если EIT нет в потоке, этот канал можно закрыть только через XMLTV. Также проверьте, прописан ли service reference этого канала в channels.xml.

EPG есть, но программа не совпадает по времени

Классика — сдвиг на N часов. Смотрим: источник XMLTV UTC или локальный? Ресивер на каком часовом поясе? Если разница именно кратная часам — проблема в timezone. Корректируем offset в EPGImport. Если сдвиг случайный — возможно, в источнике часть каналов в UTC, часть в локальном времени (такое бывает у агрегаторов). Придётся или найти источник получше, или мириться.

EPG пропадает после перезагрузки

Первое — проверить, включён ли config.epg.saveepg=true. Второе — проверить, есть ли место на flash:

df -h /etc/enigma2/

Если свободно меньше 5 MB — epg.dat просто не записывается. Выносим на диск:

config.epg.cachepath=/media/hdd/

И перезапускаем enigma2. После следующего штатного выключения epg.dat должен появиться на hdd. Проверяем:

ls -lh /media/hdd/epg.dat

Если файл не появился — проверяем права: директория должна быть доступна для записи от root.

Логи: где смотреть ошибки импорта

EPGImport пишет в системный лог enigma2. Подключаемся по SSH и смотрим:

tail -100 /tmp/enigma2.log | grep -i epg

Или живой поток во время импорта:

tail -f /tmp/enigma2.log

Типичные ошибки: Failed to download — источник недоступен или неверный URL. No channels matched — channels.xml не совпадает с channel id из источника. Error parsing XML — файл повреждён или не валидный XML (bom, кривая кодировка).

Проверка свободного места и прав на epg.dat

Полная диагностика через SSH:

# Место на flash
df -h

# Размер и права epg.dat
ls -lh /etc/enigma2/epg.dat
ls -lh /media/hdd/epg.dat

# Проверка что enigma2 открыл файл
lsof | grep epg.dat

# Список файлов в /etc/epgimport/
ls -la /etc/epgimport/

# Проверка XML-синтаксиса channels.xml
xmllint --noout /etc/epgimport/custom.channels.xml

После повторного сканирования транспондеров enigma2 иногда создаёт новые service reference с другим namespace. Старые channel.xml перестают работать. Симптом — после пересканирования гид пропал у каналов, которые работали. Решение: обновить channels.xml с новыми service reference.

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

Почему после настройки CCcam/OScam телегид пустой?

Кардшаринг отвечает исключительно за расшифровку видеопотока — он передаёт управляющее слово (CW) и больше ничего. Данные телегида приходят отдельно: либо из EIT-таблицы в DVB-потоке, либо из внешнего XMLTV через плагин EPGImport. Если ни то ни другое не настроено — гид пустой. CCcam и OScam тут вообще ни при чём.

Где хранится база EPG на enigma2-ресивере?

По умолчанию — /etc/enigma2/epg.dat. Если у вас подключён жёсткий диск, лучше вынести туда: задайте config.epg.cachepath=/media/hdd/ в файле /etc/enigma2/settings. На встроенном flash базе быстро не хватает места, и при перезагрузке гид теряется.

Как подключить внешний источник телегида?

Установите плагин EPGImport через opkg. Создайте файл /etc/epgimport/custom.sources.xml с URL вашего XMLTV-источника и файл /etc/epgimport/custom.channels.xml с привязкой channel id к service reference нужных каналов. Запустите импорт вручную из меню плагина и проверьте лог /tmp/enigma2.log.

Почему программа в гиде сдвинута по времени?

Почти всегда это несовпадение часового пояса XMLTV-источника и настроек ресивера. Если источник отдаёт время в UTC, а ресивер работает в UTC+3, программа будет сдвинута на 3 часа вперёд. Правится параметром timezone offset в настройках EPGImport — укажите нужный сдвиг в часах.

Телегид пропадает после перезагрузки — что делать?

Две причины: либо отключён параметр config.epg.saveepg=true в /etc/enigma2/settings, либо на flash не хватает места для записи epg.dat. Проверьте через df -h. Решение — вынести базу на USB/HDD (config.epg.cachepath=/media/hdd/) и убедиться, что директория доступна для записи.

Как узнать service reference нужного канала?

Откройте файл букета в /etc/enigma2/userbouquet.*.tv — строки вида #SERVICE 1:0:1:4B7:7DD:2BF:820000:0:0:0: это и есть service reference. Или зайдите в веб-интерфейс OpenWebif по IP ресивера, раздел Bouquets — там service reference отображается для каждого канала без ручного разбора файлов.

Практические советы для стабильного просмотра

Даже самая стабильная линия CCCam или OSCam требует пары простых подготовительных шагов. Обновляйте прошивку ресивера, раз в неделю очищайте ECM‑кеш и держите 15–20% свободного места на USB‑накопителе или во встроенной памяти, чтобы кардридер записывал ключи без задержек.

При настройке антенны оставляйте запас по MER/BER: смещение на два градуса или ослабленный F‑коннектор чаще становится причиной “фризов”, чем сам кардшаринг. Держите под рукой короткий патч‑корд для проверки другого роутера и сохраните два профиля в OSCam — под TCP и под UDP — чтобы мгновенно переключиться, если провайдер начнёт фильтровать протокол.

Utgard.tv следит за каждым хабом 24/7, однако вы можете ускорить диагностику, если будете вести небольшой журнал действий. Записывайте время переключения канала, активный CAID и то, использовали ли вы Wi‑Fi или Ethernet. Такой мини‑отчёт позволит инженерам воспроизвести вашу конфигурацию в лаборатории и предложить решение не за часы, а за минуты.

  • Держите активными две линии: если первый сервер уходит на обслуживание, второй тут же подхватывает поток без повторного ввода логина.
  • Раз в месяц делайте замер скорости и задержек. Стабильных 1–2 Мбит/с при пинге до 80 мс достаточно для SD/HD, но если джиттер превышает 20 мс — переведите роутер на провод.
  • Сохраните в закладки страницу статуса Utgard.tv и Telegram‑бота @utgard_tv_bot — там появляются уведомления о работах раньше, чем успеют среагировать SEMrush или внешние мониторы.