This project was begun in 2003. The article was written to
the best of my recollection, but there may be some missing details
or seeming inconsistencies as a result of more than three years
passing between when this project was begun and when this article
was written.
It seems like everybody is building their own digital picture
frames these days. There are plenty of standard "tape a laptop
to the backside of a picture frame" mods out there, but there
are also a few real gems of case modifications that really stand
out. However, all of them are pretty standard in how they function:
store pictures on the hard drive, boot into an application for
a slide show, and disassemble the entire device when you want
to make any changes. That's a great solution if you want a pretty
static display of images, but when you want your pictures to change
with the seasons, the months, the weeks, or even daily, that makes
maintenance a nightmare. As I was designing my digital picture
frame, that maintenance nightware was something I really wanted
to avoid. I did so by connecting my digital picture frame to my
in-house wireless network.
|
The Hardware
PowerBook 5300s are a dime a dozen these
days. With PowerBook G3s of all varieties being in the $100 -
$300 price range, 5300s have pretty much bottomed out in price.
They can regularly be found for $30 or less. That means that there
are plenty of the old PowerBooks being phased out of service,
recycled, dropped in the dumpster, and yes, even a few have been
set on fire (deliberately).
I picked up my 5300c for about $30 a
few years ago. It had been sitting on the shelf doing not much
for quite a while. One day, while surfing AppleFritter, I saw
a page detailing how someone had modified a an old PowerBook
to work as a digital picture frame. It seemed like a brilliant
idea, and at the time, not one that many people had implemented
(of course, over the next 18 months, at least two more picture
frames turned up on AF). The 5300c on my shelf seemed like the
perfect candidate for making a similar digital picture frame.
With a bright active matrix display, relatively compact size,
and largish screen, it would be a good platform for displaying
pictures. Plus, it has a PC Card slots allowing for a wide variety
of configurations and connectivity.
The
PC Card slots turned out to be critical to my application. Since
I wanted my digital picture frame connected to my network, I would
need a wireless PC Card. I already had plenty of WaveLAN Silver
cards available to me, so that wouldn't be a problem. But I also
wanted my picture frame to be silent. A whirring hard drive really
intrudes on one's appreciation of still images. One particularly
neat (if underutilized) feature of Apple PowerBooks is that they
can boot from any mass storage device that plugs into the PC Card
slot. Armed with that information, I purchased a 333MB ATA flash
PC Card from eBay to serve as my boot volume.
The last piece of hardware I needed was
some sort of frame. Taking a trip to Target with the rough dimensions
of my 5300 in hand, I found a shadow box that was just large enough
to accept the display and motherboard without requiring any extra
parts glued to the backside of the frame.
The Software
The slide show software choice was (and
still is) obvious: There's really only one decent image viewer
for Mac OS versions prior to OS X. That software is JPEGView.
If you don't have JPEGView already, you don't know what you are
missing. It's free, and it does one thing (okay, two) excellently:
It displays pictures on your screen. It also allows you to configure
a slide show that displays any images on a black screen with a
user-definable delay between image updates (and a variety of other
configurable parameters).
What wasn't immediately obvious was what
operating system I should be using. The original plan was to use
OS 8.1 (given its relatively low resource requirements as compared
to OS 9) as the boot OS to enable a relatively modern implementation
of AppleShare and OpenTransport for file sharing. Since this was
going to be wireless, and since my wireless base station doesn't
route EtherTalk packets across the wireless transceiver, I would
also need a copy of ShareWay IP Personal to set up AppleTalk-over-IP
(commonly misnomered as AppleShare IP) sharing of my picture frame's
boot volume. Finally, I'd need drivers for the wireless card.
Again, that choice was obvious: Only the WaveLAN 5.x drivers were
available to me at the time. At first, this particular software
setup worked fairly well. But as I would later discover, this
software combination was not the optimal solution for my needs.
Construction
Being fairly familiar with 5300s, I already
knew how to completely gut my PowerBook, and I knew that there
was enough play in the video ribbon cable to allow me to rotate
the screen a full 180 degrees so that the motherboard would now
be on the back of the screen. So I proceeded to completely strip
down the 5300. I removed every screw and every piece of plastic.
Dry fitting it all in the shadow box, I found that the original
matting would not allow the full extent of the display to show
through. I powered up the gutted 5300c with the matting over the
now naked screen and traced the outline of the backlight on the
matting. I then trimmed the backlight with a razor to match the
outline of the visible portions of the LCD.
I placed all the parts back into the
shadow box and saw that there wouldn't quite be room for everything
to fit with the normal back of the shadow box in place. No problem,
I could easily redesign that portion of the shadow box. What was
really interesting was that there would be no room for a hard
drive regardless of how I set up the innards, and there would
also be no way for a normal WaveLAN card to fit inside the frame
without carving a large slot for the antenna to stick out the
side of the frame.
Needless to say, I wasn't happy with
the idea of a large tile antenna sticking out the side of my picture
frame. I thought that there must be a card with a smaller antenna
out there somewhere, so I did some research.
Eventually
I found the Sony
PCWA-C150S. Some of you may have already seen this page: PCWA-C150S
used in an iBook. I'd just like to point out that I "discovered"
this card back in early 2004 (well before this author re-discovered
the same information). What's more, I've even got some AppleFritter
posts (I'm "alk" in that thread) to prove it! ;-)
As you can see reading through those posts, I also discovered
that the card wasn't natively recognized by AirPort as a PC Card
(though it worked fine in my Pismo's AirPort slot) nor by the
WaveLAN 5.x drivers. Oh conundrum of conundrums! This was the
only card that would possibly fit in the frame without major modifications
(or a much larger frame).
Along the way, I found that the ORiNOCO
7.2 drivers would work with this card perfectly. Unfortunately,
they also require OS 8.6 or better. Given that I had plenty of
"disk space" and RAM and that I wanted to keep things
simple, I decided to just upgrade my OS to 8.6 and use the ORiNOCO
7.2 drivers with the card. No "hacks" were required
to make it all work together.
So now that I had all the hardware I
would need, I could construct the picture frame.
The shadow box I had choosen turned out
to be just perfect. The 5300c's screen was just about 1/4"
shorter than the inside of the box, so it would fit nicely. To
keep it from moving around, I simply applied some electrical tape
to secure the screen to the matting and a few drops of hot-glue
in the corners. The logic board, PMU, and heat sink all fit in
nicely behind it so that when the back of the shadow box was in
place, the pressure of all the components being gently squeezed
is enough to hold it all in together.
Of course, having it all encased in a
picture frame might be nice if you just want to stare a black
screen for hours on end. I wanted that screen lit up, and that
would require some way to power the system. Fortunately, my shadow
box came with a smaller balsa wood insert to help squeeze the
matting against the front glass. I was originally going to discard
this balsa, but then I realized I could use it to build a stand.
I cut it in two places forming a long "E" (of course
without a center bar - more like a "C" with right angles)
and hot glued it to the bottom of the shadow box as a stand. The
stand would serve two purposes: It would elevate the shadow box
so that I would have access to the ports at the bottom of the
frame, and it would hide any cables coming out of the bottom of
the frame (think "G4 Cube").
Finally, armed with a sharp knife, small
saw, and a drill, I cut out portions of the frame where the ports
on the motherboard lined up so I could connect to the ADB port
and to the power jack. Using the drill, I also drilled a few small
"vent" holes on the bottom of the shadow box to allow
some air convection up through the case to keep the CPU relatively
cool.
5300s have a terrible reputation for
being hot. In regular operation, however, I've found my 5300s
to be the coolest laptops I have. They are far cooler than the
Wallstreet and cooler even than the 3400c. In fact, the CPU probably
runs on average at about 80-90F (much cooler than the 120F+ of
some G3s). Still, I was a little concerned about overheating,
so I decided to perform a little experiment: I ran the picture
frame all buttoned up (minus the WiFi card) for several days WITH
NO HEATSINK! The 5300 is dirt cheap, so losing a motherboard was
hardly a worry. I was very surprised by the results: The system
was still running flawlessly nearly a week later! (Looking
back on it, this was probably an incredibly stupid thing to do.
Buttoned up in a wooden case, this was a fire hazard. Please don't
try this with your own system!) With the heatsink in place, it
would have no trouble at all...
Final Product
The
final product worked quite nicely. In fact, having a built-in
wireless card had the neat side effect of allowing the picture
frame to use a remote volume on another Mac in the house as the
storage for pictures. I set up AppleShare to automatically mount
the remote Mac's shared folder at startup and play a slide show
from that volume. Aside from being a little on the slow side,
it really worked well! There were still a few drawbacks, however.
Unfortunately, the system required a
keyboard to be plugged in to do some tasks like restart the PowerBook,
quit and launch JPEGView, etc. This proved to be fairly annoying,
and the keyboard was an aesthetic drawback.
Revision 2
After a few years of operating the 5300
Digital Picture Frame in that configuration, I had identified
some flaws and drawbacks to the design. First and foremost was
the nearly ubiquitous need to use a keyboard for any sort of interaction
with the PowerBook. Sure, I could add pictures via AppleTalk,
but JPEGView wouldn't rescan the folder until the slide show had
been restarted. So even just adding new pictures required using
a keyboard. Another drawback was that occaisionally the PowerBook
would lose it's connection to the remote AppleShare mount and
throw up an error on the display (then requiring the keyboard
to get the Mac back under control).
An earlier idea of being able to use
AppleEvents and Program Linking to control the picture frame had
petered out. I revisited the idea in early 2006, and did some
investigation. I could write an AppleScript that would run from
the Startup Items folder and accept AppleEvents from other Macs
to control how JPEGView (and the underlying Mac) would operate.
There was a catch, however. My wireless
access point doesn't route AppleTalk packets across the wireless
transceiver. I had been getting around that problem by using ShareWay
IP Personal to enable AppleTalk-over-IP file sharing. My copy
of ShareWay IP Personal, however, would not route AppleEvents
over IP. This problem could be overcome with Mac OS 9.
Mac OS 9 includes an Apple-licensed copy
of ShareWay IP Personal to enable File Sharing over IP and Program
Linking over IP. I installed all the software on a full test 5300cs,
and then built an AppleScript to control the slide show. I built
another AppleScript on a 2nd Mac to connect to the first AppleScript.
Everything worked as designed: Pushing a button on any Mac on
my network could result in the picture frame rebooting, quiting
JPEGView, or any other automatable task I wanted it to perform.
So the final setup is really pretty sophisticated.
The picture frame runs OS 9. In the OS 9 Startup Items folder
is my AppleScript Daemon. The AppleScript launches JPEGView, and
it tells JPEGView to start a slide show. The AppleScript can do
several other tasks, too. It can set the sound volume of the picture
frame, it can shut down the picture frame, it can restart the
picture frame, and it can do any other task I program it to perform.
And I can even update the AppleScript by mounting the picture
frame's hard drive on another Mac, moving the AppleScript from
the startup items folder, and replacing it with another AppleScript.
Conclusions
All-in-all, I'm quite pleased with the
results. The picture frame is visually striking with a somewhat
antique distressed look, and the AppleScripts are easy to use
to configure the slide show. The 5300 is completely silent, and
with a 10-30 second refresh rate (also configurable), the pictures
are never stale.
One drawback still remains. I haven't
found a way for a Mac running OS X to display the same "choose
application" dialog as on Mac OS 9 that allows a user to
connect to the applications on any OS 9 (or earlier) Mac on the
same network. Without that feature, the controlling AppleScript
(run from a remote Mac, not on the picture frame) must either
be run in Classic or natively in OS 9 or earlier.
Pictures
Here are a handful of pictures of the
digital picture frame in various states of operation and disassembly.
|
|
|
In action. Sort of washed out because
of the camera flash. |
In action. Another snow storm scene,
though it's hard to make out. |
In action. A scene from a wedding. |
|
|
|
Buttoned up. The ports are at the bottom
right. |
Naked. The board looks crooked, but it
stays put. |
Open for surgery. The motherboard sits
on top of an antistatic bag. |
Downloads
I've decided to make my AppleScripts
available for download. If you want to do something similar with
your picture frame, maybe they'll come in handy. I'm no AppleScript
genius, but I can usually find my way around. Please be kind when
reviewing the code!
Digital
Picture Frame Daemon. Save this script as a compiled application
in the picture frame's Startup Items folder. Make sure you turn
on Program Linking in the File Sharing control panel, and make
sure each user you want to allow access can connect using Program
Linking.
Digital
Picture Frame Control. Run this script from any other Mac
to communicate with the Digital Picture Frame Daemon. Pre-programmed
choices only allow you to restart the picture frame, shut down
the picture frame, quit JPEGView, and launch JPEGView, but you
could add your own.