Topic: Infocast SDL Slideshow
I have always thought that digital picture frames were overpriced for an LCD that reads from an SD card, especially when I could get an Infocast for only a little more. I envisioned a system wherein I could upload pictures from home and automatically sync pictures on picture frames. This enables my wife and I to "post" pictures of our kids, and our parents can automagically get pictures of the grandkids on picture frames at their house.
This all works without having to unplug any memory card, plug it into a computer, and putting it back into the frame.
Since the chumby/infocast devices have wifi, it can all happen automatically.
My project is now up and running (in it's most basic form). I have an I8 at work, two at home, one at my mom's house, and one at the in-laws.
Startup
I have everything self-contained on a USB stick and run from a debugchumby script. If both /psp/network_configs and /psp/network_config are missing, it attempts to create one based on hard-coded values for the network where they're located. Any place that needs custom information in my scripts is switched based on the hostname of the device since those are unique.
I also do a few things like adding SSH key fingerprints to the known_hosts if that is missing, install my
crontab, disable the control panel, and finally kick off my slideshow.
Syncing
The crontab runs a syncing script every 15 minutes. The syncing script uses rsync (which I cross-compiled and is on the USB stick) and some other things to sync. It doesn't sync just the images, it syncs the entire USB stick. This is because I might update the slideshow software, helper scripts, etc. I also have a file to control the crontab version, and reboot count. This is so I can force a reboot or crontab update by changing these files. If there are new images I restart the slideshow (by killing it & restarting it, and I check the files for crontab/reboot and act on those as well if needed. I had to cross-compile rsync (and dependencies) which are on the USB stick and use LD_LIBRARY_PATH to get their shared libraries.
Slideshow
The slideshow itself was written using SDL. I took the work of ChumbyLurker (see this thread) and compiled SDL for the chumby as well as SDL_Image to do the JPEG decode. This code was inspired by Perigee Slideshow which I originally tried using. I had it working, but when adding features I wanted (reading exif data for rotating images, reloading images using signal handlers) I ran into issues. I was having problems where it would get killed and I couldn't determine why. It wasn't OOM killer so it wasn't out of memory, but it would simply be killed. I never got to the bottom of it, so I simply started from scratch and wrote "ISS". The source for this I published here: ISS. You will need SDL/SDL_Image cross-compiled for the chumby to get this working.
I purposely didn't publish anything except the slideshow because it contains many details of my network infrastructure as well as "ways in" that can be exploited with the SSH keys therein. If there is enough interest I can re-work some of it to pull out the private bits and publish something, however it's not pretty, and won't necessarily be easy to set up.
That being said, if you have any questions let me know and I'll answer them.