[an error occurred while processing this directive] [an error occurred while processing this directive]
[an error occurred while processing this directive]

Hauppauge Media MVP

The Hauppauge Media MVP is a linux powered box. In short, you give it an ethernet cable, feed it mpeg data, and it decodes everything and spits it out to your TV or HiFi. Very nifty.

Because it runs Linux itself, you can do lots of very very cool things with it. Because it's tiny and runs linux, it's also very cheap, so you can get one to play with without breaking the bank. Hell, for some people, it's in the impulse purchase price bracket!

The MVP doesn't have any software stored on it. Instead, it does a netboot, hauling a linux kernel off a nearby tftp server, normally also getting a busybox powered initrd with it. Then, it connects to your PC, and plays mpeg files.

By default, it carelessly only plays media from a windows box. Thanks to the fine guys at MVPMC, you can feed it your own programs, and get it to play files over NFS or from a MythTV box. They also show you how to build a cross compiling tool chain, so you can compile things for the box. If you want to play with a MVP and run linux, go here first.

The box only plays MPEG files, since that's the only hardware decoder it ships with. If you're going to use MVPMC and want to play other file formats, you'll need to convert them first. However, there are two options, one of which is to use the IPTV Client for the MVP instead of MVPMC. It doesn't do as much as MVPMC, but it uses VLC on your machine to do any format conversions for you, so ought to be able to play many more formats. The other option is to enable the VLC control in MVPMC, and use an instance of VLC on another machine to transcode to mpeg for you.

The box itself is powered by an IBM PowerPC processor, and has a number of STP (set top box) aimed chips on it. For details on what chips it has, see here. Many people have figured out that there are lots of things the box can do, if only the appropriate plugs / connectors were present. Most of them hide on the SHS PVR Forums (esp. the MVP hardware one). If you want to do spdif, connect up a serial port, or other funky things, that's the place to hide.

Me, I'm interested in using the MVP as a tiny linux box by my TV. I hope to compile a few extra things for it, to get it doing everything I need. On the way, I'll post things here.

Firstly, how much processing power does it have? (Since this affects what we can do with it). Well, it's powered by a 252MHz PowerPC chip, but with a few supporting chipsets to do the heavy lifting of mpeg decoding. However, the chip is integer only - multiplying two floats together and saving the result as a float will take about 10 times as long as multiplying two ints together and storing the result as an int. This means that whatever you're going to do, it's going to have to be fixed point (i.e. integer only).

On the audio front, integer only is quite common in very small devices. This means that you ought to be able to find fixed point decoders for most formats you're interested in. For example, Tremor for Ogg Vorbis will compile quite happily with the cross compiler, and runs around 4-5x real time. (So you can decode and have plenty of cpu left over). For mp3, MAD is fixed point, but you can just use the hardware mpeg decoder!

Other things to note include: /dev/random doesn't seem to work, so you'll need to use /dev/urandom. If compiling dropbear, that gets set in options.h. You'll then probably also want to generate all your keys somewhere else.

Some notes about software for the mvp. Once you've finished compiling your code, if you run file against it, it needs to show something like ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), statically linked, stripped. If the "version 1 (SYSV)" is missing, then the code probably won't work. Instead, you'll get "Illegal instruction" and a return code of 132, which isn't much help. The solution is to recompile with the correct settings and compiler.

This fact can prove to be quite annoying, because a lot of the precompiled PPC software out there is of the wrong type. For example, the ucLibC binary distributions for PPC are of the wrong type, so you can't use them. Instead, you'll have to go and compile your own from the source, which takes a while :(
Luckily, the mvpmc people will provide you with a ucLibC toolchain, so all you have to do is grab the ucLibC buildroot, and compile away the apps that interest you.

My plans for the near future are:

  • figure out how to build things from the ucLibC buildroot, so I can have lots of the supporting applications that come in the (useless for the mvp) binary package
  • investigate what ucLibC programs it would make sense to have on the box, and produce a "fatter" dongle.bin
    (to make up for the extra space of these programs, it's probably be one with a really small initrd, and then having the root over nfs)
  • investigate a web interface to control playback (so you can plug one into your hifi, then control what it plays remotely). Or I might just give in and use it as a slimp3 clone
  • investigate using it as a very thin client with the TV as the display
  • other evil things that might spring to mind

[an error occurred while processing this directive]