Making my TV better
Australian free-to-air TV, broadcast through the antenna, is a little odd.
While the UK has a shared infrastructure model, so there’s only ever one big tower on top of a hill, in Australia it doesn’t work that way, so there are a number of big towers on top of the hill. Your rooftop antenna is therefore pointed vaguely in the middle of the big towers, and good luck with that.
The UK has a vaguely shared multiplex model, too: the multiplex being a single transmitter that broadcasts a number of channels. In Australia, each commercial broadcaster owns one multiplex each, and each public service broadcaster also has one of their own too.
The upshot of this lack of cooperation is, apart from a lack of choice (since all channels are run by just five companies), the system also doesn’t work very well together. Your television only knows what show is on Nine, for example, when it’s tuned into Nine’s multiplex: so the EPG on your TV doesn’t work very well. Just wondering what’s on TV is unnecessarily hard.
Additionally, Australian TV suffers from the same problem as other countries: HD signals came after the SD versions, and therefore most channels feel that they need to keep an SD version going alongside the HD version, lest they lose audience. This doubles up channels on the channel list, which is annoying, but also means that there’s less space available on the multiplex.
Much less space, in fact, since many channels are still broadcasting in an older less-efficient codec for HD, rather than a new H264 version; because originally, the older MPEG2 version was all most set-top boxes dealt with. The upshot of all of this is that many channels are broadcast as SD, but they’re actually available as HD online.
I wondered whether I could fashion together a better TV system. One that works like a normal tuner, but has an electronic programme guide that is complete, and one that gives you the best possible picture quality while also conserving bandwidth in the house for other things.
So I built it.
I bought a thing called a TV Hat for a Raspberry Pi I have knocking about in the house. The TV Hat is not expensive (AUD$40 or so), and it essentially sticks onto the top of a Raspberry Pi.
I then downloaded the latest non-desktop version of Raspbian, and installed TV Headend, a free and bewildering piece of software.
There’s a good setup blog over here for how to get these things working together.
To watch it on the (Android TV) telly, I downloaded and bought Dream Player TV for tvheadend. ($10). This is not the prettiest piece of software, but it does integrate with Live Channels, the standard Android TV app. Live Channels is installed but hidden on the Chromecast with Google TV that I use, but you can download a little app to make it appear if you want (or, easier, just ask “OK, Google, open Live Channels").
After all this fiddling about, I was able to watch antenna-delivered TV on Android TV: being picked up on my Raspberry Pi and then fed through the network to the Chromecast’s Live Channels app. This fixed my EPG issue: TV Headend appears to do a little tune-around while you’re not watching the TV to keep the EPG updated.
Now to fix the soft SD picture quality for the two channels (ABC News and 7TWO) that we watch the most: and this is where Matt Huisman’s set of M3U8 files for Australian TV channels come in.
Matt uses the official streams made available by the broadcasters (for use in their apps, mainly). As I mentioned above, many of these streams are in HD quality, even though the broadcasts are in SD.
It turns out that you can add these streams to TV Headend, and then associate them with the same channel as the broadcast version. You can then give the streamed version a higher priority; so it’ll use the stream if it’s available, or fall back to the version from the antenna.
And, of course, I can add additional channels to the list, too. The delights of Al Jazeera now exists on my TV, with a channel number alongside the rest.
It’s still not perfect, but a good step forward in terms of where I want a TV experience to be.