• If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • Finally, you can manage your Google Docs, uploads, and email attachments (plus Dropbox and Slack files) in one convenient place. Claim a free account, and in less than 2 minutes, Dokkio (from the makers of PBworks) can automatically organize your content for you.



Page history last edited by Vasile 11 years, 11 months ago


Gadgetmind (retired)


  • Keep making .upgrade releases but hand this over to someone else ASAP!


  • Support the guys doing the graphics/palette work.


  • Reverse engineering the NV config and writing the mgnv utility that lets us read/write the config data. Status: Done!


  • New udhcpc to give us a proper resolver. Status: Done!
    • Al Tek have hacked udhcpc so that rather than calling a script/program for dhcp events, it directly involves "/bin/busybox ifconfig" and "/bin/busybox route" with various options. This is deeply nasty. What's worse is that it also writes some values directly to memory for dvdplayer.bin to find. Yak! Anyway, bodges have been added to bodges, and the new udhcpc is now in firmware onwards. The main change is that /etc/resolv.conf now contains the information required for name lookups to work.


  • nbtscan replacement to support faster browsing to a single server. Status: Done!
    • dvdplayer.bin invokes nbtscan with some command line options to get a list of samba servers that are available. The full /24 is scanned, so this is very slow and most people usually have all the files on a single machine anyway. I have written an nbtscan replacement (which invokes the real nbtscan if necessary) that pulls the name (and optionally IP - if not supplied then your DNS needs to work!) of a default machine from NV config. Note that once again Al Tek hacked nbtscan to write directly to /net and /hosts/hosts rather than filtering the output.


  • make everything in /bin into links to make testing replacement programs easier. Status: Done!
    • In firmware since


  • get a web server going that supports CGI. Status: Done!
    • Have built mathopd, which took some hacking. It seems to work well. Have added CGI and WWW users to /etc/passwd in later firmware to support this.
    • mathopd is in the devel firmware as it's experimental.



  • maintain the wiki
  • scripting
    • rewrite "setup" script (see below) in hush (busybox-1.10).



  • Maintain the Two Yahoo Groups
  • Maintain the Rapidshare Archive
  • Collect for and Administer The Development Fund


Nhousty (lurking)

  • Write a user configurable web front end for the micro_httpd webserver using CSS and javascript.
  • Try and get some basic scripting done for the web backend.



  • Build a new kernel with loads of yummy bits in it. Status: 95% complete.
    • Functioning:
      • Serial console (now with VT support)
      • Network driver
      • IDE (ATA/ATAPI) driver
      • VFAT driver
      • FIP module
      • EXT2 driver
      • KHWL module
      • SMBFS driver
      • NTFS read support
      • NTFS write support (overwrite only, no resize)
    • To be tested:
      • NFS client/server
    • To be developed:
      • FUSE support


  • Currently we've got a kernel up and running, browsing local HD and playing IFO/VOB works.Networking is enabled and working, playing over the network has now been tested. Currently the kernel is using stock modules for ide, network and khwl. We have been able to compile the ide/network drivers into the kernel but the system, probably dvdplayer.bin, needs modification to quit trying to load them.


  • Get fuse and djmount working so we get UPnP AV compatibility.


  • Create a dvdplay app similar to fileplayer, mp4play.
    • Gets it out of the main menu.


