Настройка 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 отображается для каждого канала без ручного разбора файлов.
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.