The first thing I did when I connected this device, is flashing a new firmware v3.0 from Mvix Ultio support site. I enabled BitTorrent client and Samba plug-ins, as was described in manual. At that time I didn't expect any disappointment, but it came soon when I left it on overnight: the device hanged every couple of hours with no possibility to reboot it using remote control or panel buttons. I've read in one forum that unlimited number of peers in a bundled BitTorrent client (btpd) can kill this device easily. I tried to change settings of btpd startup script via telnet, but with no success as /etc is actually mapped to memory, and is not changeable.
Below comes a remedy process based on fixing an existing firmware, and preparing it for further hacking :)
DISCLAIMER: I take no responsibility for any damage you might cause to your device by following this guide.
1. You must have some Linux machine for that (choose yourself, what's easier: installing Ubuntu on VirtualBox or installing Cygwin on Windows? :-])
2. Download, compile and put mkyaffs2image and unyaffs utilities under your $PATH.
3. Extract existing firmware image:
mkdir install cd install tar xvf ../intsall.img
4. Extract contents of yaffs2_1.img:
cd package2 mkdir yaffs2_1 cd yaffs2_1 unyaffs ../yaffs2_1.img cd ../
5. Extract contents of usr.local.etc.tar.bz2 (this archive will be extracted into a writable partition on a device, partition size is controlled by <sizeBytesMin> entry in configuration.xml):
mkdir usr_local_etc cd usr_local_etc tar jxvf ../usr.local.etc.tar.bz2 cd ../
The whole idea is to place things that we might need to configure later on a running device into this archive. So I've just merged contents of package2/yaffs2_1/etc/ into this archive (please do it carefully as there are plenty of symlinks pointing to the same place: /usr/local/etc). Then, I removed whole directory package2/yaffs2_1/etc/, and created a symlink instead:
rm -rf yaffs2/etc ln -s /usr/local/etc yaffs2/etc
6. Now, lets fix the BitTorrent client settings:
vi yaffs2_1/usr/local/bin/package/script/bt.script # find "start running btpd", and add needed settings after the $btpdbin # (I've just limited a number of peers by adding: --max-peers 48)
BTW, you can move this script into /usr/local/etc archive too, and create a symbolic link to it, if you wish to modify it later on a running device.
7. Compress usr.local.etc.tar.bz2 back:
cd .usr_local_etc/ # Restore original files ownership (I don't know whether this is crucial): chown -R 500:500 . tar jcvf ../usr.local.etc.tar.bz2 * cd .. rm -rf usr_local_etc
7.1 (maybe optional) I don't know what's the point in duplicate /usr/local/etc/ folder contents under package2/yaffs2_1/usr/local/etc/, so I just did the following:
cd yaffs2_1/usr/local/etc/ rm -rf * tar jxvf ../../../../usr.local.etc.tar.bz2 cd ../../../../
8. Compress yaffs2_1.img back:
# Restore original files ownership chown -R 500:500 yaffs2_1/ mkyaffs2image yaffs2_1 yaffs2_1.img chmod 644 yaffs2_1.img rm -rf yaffs2_1
9. Compress the firmware image back:
# Restore original files ownership again :) chown -R 500:500 . tar cvf ../install.img * cd ../ rm -rf install/
That's all. Now you're ready to go, and flash your box with the updated firmware.
PS: I'm too lazy to write how to setup "ipkg" package manager on Mvix Ultio, which allows installing additional software on this device, may be later...