John (not here anymore, where are you, John? )

  • Work out exactly what setup does. Status: Done
  • Generate nmbd/smbd for MG-35 host. Status: NOT REASONABLE
    • Inetd has already been ported to the MG-35.
    • OpenEM86XX has Samba in it. Toolchain is the same, so it should port pretty easily. Not sure if server is included.
    • Unfortunately, the SMBD compiled for ARM takes up a whopping 4MB of code. Well beyond a reasonable target size for our player. 
  • Rewrite gpio_* functions for kernel. Status: Done. Comes in both C and assembly flavours. 
  • Rewrite fipmodule in C. Status: Done.
    • Danny and other alpha testers performing testing to ensure completeness/accuracy.
    • LEDs tested and working.
    • Tested key repeating, module unload
    • Added INS_KEY ioctl for use by /proc/player module.
  • Write TTF/Type1 to Variable Width Bitmap Font converter. Status: Done.
  • Write Variable Width Bitmap Font renderer. Status: Done.
    • No major problems. Only 4-bit anti-aliasing though, due to palette size.
  • Write photoplay application. Status: 20% started
    • Seems simple enough.
    • Tested libjpeg on NOMMU.
    • Tested khwluser/yuvbuf functions.
    • Need to write quick JPG->YUVBUF loader
    • Need to write photo navigator 
  • Write startup/shutdown logo display.
  • Write shutdown script. Status: Done.
    • Calls logo display.
    • Calls /usr/exit and /usr/exitrc for custom shutdown handling.
    • Unmounts stock HDD mounts.
    • Calls powerdown.
  • Write setnas replacement, nasnames. Status: Done.
  • Port unionfs to the new kernel. Status: Done.
  • Port inetd. Status: Done.
    • Uses first of /usr/etc/inetd.conf and /etc/inetd.conf
    • Tested wrapper with micro_httpd
    • Created .ipk module 
  • Replace (bulky) busybox telnetd with utelnetd. Status: Done.
  • Port Python 2.4.5. Status: Done.
    • Thread issue removed (disabled threading)
    • Most things functional (socket, expat, sqlite, math, operator, bzip2, random, xmlrpcserver, etc.)
    • Courtesy of Optware
  • Port e2fsprogs. Status: Done.
    • Leon reports issues with e2fsck on large (ext3) partitions
    • Courtesy of Optware 
  • Port netcat. Status: Done.
    • Courtesy of Optware 
  • Port freetype. Status: Done.
    • Courtesy of Optware
  • "Port" tinypy. Status: Done.
    • What modules to port?
  • Rewrite "setup" executable, in C. Status: Done.
  • Crack open the DP-558 firmware. Status: Done.
    • Extracted pure-ftpd, fdisk, mke2fs, ntpdate
  • Port D-Bus daemon. Status: Done.
    • Very old, small version (0.6).
    • Supports activation, authentication, message passing
    • ~250kB resident
    • Probably not going to be used. 3 words: Datagram Unix Sockets.



  • Rewrite dvdplayer.bin menu system Status: Done.
    • Instead of creating XML UI description language similar to KML, I chose .INI files for ease of use by designers/users.
    • Allows fully custom graphics, command lines, submenu definitions.
    • Has fake "fip" and "khwl" drivers, using SDL to emulate the relevant hardware (keys, OSD) on a PC.
    • Ported to use the MG-35 osdtest/khwl/fip hardware. Fortunately, this was easy.
    • Wrote .INI file loader to work on NOMMU. Now built into libmsg.
    • New menu INI file image loader uses image cache for smaller memory footprint.
    • Ditched Nano-X for a significantly lighter custom image handler.
  • Finish second-generation BYO firmware generation, with UI. Status: 40% complete.
    • Written using Python and wx for simplicity and cross-platform compatibility.
    • Includes 100% python cramfs tools, repository management.
    • Added configuration file editor, with syntax highlighting (sash, ini). .
    • Need to convert to using IPK packaging format 
  • Rewrite bootloader from scratch. Status: 50% complete.
  • Write /proc wrapper module for fileplayer, mp4player, etc. Status: Not started.
    • Multiple front-ends (web, TV) need to access the player status at any given time.
    • A module would allow for a /proc/player/XXX/YYY entry to access current status, send commands for an active player.
    • Thanks to Danny for suggesting this :) 
  • Write KML player. Status: Not started.
  • Reverse engineer khwl module. Status: 45% complete. 


  • Expand libmsg Status: 95% complete.
    • Added INI parsing support. No current need for writing.
    • Still need HOSTS section parsing. Format too simple to make writing code.
    • Keeps any default section at top of file before first section header
    • Can iterate to return all keys in section with a given name
    • Parses strings into list of lines



  • Test dropbear ssh server. Status: Not started.
    • Make sure everything works as it should.
    • Add missing files. Requires a local/network /usr mount (for host private key, client public key).
    • Create .ipk module


  • Upgrade SASH shell. Status: 50% complete.
    • Re-wrote init portions
    • Added command line editing, command history in ${HOME}/.sash_history
    • Added SHELL parameters in ${VAR} format
    • Added "test"/"[" expression evaluation
    • Added "if/elif/else" and "while/break/continue" block commands
    • Might still need shell arithmetic (bigbox includes 'expr')
    • Added Zombie process reaper
    • Added pipeenv builtin pipeenv COUNTER expr ${COUNTER} + 1
    • Added LINES and COLUMNS terminal size auto-updating
    • Added -pivotroot built-in to sash. Tested working with new kernel.
    • Added pipe command set








  • Create new "pipe" commands. Status: Done

