I-Opener Picture Frame

Linux Powered Goodness


Picture Frame


Virtual Boy

I have been meaning to turn my Netpliance I-Opener into a tiny picture frame for a really long time now. I finally dug it out of the basement and started hacking. What follows is an attempt to document my efforts to turn it into a first class photo viewer.

For starters I have a series 1 IOpener, that is a clean bios and HD header, with a Winchip C6 180MHz CPU. I upgraded the ram to 64 MB since I had a stick laying around. and had hacked an external HD into the box a while ago to run as a windows box for my wife. The plan was to loose the HD and run linux off of the internal 16 MB SanDisk drive. Pictures would than be loaded either by a samba mount to my server or form a usb pen drive. The device needed to operate without a keyboard since it is heading to my in-laws as soon as it gets stable.

Inventory: I-Opener, 16MB usb drive, 8x10 picture frame with glass and mat, 44 to 40 pin HD adapter, external IDE HD and a copy of RedHat 6.2 so we can build our Midori Images.

So as you can see I basically popped the front off of the I-Opener and screwed the back strait to the back of the Picture Frame using the convenient mounting tabs on the I-Opener chase. On the front I had to cut a mat to the 8"x6" dimension of the I-Opener LCD, sizing it a little small so we don't end up with a nasty black border around our photos. Next I cut up the stand that came with the picture frame and screwed it to the IOpener using the holes for the original base. Last but not least we had to move the Speakers and button bar from the front to the sides of the I-Opener, since the front was gone.

For an operating system I used a pre built copy of Midori Linux for the IOpener available here.   Basically I added a boot script to mount the memory stick to /tmp/usb, and to launch xli in background mode to display the photos found on the memory stick. And finally I found a utility 'unclutter' to hide the mouse and turned on task bar hiding in IceWM. Presto now my picture frame boots into linux unattended and I don't need a keyboard to get it going. As an added benefit all disks are mounted read only so I can kill the power at anytime without worrying about corrupting the file system. And since everything is solid state with no moving parts (not even a fan) this should be very stable for years to come. The only bummer on the whole project is the low quality of the LCD, I wish I could get the same setup with a high quality TFT display.

Here are the steps I took to modify Midori:

tar xvf unclutter.tar /tmp/config/local/bin

vi /tmp/config/local/bin/fshow
fbi -qut 15 /tmp/usb/*

vi /tmp/config/local/bin/usbmnt
mkdir /tmp/usb
mount -t msdos /dev/sda1 /tmp/usb

vi /tmp/config/local/bin/xshow

# Hide the mouse
/tmp/config/local/bin/unclutter -root -display 0:0 &

# Loop through files on USB drive and display
while [ 1 ]; do
for i in /tmp/usb/*.jpg; do
xli -display 0:0 -onroot -fullscreen \
-border black $i > /dev/null 2>&1
sleep 15

vi /tmp/config/local/sbin/init
/tmp/config/local/bin/xshow &

cat /usr/X11R6/lib/X11/icewm/preferences > /tmp/.icewm/preferences
vi /tmp/.icewm/preferences

chmod -R 755 /tmp/config/local/bin
(sugested by Daniel Devivere)
chmod -R 755 /tmp/config/local/sbin/init

And finally here is a copy of the modified Midori image. Just 'dd if=m4.img of=/dev/hdb1' (Bruce Robertson had to use of=/dev/hdb to get it to work on his machine) And here is a copy of unclutter built for the I-Opener. I built unclutter on a red hat 6.2 box with static linkage so as not to introduce any library dependencies. You should be able to build most any application for your box on 6.2 as well.