How to Set Up XMLTV Guide Data in TVHeadend
TVHeadend has no built-in XMLTV URL fetch, so curl a gzipped .xml.gz feed, decompress it, and pipe it into xmltv.sock. EPGWise is the remote programme file, not a TVHeadend plugin. The steps below use the socket method so gzip decompression is explicit.
⚙️ Step-by-Step Configuration
Enable the External: XMLTV Module
In your TVHeadend web interface (default port 9981):
- Go to Configuration > Channel / EPG > EPG Grabber Modules
- Find External: XMLTV
- Check the Enabled box and click Save at the top bar
Pipe Feed to TVHeadend Socket (Automated Cron)
On bare-metal Linux hosts, pipe your decompressed feed directly into the TVHeadend socket:
curl -s https://epgwise.com/epg/YOUR_TOKEN.xml.gz | gzip -dc | socat - UNIX-CONNECT:/home/hts/.hts/tvheadend/epggrab/xmltv.sockDocker Containers (linuxserver/tvheadend):
curl -s https://epgwise.com/epg/YOUR_TOKEN.xml.gz | gzip -dc | docker exec -i tvheadend socat - UNIX-CONNECT:/config/epggrab/xmltv.sockAdd to your crontab (crontab -e) to run daily at 04:00 AM:
0 4 * * * curl -s https://epgwise.com/epg/YOUR_TOKEN.xml.gz | gzip -dc | socat - UNIX-CONNECT:/home/hts/.hts/tvheadend/epggrab/xmltv.sockRun the Pipe and Check the Guide
In the TVHeadend web interface under Configuration > Channel / EPG > EPG Grabber, the piped schedule appears once the command finishes. The Re-run Internal EPG Grabbers button is optional and not needed for socket data.
Assign EPG to Channels
Navigate to Configuration > Channel / EPG > Channels.
TVHeadend automatically links channels with matching names. For any blank channel, double-click the EPG Source cell, select the corresponding channel from the dropdown list, and click Save.
Reliable DVR Recording Timers
TVHeadend DVR scheduled recordings rely on accurate stop and start timestamps. EPGWise feeds use standardized ISO-8601 UTC times with zero timezone drift.
Broadcast Channel Logos Included
All XMLTV channels include transparent high-definition station logos in <icon src="..." /> tags, which automatically populate TVHeadend channel picons.
Tvheadend XMLTV FAQ
Can TVHeadend use an XMLTV URL?
Yes, indirectly. TVHeadend has no built-in URL fetch, so curl your private EPGWise .xml.gz URL, decompress it, and pipe it into xmltv.sock. Full steps are at https://epgwise.com/setup/tvheadend-xmltv.
Why do I get 'Permission denied' when piping to xmltv.sock?
Run your cron task as the 'hts' system user or root so the script has write access to the TVHeadend socket file.
How do I pipe XMLTV feeds into TVHeadend running in Docker?
Use docker exec to pipe into the container socket: curl -s https://epgwise.com/epg/YOUR_TOKEN.xml.gz | gzip -dc | docker exec -i tvheadend socat - UNIX-CONNECT:/config/epggrab/xmltv.sock
Start Your Private TVHeadend XMLTV Feed
Private, high-availability XMLTV URLs across every supported country. No CLI scraper breakages, no scraper maintenance, 7-day free trial where eligible.