pipe ps | grep "net" - | tee /tmp/netservers.txt | grep inetd - | tap /tmp/inetd.ps

pipe ps | grep -i sw | child | child | child | grep "net" | tee /tmp/inetd.ps | child | tee /tmp/double.log | grep "&"

  • Fixed child waiting issue
  • Integrated into sash to save space
  • Port virus, a small vi implementation to the MG-35. Status: Done.
    • Loads, edits, saves, etc.
    • Properly handles terminal size changes.
    • Created .ipk module
    • Folded back into busybox


  • Port vim, a full vi implementation to the MG-35. Status: Done.
    • Syntax coloring
    • Screen resizing
    • Termcap UI working (requires terminfo database in /usr/share/terminfo)
    • To Install On MG-35 console:

gunzip terminfo.cram.gz

mkdir -p /usr/share/terminfo

mount -t cramfs -o loop terminfo.cram /usr/share/terminfo


  • Port expat, an XML parser library. Status: Done.
    • Updated Makefile.


  • Port libupnp, an A/V remote management library. Status: Done.
    • Re-ported via Optware


  • Port ncurses, a console interface library. Status: Done.


  • Port ipkg, a package management utility for embedded devices. Status: Done.
    • Now tested:
      • install
      • update
      • upgrade
      • remove
      • list
      • list_installed
    • Needs to be tested:
      • everything else
    • Created .ipk module
    • See here and here for up-to-date packages.


  • Port sqlite, an embedded database. Status: Done.
    • Surprisingly fast. Pretty big though (~500kB on disk, ~600kB in RAM).
    • Created .ipk module
    • Courtesy of OptWare


  • Port lua, a flexible scripting language. Status: Done.
    • Seems to be fully working.
    • Need to write fip, khwl modules
    • Created .ipk module
    • Ported v5.1.3 source
    • Added several libs as builtins:
      • luasql.sqlite
      • luaexpat
      • luasocket
    • Courtesy of OptWare


  • Patch uclibc binary distribution to work around hardware FPU request. Status: Done.
    • setjmp was not working due to hw fpu opcode fault (no fpu on mg35)


  • Port busybox-1.10 multi-tool binary. Status: Done.
    • Lots of new commands.
    • Greatly improved hush shell (with interactive prompt)
    • Created .ipk modules:
      • wget
      • hush


  • Port ether-wake WoL tool. Status: Done.
    • Sends Wake-on-Lan "magic packets" to sleeping clients
    • Needs wrapper script for "wake list" from config file


  • Add convrb11 to respository, BYOF v1 scripts. Status: Done.
    • BYOF can now automatically perform codepage translation during mktarget
    • BYOF can now automatically insert your favourite fonts into dvdplayer and /fonts


  • Rewrite (small) udhcpc changes. Status: Done.
    • Need to test new binary.
    • Tested by Vasile


  • Port libmad, MP3 decoding library. Status: Done.
    • minimad test executable works (decodes stream into 16-bit stereo audio samples)
    • libid3tag works


  • Port libtremor, Vorbis decoding library. Status: Done.
    • v1.0.2 (svn r14823)
    • Library and example ported


  • Create libmd5. Status: Done.
    • Used by metadata for filename hashing


  • Port Enhanced ctorrent, a bittorrent client. Status: Done.
    • Version dnh3.3.1 (2008-04-26)
    • Fully functional :D
    • VERY RAM HUNGRY (do not try to watch movies while running)


  • Port FUSE. Status: Done.
    • Kernel module ported, loading.

