Use Channels-DVR as a tuner for Emby

I'm removing my original post and replacing it with this one. This thread has not aged well as Channels DVR has implemented a way to expose the Channels DVR m3u and xmltv guide data to other systems like Emby.

This link will provide Emby the m3u link for the channel lineup:


This link will provide the xmltv guide data for Emby


Replace the x.x.x.x with the IP address of your Channels DVR and you're all set.


Channels' guide data is provided by Gracenote. Gracenote runs the Zap2It website, so the listings there will be the same as Channels'.

Also, you can get guide data from Schedules Direct (which also uses Gracenote's data) from the xmltv utilities, such as the tv_grab_zz_sdjson and tv_grab_zz_sdjson_sqlite, and then feed the resulting xmltv files to Emby.

1 Like

Thanks @racameron. I was thinking about going in that direction. I wasn't sure if I would have the same issue. The only negative is I would have to transform the channel numbers to avoid mapping each channel in Emby. iptv-epg does this easily. But right now I have a lot of time on my hands. :wink:


As far as guide data.. you could pull it from the DVR I guess, but it's in a json format that would need some massaging before it could be used with other software.

Thanks @tmm1 I tried the roku app prior, but buffering was an issue. I created the program (instead of the built-in generator) so I could transform channel numbers for easier mapping. If I go with Schedules Direct, I'll need to transform the numbers for automatic mapping in Emby.

1 Like

Posted here too soon. It's working. was having a back-end issue and my configuration took ~hour to apply. All guide data is now accurate. Thanks for the feedback tho.

Just added this to my Roku 3 and it still works! There is no guide, but “on now” will still pull the live channels. Looks like all of my recorded movies are there too. The TV recordings are limited to “up next”, no option for all recordings.

Never knew this existed, that’s pretty wild!

Has anyone used the the channels m3u for locast or sling TV, I tried adding a tuner to emby and it said the url was invalid http://x.x.x.x:8089/devices/TVE-Sling TV/channels.m3u and also http://x.x.x.x:8089/devices/TVE-Locast/channels.m3u only Philo worked

The Locast device name is LOCAST-### where "###" is your broadcast market. For example, the LA broadcast market is 803, so my Locast device in Channels is at the /devices/LOCAST-803/channels.m3u endpoint.

Worked Thanks

1 Like

I started this thread and thought I would close out my part by posting what I found. This was my first attempt in creating m3u files and working with guide data, so this may be simple to you. I had a lot to learn. Seriously.

The idea seemed simple, use Emby to play live TV from Channels DVR on an old Roku TV that didn’t handle the beta Channels DVR App very well.

In the end I was able to accomplish exactly what I wanted with the added benefit of having all the channels in the order I wanted them (grouped by news, movies, locals, etc.).

I abandoned the iptv-epg service (service quality was the primary issue. I experienced, slow updates to my configuration and the quality of guide data was less than what Channels provides.

I read and tried a lot of tips from various internet sites related to Emby and proper m3u configurations. I found more out-of-date/inaccurate information than answers. I did figure out the key elements of the m3u setup that work with Emby per my implementation goals.

The m3u file needs to provide the exact call sign for a channel, otherwise Emby required lots of channel mapping. That’s a pain. To place the channels in the guide in the order I wanted, I found that using the channel-id tag allowed me to the order the channels in the Emby guide according to my preferences.

Here’s an example:

#EXTINF:-1 channel-id="10" tvg-logo="" tvg-name="MSNBC",MNBCHD

The python code to generate this line:

m3u_file.write("#EXTINF:-1 channel-id=\"{0}\" tvg-logo=\"{1}\" tvg-name=\"{2}\",{3}{4}".format(emby_channel_order, channel_logo, sd_channel_name, sd_channel_callsign, "\r\n"))

I used the built-in Emby guide for tv/show listings, but I had to use several guide sources to get East vs Pacific channels to work without resorting to time-shifting the m3u per channel. I did not have to map any channels in the Emby guide setup, everything just worked. I simply added the m3u source and added the guides.

There may a more direct route to this end, but where I lacked any knowledge, I perhaps took the long route.

Brilliant workaround for most things!

Question for you, how exactly did you get the Pacific channels to lineup? I added my local Guide source (i.e. DISH Network) for all non-Pacific channels and then a second Guide Source using a California zip code and mapped ONLY the "P" channels and they aren't quite matching up right, they are essentially showing the exact same lineup, with no time offsets.

Your approach is the same as what I implemented in my setup. To get guide data for all of the channels, I have 4 different Emby Guide sources:

  1. Local for my area
  2. Direct TV New York - Satellite (zip: 10001)
  3. Charter Spectrum - Digital Compton (zip: 90001)
  4. Direct TV - Los Angeles - Satellite (zip: 90001)

I had to use that order to get everything to work.

You will need to normalize the channel names. For example, Channels reports FreeForm as FREEFORM and FREEFORMP. The channel names are FREFMHD and FREFRMP. Once i changed all of the channel names to match the standard name, everything just worked.

Posting part of my m3u file below. As this was my first attempt I can't tell you it is 100% right. It does work however.

Here's a partial of my m3u file:

#EXTINF:-1 channel-id="7" tvg-logo="" tvg-name="MNBCHD",MNBCHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6050/stream.mpg
#EXTINF:-1 channel-id="8" tvg-logo="" tvg-name="CNNHD",CNNHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6030/stream.mpg
#EXTINF:-1 channel-id="9" tvg-logo="" tvg-name="CNNI",CNNI
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6032/stream.mpg
#EXTINF:-1 channel-id="10" tvg-logo="" tvg-name="FNCHD",FNCHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6073/stream.mpg
#EXTINF:-1 channel-id="11" tvg-logo="" tvg-name="FBNHD",FBNHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6074/stream.mpg
#EXTINF:-1 channel-id="12" tvg-logo="" tvg-name="CNBCHD",CNBCHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6051/stream.mpg
#EXTINF:-1 channel-id="13" tvg-logo="" tvg-name="FXHD",FXHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6080/stream.mpg
#EXTINF:-1 channel-id="14" tvg-logo="" tvg-name="FXM",FXM
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6084/stream.mpg
#EXTINF:-1 channel-id="15" tvg-logo="" tvg-name="FXP",FXP
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6081/stream.mpg
#EXTINF:-1 channel-id="16" tvg-logo="" tvg-name="FXXHD",FXXHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6082/stream.mpg
#EXTINF:-1 channel-id="17" tvg-logo="" tvg-name="FXXP",FXXP
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6083/stream.mpg
#EXTINF:-1 channel-id="18" tvg-logo="" tvg-name="IFC",IFC
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6088/stream.mpg
#EXTINF:-1 channel-id="19" tvg-logo="" tvg-name="AMCHD",AMCHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6086/stream.mpg
#EXTINF:-1 channel-id="20" tvg-logo="" tvg-name="PARHD",PARHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6022/stream.mpg
#EXTINF:-1 channel-id="21" tvg-logo="" tvg-name="SUNDANP",SUNDANP
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6085/stream.mpg
#EXTINF:-1 channel-id="22" tvg-logo="" tvg-name="HALLHD",HALLHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6090/stream.mpg
#EXTINF:-1 channel-id="23" tvg-logo="" tvg-name="LIFEHD",LIFEHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6046/stream.mpg
#EXTINF:-1 channel-id="25" tvg-logo="" tvg-name="BBCAHD",BBCAHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6087/stream.mpg
#EXTINF:-1 channel-id="26" tvg-logo="" tvg-name="AETVHD",AETVHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6043/stream.mpg
#EXTINF:-1 channel-id="27" tvg-logo="" tvg-name="BRAVOP",BRAVOP
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6059/stream.mpg
#EXTINF:-1 channel-id="28" tvg-logo="" tvg-name="SYFYP",SYFYP
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6055/stream.mpg
#EXTINF:-1 channel-id="29" tvg-logo="" tvg-name="TLCHD",TLCHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6105/stream.mpg
#EXTINF:-1 channel-id="30" tvg-logo="" tvg-name="TVLAND",TVLAND
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6020/stream.mpg
#EXTINF:-1 channel-id="31" tvg-logo="" tvg-name="USAP",USAP
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6053/stream.mpg
#EXTINF:-1 channel-id="32" tvg-logo="" tvg-name="EP",EP
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6057/stream.mpg
#EXTINF:-1 channel-id="33" tvg-logo="" tvg-name="FREFMHD",FREFMHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6126/stream.mpg
#EXTINF:-1 channel-id="34" tvg-logo="" tvg-name="FREFRMP",FREFRMP
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6127/stream.mpg
#EXTINF:-1 channel-id="35" tvg-logo="" tvg-name="TNTHD",TNTHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6035/stream.mpg
#EXTINF:-1 channel-id="36" tvg-logo="" tvg-name="TNTPHD",TNTPHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6036/stream.mpg
#EXTINF:-1 channel-id="37" tvg-logo="" tvg-name="TBSHD",TBSHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6033/stream.mpg
#EXTINF:-1 channel-id="38" tvg-logo="" tvg-name="TBSHDP",TBSHDP
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6034/stream.mpg
#EXTINF:-1 channel-id="39" tvg-logo="" tvg-name="TRUTVHD",TRUTVHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6037/stream.mpg
#EXTINF:-1 channel-id="40" tvg-logo="" tvg-name="TRUTVP",TRUTVP
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6038/stream.mpg
#EXTINF:-1 channel-id="41" tvg-logo="" tvg-name="HGTVD",HGTVD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6104/stream.mpg
#EXTINF:-1 channel-id="42" tvg-logo="" tvg-name="FOODHD",FOODHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6102/stream.mpg
#EXTINF:-1 channel-id="52" tvg-logo="" tvg-name="HISTORY",HISTORY
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6044/stream.mpg
#EXTINF:-1 channel-id="53" tvg-logo="" tvg-name="DSCHD",DSCHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6101/stream.mpg
#EXTINF:-1 channel-id="54" tvg-logo="" tvg-name="IDHD",IDHD
http://<CHANNELS IP ADDRESS>:8089/devices/ANY/channels/6107/stream.mpg
1 Like

Is there a lineup that I can get all the Disney Channels ? Pacific Channels.


@Edwin_Perez. I don't have the Disney Channels enabled, but when I request those channels using the software I created to make the m3u file here's what I get back. Looks like Charter Digital in zip 90001 has the listings.

Channels DVR   Normalized Response                            Channel Location in Guide

(DISNHDP)    / 12510  as (DISNP) Disney Channel (Pacific)   / Found in Charter Spectrum - Digital (90001) CA04956:X / Ch 251
(DXDHDP)     / 18793  as (DXDP)  Disney XD (Pacific)        / Found in Charter Spectrum - Digital (90001) CA04956:X / Ch 265
(DJCHHDP)    / 75003  as (DJCHP) Disney Junior US (Pacific) / Found in Charter Spectrum - Digital (90001) CA04956:X / Ch 254

What exactly is it that you're asking? Are you asking for the addresses to access Channels' TVE Disney streams? Or are you asking which cable/OTT credentials give access to TVE Disney networks?

For the former:

#EXTINF:-1 tvg-logo="" tvg-name="DISNEY" group-title="HD",DISNEY

#EXTINF:-1 tvg-logo="" tvg-name="DISNEYP" group-title="HD",DISNEYP

#EXTINF:-1 tvg-logo="" tvg-name="DISNEYJR" group-title="HD",DISNEYJR

#EXTINF:-1 tvg-logo="" tvg-name="DISNEYJRP" group-title="HD",DISNEYJRP

#EXTINF:-1 tvg-logo="" tvg-name="DISNEYXD" group-title="HD",DISNEYXD

#EXTINF:-1 tvg-logo="" tvg-name="DISNEYXDP" group-title="HD",DISNEYXDP

#EXTINF:-1 tvg-logo="" tvg-name="FREEFORM" group-title="HD",FREEFORM

#EXTINF:-1 tvg-logo="" tvg-name="FREEFORMP" group-title="HD",FREEFORMP

For the later, check out The Streamable's matrix. (From a quick glance, it looks like AT&T Now, Hulu, Sling, and YouTubeTV authenticate. I know that DirecTV and Spectrum credentials will work; I imagine most all cable credentials will if the subscription includes Disney networks.)

Yes that is exactly what UI needed. Been in the house too long so just started playing around M3U in emby.

1 Like

Thanks that matrix helps was looking all over for it.


Same here. Once you change the DISNHDP with DISNP and the others listed, it should "just work". I struggled with this but once I figured out how to normalize the channel name, Boom. This was my first attempt at m3u creation.