How I built a full DVR with my IPTV provider and the Channels app

Jeff Grainger
7 min readMar 2, 2023

As consuming media has changed over the last few years, it’s become less and less convenient. While cable might be as expensive as it’s ever been, there was a convenience to having everything you watch available in a single location. Modern streaming means juggling multiple apps with different interfaces and features. I sought out a solution to this by using modern software, hardware, and services and think I’ve nailed it.

Introducing Channels

Channels is an app that runs on mobile and streaming devices with DVR features powered by their Channels DVR Server. You install Channels on your streaming devices, and you install Channels DVR Server on an always on computer in your home.

The server handles recording, guide data, library management, and even the ability to import your own movies and TV shows. The Channels app connects to the server to give you a single hub for all of your live and recorded TV watching. If you’re familiar with Plex, then this setup will not be new to you.

Channels lets you pause, rewind, and watch live TV just like you’re used to and provides traditional recording features like Series Passes as well as some other modern touches to the DVR idea.

In addition to being a bullet proof recorder, Channels has some really cool features like being able to download your recordings, creating your own live TV channels using content from your library, a custom Kids Section, the ability to browse through upcoming TV.

I won’t go into all of the things that Channels can do, as their website explains a lot, but I can tell you that after setting this up, this is the dream system I’ve always wanted.

Providing a Source

Channels is not a streaming TV provider. Instead it requires you to provide it with a source of live TV. After adding your source, Channels will let you watch and record from any channel it provides.

It supports a couple different sources. The first is an HDHomeRun networked TV tuner. Connect your antenna (or cable card depending on your model), and Channels will let you watch and record each and every channel you receive locally from your antenna.

Another source is TV Everywhere. Simply sign in with your cable or streaming TV provider, and it will authenticate and add each channel you have the right to stream based on your provider’s TV Everywhere partners.

The last source of live TV is Custom Channels. This is the type of source that will be used for IPTV providers.

Custom Channels

Custom Channels allow you to create your own channels in your guide from any live streaming source. This could be a web cam, a home security camera, or any unprotected internet streaming video.

It does this using the standard M3U and XMLTV formats. Channels even has extended metadata tags to let you dress things up to look better in the app. M3U and XMLTV are nothing more than generic ways to describe streaming URLs and guide data information for them to software that support these standard formats. They have existed for decades.

This is the secret sauce to using your IPTV source with Channels.

Adding your IPTV source to Channels

The first thing you need to know is that Channels has a limit of 500 channels per source. So you won’t be able to just add your M3U url and be done. You’ll need to filter it in some way. M3U4U is a great free solution to do this.

Filter your Source

Add your IPTV provider URL to M3U4U and it will scan in your provider’s channels. Using its tools, you can filter this large list of channels down to something more approachable. Once you’ve done this, M3U4U will provide you with a URL for your M3U that can be used in anything.

This part will take some time, but it’s an important process to getting something clean to hand over to Channels. I suggest using M3U4U’s tools to bulk edit your list. Start by turning everything off, then go through each category and manually select the channels you would like.

The secret to success here, is good curation. Having 10,000 channels in a guide will not help you craft a good TV watching experience. What you’re after is a normal ~200 channel guide like most people are used to. I’d be hard pressed to be convinced more than that is required.

Add Channel Numbers

Once you have curated your list of channels, you’ll need to go to the channel editor in M3U4U and give them channel numbers.

This is important because Channels will use these as unique identifiers so when things change from your IPTV provider, Channels can track those changes without disruption.

Visit the Channels section in M3U4U and click through each category giving each channel a unique channel number. I suggest creating a pattern of number blocks for categories, so then your channels are ordered exactly how you want them.

For example, use 100X for local channels, 110X for sports channels, etc. This is an advantage over official sources in Channels as you can not change their channel numbers.

Add Your Source to Channels

Once you’re happy with your list of channels, it’s time to add them to Channels.

Using your Channels DVR Server web admin, find the Sources section in Settings. Choose Add Source and pick Custom Channels.

Using the curated M3U url that M3U4 provides for your curated source, add it to the Source URL field. Choose Stream Format based on what your provider sends, HLS or MPEG-TS. If you have a choice from your provider, use HLS, as your experience will be much better with Channels. (You will need to have chosen this correctly when you added your provider’s URL to M34U). Finally, choose Refresh URL Daily to have Channels update your source every day, and Prefer channel-number from M3U, so that it uses the channel numbers you curated in M34U.

You can ignore the XMLTV Guide Data section as we’ll use Channels’ built in guide data in the next step.

Map Your Channels to get Guide Data

Rather than using guide data from your IPTV provider, you should use the built in data that is provided by Channels. This will be more reliable for recording, as well as have better metadata and art in the Channels app.

To do this, you’ll need to open the channel editor for your new source and map each of your new channels to a real TV network. Again, this takes a little bit of work, but is worth the effort and you only have to do it once.

Find your new source in Settings and choose Manage Lineup. You’ll be presented with a list of all your channels. Click the + button next to each channel and enter it’s name to search for the matching TV network. Do this for each of your channels until they are completely mapped.

If you have trouble finding the network to map to your channel, click the cog wheel next to the search field to choose Search All Lineups to get a larger set of options.

Once you’re done, close the Lineup Manager.

Update Guide Data

Now that you have your channels mapped, you will need to update the guide data for them.

Find the Guide Database section of Settings and use the Re-Download Entire Guide option under Maintenance.

While this process can take a while (Channels fetches 14 days of guide data), after a few seconds you should be able to check your guide as today’s data loads in fast.

Open the Channels app and see how your hard work paid off.

I Love This

Having all of my TV watching happen in a single app has been a breath of fresh air. I finally have a single place to watch the news, late night tv, my movies, or catch up on my favorite shows.

The fact that this experience works on any TV in my house with a streaming device and that I can stream all of this remotely while away from home, is a cherry on top and feels like what modern TV should be.

--

--

Jeff Grainger

I like technology, media, and the open web and formats.