I am building a "TV Computer", that is, a sort of set top box that
will function as a DVB-T (freeview) receiver, a digital video recorder, an iPlayer
viewer, and a DVD player.
My motivation is to have a practical project that will keep me up-to-date with
embedded Linux and ARM SoC developments, and perhaps to make a useful open-source
contribution. Also, my experience of off-the-shelf digital TV devices has not been
very positive - especially their user interfaces - so I like the idea of creating my
own with a UI that works exactly how I want it to work.
Building custom PCBs for things like this is not really feasible for me, so my first
decision is to choose an off-the-shelf processor board to form the core of the system.
I looked at various hardware including the Panda
Board and Trim-Slice, but settled on the Freescale i.MX53
Quick Start Board. The key features of this board compared to the others are
the presence of analogue and digital video outputs (the latter with a daughter
board) and SATA. Around the board are various peripherals including a USB DVB-T
dongle, a SATA SSD and a USB DVD drive.
Software-wise, the system runs Linux, and Debian "armhf". The application software
is my own, using various libraries to talk to the hardware.
Details of the project can be found on the following pages:
- The Case
- I have built a solid case for everything that can sit under my TV.
- Power Supply
- The system has an internal mains power supply.
- Power On Hack
- A misfeature of the board is that it powers on "off".
- SATA Booting
- How to make the board boot from a SATA drive.
- My U-Boot configuration.
- How I've built and configured a Linux kernel, and the changes that I've
- Video connections
- How to connect the board to a TV.
- Debian ARM hf
- Installing and configuring Debian.
- Getting the DVB dongle to work.
- Trying to make OpenGL work.
- MPEG decoding
- Hardware MPEG video decoding.
- Audio decoding
- Software MP3 and AC3 audio decoding.
- Viewing BBC iPlayer video-on-demand.
- Electronic Programme Guide
- How to get programme schedules.
- Reading DVDs
- How to read and play DVDs.
- Command-Line Television
- My first attempt at a user interface.
Current Status 2013-04-30
This project had been on hold for more than a year, but I have now resumed work on it.
The delay was because I moved house, and my new place had poor TV reception: a "real"
TV could get only the BBC DVB-T multiplex, and that was unreliable and only worked in good
weather. My DVB-T dongle got nothing at all. I have finally fixed that by removing an
old aerial splitter box that was strapped to a rainwater pipe; the signal strength, as
reported by a cheapo meter that I bought on ebay ("Labgear DVB-T Finder"), is now 50 dB uv.
That is enough for the DVB-T dongle to pick up everything, and I can resume work - once I
can remember how everything is supposed to work...
- The microSD card is cunningly hidden inside a microSD-to-SD adaptor for
shipping. It will not work if you try to boot from the SD slot.
- The serial port is wired as DCE, i.e. you want a straight-through serial cable,
not null modem.
- A couple of layers of kapton tape make the LEDs much less distracting.
- The MAC address is printed on a label on the side of the network connector. It
is programmed into fuses in the processor chip.
- There is no real time clock, so you'll want to run ntp. Actually this is
already installed in the Ubuntu image but it has a bogus server address. Change
/etc/ntp.conf and set the server to pool.ntp.org.
- In the supplied Ubuntu image you can't initially log in as root, but you can
login as "lucid" with password "lucid" and then "sudo su". You can then set a root
password. But there is a password expiry policy, so you'll want to set the
clock first (see above).
- SATA SSDs only need 5v. I've made an adaptor from a 2.5mm power connector
to a SATA power plug, which I'm using with an Adder power squid. You
could also connect it to a USB plug and a powered USB hub.
- The "lucid_1108" Ubuntu image ships with Firefox configured to use a freescale proxy
server. Fix this in Edit - Preferences - Advanced - Network - Connection.
(This is mainly a reminder-list of things that I need to investigate, but if
anyone else already knows the answers I'd love to hear from you.)
- I've had various problems with USB, including failure to boot with USB devices
connected, not working with a hub but working without, "failed to accept address"
errors etc. Why? Could it be related to power?
- Even without any USB devices attached, the board often fails to start; it
gets as far the the kernel's USB initialisation, and then powers off. Definitely
- I seem to have broken power-off somehow; when I run poweroff it just halts.
Presumably there is a kernel config option that I've missed.
- When power is not connected to the board but it is connected to the monitor
and/or serial port, some of the LEDs glow. Should I worry about this?
- There are various errata in early versions of the chip. How do I tell which
version of the chip I have?
- To work around a fault in the early versions of the silicon the processor is run
at a higher than normal voltage. Can I revert this on my board? How?