Last change 30. Aug 2009 A Guide to Hacking on Mvix Ultio = Introduction = Mvi USA announced a contest for the Ultio users to create new software for their Mvix Ultio (MX-800HD) media player. Normally I'd expect they would provide developers with read only access to some kind of revision control system with the source code. But it feels like they don't seem to be taking developers seriously. The documentation is totally missing, they provide you with "source" which in reality is a bunch of RPMs for an unknown distribution of Linux. == Hardware == The boards are manufactured by http://www.sigmadesigns.com The SoC used is Realtek RTD1283 = Operating System and userland = http://www.mvixusa.com/support/knowledgebase/What+is+the...%3F/What+is+the+Operating+System+(OS)+on+Mvix+Players%3F.html Mvix uses a proprietary firmware built upon the Software Development Kit (SDK) supplied by the Chipset providers: SIGMA DESIGNS. This SDK includes various drivers with interface specifications, necessary tools and documentation for creating specific, feature-enabling applications. = Hacking on Ultio - Getting started = == Setting up developement enviroment == First of all you need to download files they made available on their website. http://www.mvixusa.com/support/index.php?_m=downloads&_a=viewdownload&downloaditemid=50 The (unversioned!) tarball called gpl_code_tools.tar.bz2 consists of following: busybox-1.1.3 gdb-6.4 samba-3.0.23c wireless_tools.29 dosfstools-2.10 ntfsprogs-1.13.1 udftools-1.0.0b3 wpa_supplicant-0.5.8 If you're on a distribution using debs like debian or ubuntu then you need to extract the rpms or conver them to deb packages : # rpm2cpio mipsel-sdelinux-v6.03.01-1.i386.rpm | cpio -idmv # rpm2cpio toolchain_mipsel-6.03-6.i586.rpm | cpio -idmv To extract yaffs images with the root file system you need to use unyaffs: Get the code: # svn checkout http://unyaffs.googlecode.com/svn/trunk/ unyaffs-read-only Compile it: # gcc -o unyaffs unyaffs.c Put the unyaffs binary somewhere in your PATH, i.e /usr/local/sbin Now we need to install tools to create new yaffs images. - Install mtd-utils: # apt-get install mtd-utils - Install yaffs2 utils: Get source code of yaffs from http://www.yaffs.net # export CVSROOT=:pserver:anonymous@cvs.aleph1.co.uk:/home/aleph1/cvs cvs logon (Hit return when asked for a password) # cvs checkout yaffs2 and compile it running in the utils dir: # make Copy mkyaffs2image and mkyaffsimage somewhere to your PATH. === Hacking === Here's the fun part. == Extracting Firmware == Download and extract the fimrware: # unzip MvixUSA_Ultio_Firmware_v1.2.zip # tar -xf install.img On version 1.2 you will see following files: arial.ttf flash_erase nandwrite audio_firmware.install.bin install_a package2 configuration.xml mkfs.jffs2 video_firmware.install.bin The root file system resids in the package2 directory in file called yaffs2_1.img. To extract it create a directory called image_dir, mv yaffs2_1.img to it and run # unyaffs yaffs2_1.img After you extracted the yaffs2_1.img file make any modifications you like. Create a new image running # mkyaffs2image image_dir yaffs2_1.img (image is where we extracted yaffs2_1.img) You must be in the main directory to which you extracted the original image. Create new tarball running: # tar -cf ../install.img . where foo is the directory where you extracted the original install.img Copy the newly created install.img to your USB stick. Type "sync" to make sure that the disk cache is flushed. Unplug the USB stick and go through the standard Ultio firmware upgrade process. == Compiling new system == Make sure to have /usr/local/toolchain_mipsel/ Busybox is located in realtek/Linux/system/ap/develop/busybox Go to realtek/Linux/system and run make to see available options Stay tuned. More info to come.