MiLo's MediaMVP page

[ Index ]

MediaMVP programming for Windows users who do not want to go through the trouble of installing Linux

Okay, so I got this MediaMVP thing. Don't like the standard software. I like the mvpmc quite well, but I don't like the way it boots. I have some simple Python software that does enough of BootP and TFTP to upload the firmware, but upon reboot it does strange things. So I intend to 'fix' that...

Compiler setup

Don't have a dedicated linux box, so I grab CoLinux from the web. Install it with the standard 1GB debian image (20 MB to download). Just follow the instructions. This I get up and running with the following command:

G:\CoLinux\colinux-daemon.exe kernel=vmlinux eth0=tuntap cobd0=Debian-3.0r2.ext3-mit-backports.1gb root=/dev/cobd0 mem=192 -t nt
I just enable Internet sharing for my LAN adapter, so that the linux box can connect to the net using my PC as NAT router (which goes to a ADSL modem which is also a NAT router...)

Along the way, I found out the hard way that 1GB was not enough to build the cross compiler. So I put a 3GB disk image on my system, and mounted it as /home in my Colinux session. I also discovered that the cofs driver lets colinux read and write the Windows disks without any problem (as far as I can tell).

There are quite some packages that I'll need, i hope to list them all here. As root, get them by:

apt-get install make sed gcc-3.3 g++-3.3 bzip2 xutils automake libpng-dev xlibs xlibs-dev patch cvs
This is needed in addition to what's listed in the "Installing and using mvpmc" howto:
apt-get install autoconf libtool bison flex wget unzip libjpeg62-dev
somehow, gcc did not install as /usr/bin/gcc so I just link it:
ln -s /usr/bin/gcc-3.3 /usr/bin/gcc
ln -s /usr/bin/g++-3.3 /usr/bin/g++
ln -s /usr/bin/cpp-3.3 /usr/bin/cpp
And of course, a text editor and terminal would be nice too.

Another thing you probably want is Cygwin. That will provide you with an X server in addition to the 'regular' unix emulation stuff. The X server is quite handy to display the "host" version of the software on.

Results

Got it all running! The key seems to be that you have to get the packages first, the scripts don't handle it well if you just try to get it going with trial-and-error. So once I had them all, just delete the whole build tree and start over - this time, it created a working dongle file.

Getting there

Okay, now for getting this to work with the MediaMVP. The problem i want to fix is that if you have a DHCP already running (like my ADSL modem), you must disable it to get the MediaMVP to boot properly.

With the Python scripts below (which will work on any platform, not just windows) you can upload your dongle.bin.mvpmc to the MediaMVP even if there is a(nother) DHCP server in your network. If the MVP boots for the second time and loads that image, it only outputs a DHCP request on port 67, for which it will get a reply from the modem... without boot filename.

Fixing this looks easy: Just check the SERVER variable in the /etc/rcS script, and if it is not set, send a simple bootp request on port 16867 to obtain it from the "correct" server. A simple C program can do this and write it into a file that can be sourced (just like udhcp does on the dongle).

Now I just need to figure out where to put the C file, which makefile to change, how to get the executable on the system...


Downloads

bootplib.py BOOTP protocol implementation, I'm hacking to get it to work with mvpmc. Works fine, but you have to telnet to the box after booting to start mvpmc (for now).
tftplib.py TFTP protocol implementation, works just fine with both the original and modified firmwares. Listens on both 16869 and 69 by default, which allows the MediaMVP to boot even if there is a non-mediaMVP-aware DHCP server (e.g. a router)

Relevant Links

MVPServer
Protocol
MediaMVP Media Center
mvpmc-HOWTO-singlehtml.html
Hauppauge Computer Works: Support
RFC 1350 (rfc1350) - The TFTP Protocol (Revision 2)
BOOTP, Bootstrap Protocol
rfc951.txt
Python Library Reference
MailContact me
My Homepage (Mike Looijmans)