Using usr/lib/fuse.o

fuse init (API version 7.5)

fuse distribution version: 2.5.3

  • Now integrated directly into kernel.


  • Port NTFS-3G. Status: 50% complete.
    • finished ntfs-3g, ntfs-3g.probe ports
    • doesn't yet recognize (old) module version


  • Steal NTFS-3G userspace from MG-350HD. Status: 100% complete.
    • Reads ok. Write speeds are pretty slow (~1MB/s via FTP vs ~2MB/s for ext2 via FTP).
    • Writes are accurate. Deletes are accurate. 
  • Write sample tone generator. Status: Done.
    • Plays a simple sine-wave.
    • Example for outputting data to the sound card in PCM format


  • Port OKFW mp3 player. Status: 95% complete.
    • Plays local files, http and icy streams from command line
    • Responds to pause/play/stop/next/prev/volume
    • Need to respond to seek, ffwd, rewd
    • Need to navigate directories during slideshow
    • Can communicates as fileplayer.bin
    • Offers simple console UI, fip control
    • Plays local or remote playlists (m3u, pls, asx/wax/wvx)
    • Offers playlist shuffle capability
    • Accepts multiple arguments as an ad-hoc playlist
    • Handles HTTP redirects, ID3v1/v2 metadata, etc.


  • Write playlist (PLS/M3U) parser. Status: Done.
    • Local and remote loading (remote and detection also requires libio)
    • Added to mp3play
    • Now supports ASX/WAX/WVX


  • Write rss downloader. Status: 85% complete.
    • Downloads a set of feeds every N minutes, searching for downloads matching a wildcard pattern.
    • Can be used for, eg: .upgrade downloading, podcasts, torrent feeds, automated LAN file transfer, etc.
    • Needs a WWW UI for filters, feeds management (uses INI files)


  • Write "fileplayer.bin" dispatcher app. Status: Done.
    • Handles all standard file types
    • Dispatches to /bin/play/XXX based on container format
    • Needs playlist applet written (with fileplayer-protocol controller)
    • Tested with avi (working!)




  • Write simple shoutcast playlist ripper. Status: Done.
    • Sample output here


  • Port base version of SpiderMonkey. Status: Done.
    • Needs object model. KML? Other ideas?


  • Create list of firmware programs without complete sources. Status: Done
    • smbmount
    • various container players (mp4play/mpegplayer/fileplayer/dvdplayer)
    • gui - setup, player, playlist, upgrade (dvdplayer)
    • video/sound driver (khwl.o)
    • bootloader
    • upgrader (simple extension to mgnv)





  • Create font codepage converter. Status: Done.
    • Contains conversion tables for codepages 1250-1254


  • Port Optware packages. Status: Ongoing.
    • Created patch for MG35 w/ gcc-2.95
    • Created patch for MG35 w/ gcc-3.4.3
    • Generated numerous ipk packages


Comments (3)

Rajesh Singh said

at 9:38 am on Feb 11, 2009

Quick comment, since pigsinspace.ca is not currently available, I have a heap of bandwidth and could setup a simple file upload/sharing system that could be used for us here? For images, and development upgrade images.

Vasile said

at 11:15 am on Feb 11, 2009

Downloads are already available at Sourceforge. Let us know if you need something that's not there.

Rajesh Singh said

at 8:47 pm on Feb 11, 2009

Vasile, can we update the front page to reflect the links to sourceforge. :)

You don't have permission to comment on this page.