Raspberry Pi Smart TV

This is a small project that creates a pseudo-kiosk streaming media box from a Raspberry Pi. Once you are done, you’ll end up with a Raspberry Pi that loads Chromium into full screen kiosk mode on startup with your favourite streaming services only a click away thanks to some minimal html acting as your command centre.

Step 1 - Install Raspbian

We are going to install Raspbian as our base operating system. Follow the instructions on the Raspberry Pi site to install raspbian.

Step 2 - Open Chromium on startup

Once your operating sytem is installed and you’ve got your Pi up and running, it’s time to set it up so Chromium starts whenever we log in. You’ll need to edit a few files to make this all hang together so get comfortable. I prefer to ssh in and work from my primary machine, but you can also work directly on the Pi if you’ve got a decent screen, keyboard and mouse set up. You might need to enable ssh on your Raspberry Pi if you prefer to work from a different machine.

To open Chromium on startup is a one-liner added to ~/.config/lxsession/LXDE-pi/autostart Including the --kiosk flag will open Chromium full screen without menu bars. This enhances the feeling of it being a dedicated “media” machine.

If you don’t have ~/.config/lxsession/LXDE-pi/autostart, create it with

touch ~/.config/lxsession/LXDE-pi/autostart`

Open the file in your favourite text editor and add this line in:

@chromium-browser --kiosk

If you tend to simply turn your Pi off at the socket rather than shutting down cleanly, one of the annoyances you’ll have is a little Chromium popup every time you start up telling you it didn’t shut down properly.

To stop this happening, we can replace Chromium’s memory of its state with the following bits of magic added to ~/.bashrc

sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/chromium/'Local State'
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/; s/"exit_type":"[^"]\+"/"exit_type":"Normal"/' ~/.config/chromium/Default/Preferences

Step 3 - Create a nice home page

The final piece of the puzzle is to put together a nice default home page to act as the command centre. Grab the icons for your various streaming media services, replace the hrefs and set it as the default home page in Chromium’s settings.

My end result looked something like this:


Here’s the basic template - it supports tabbing through items and has a basic animation effect to give you a visual cue of which icon you are currently focussed on.

Note that if you are in the UK, at the time of writing, 4OD wouldn’t stream through Chromium for some reason.

The end

That’s it; a basic kiosk that works well enough for me. If you want something more full featured, check out Donald Derek’s Smart TV tutorial.