Let me start off by saying that I don’t like TV, and especially not commercial broadcasters. I do, however, like to watch the occasional sports event, such as the Tour de France, the FIFA world cup, and other cycling and football tournaments.
Usually, the Dutch public broadcasting authority allows us to stream these events from their web site. However, those streams have some downsides: they’re often laggy and low-bandwidth, but the biggest problem is that they require people to install Adobe’s Flash Player, which is a horrible security risk with an unacceptable EULA.
So, I’ve been looking for a way to watch those streams without having to install Adobe’s malware. The first thing that came to mind was DVB-T, which I’ve already been using on my bedroom TV for years. Granted, I only receive four channels, but I really couldn’t care less about the commercial stuff.
One small problem: DVB-T reception requires a TV. And I’m certainly not planning to put a TV in every room in my house. So it would be nice if I could watch those streams on displays I already have: computer monitors connected to Ubuntu/Debian/Trisquel PCs.
I started looking for DVB-T receivers, and I managed to pick up a Realtek RTL2832 for fifteen bucks. The GNU/Linux support of TV tuners is generally very decent, so I wouldn’t worry too much about incompatibility.
All you need is a little antenna near a window and you’re set.
Watching DVB streams doesn’t require a lot of special software: all I’m using are VLC and the dvb-apps package.
sudo apt-get install dvb-apps vlc vlc-plugin-zvbi
First, I scanned for channels:
scan /usr/share/dvb/dvb-t/nl-All -o zap -x 0 | tee channels.conf
This created a channel list in the working directory. (Needless to say, the nl-All file should only be used if you live in the Netherlands.)
If you have a very recent distribution, you may encounter an error such as “ERROR: cannot parse’[CHANNEL]“. In that case, you have to use the legacy channel lists.
scan /usr/share/dvb/dvb-legacy/dvb-t/nl-All -o zap -x 0 | tee channels.conf
If you have an RTL2832 on a very recent kernel, scanning might fail or not return anything if you have the rtl2832_sdr module loaded. So unload it first then:
sudo rmmod rtl2832_sdr
The output of a correct channels.conf file looks something like this:
NPO 1:474000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_1_2:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:7011:7012:1101 NPO 2:474000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_1_2:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:7021:7022:1102 NPO 3:474000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_1_2:FEC_1_2:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:7031:7032:1103
Once you have it, you can simply drag the channels.conf file into a VLC window, which automatically converts it to a playlist. Press Ctrl + Y and save it as ~/Videos/TV.xspf (or whatever), and all you have to do is click the playlist and switch channels with the Previous / Next buttons.
If you’re looking for a fancier GUI solution, you might want to check out MeTV. It can scan for channels on its own, but you can also import your channels.conf file. MeTV also offers EPG viewing and MPEG stream recording (including timers).
Also keep in mind that DVB-T offers nice advantages regarding anonymity, privacy, and bandwith. After all, it uses public RF signals that are “in the air anyway”. There’s no upstream, so nobody knows that you’re watching. And even if there was, there would be no way to identify you, as there is no IP address that an ISP could point towards you. Moreover, you don’t have to constrain your network with any kind of video stream. You can even unplug your ethernet cable, or take your laptop down the road.