I'd use your work as a base if that's OK and give you anything I come up with.

If it wasn't ok, I wouldn't have released the source. Ofcourse it is. Something that others might find useful. The 'empeg_ui.[ch]' files basically contain wrappers around the hijack ioctls when compiling for __arm__, but which wrap around Xlib calls otherwise. So you can do most of the development and debugging on your X desktop (cygwin for WinXX users?)

I used things like valgrind to make sure there were no memory leaks, or bad memory references, gdb to do single step debugging, and gprof to shave off a few cpu cycles in the really bad parts.

I may have missed it, but has there been any progress/resolution on the serial port sharing issue?

Sharing with the player? That's what hack_init is for. It copies itself to /empeg/bin/play-s, then copies /bin/init to /bin/init.new, modifies it to start play-s instead of the real player, makes a backup of the original init, and moves the modified init.new over /bin/init.

When it is started as play-s, it checks /proc/empeg_power and when we're on battery (in the car) it execs the player with the -s- flag. If we're on AC it simply execs the player without the extra flag.

The only problem I've seen is than when I'm running on AC, have a gps connected and start gpsapp from the hijack menu. It manages to set the serial port speed so that the player suddenly sees the gps data and the player application invariably crashes/restarts.
_________________________
40GB - serial #40104051 gpsapp