LCD digital picture frame, Version 2
I made a cheap digital picture frame from an old broken IBM notebook. Total cost:
USD 50 (and a 802.11b PCMCIA card).
I liked it so much I bought an identical thinkpad on ebay.
Pictures here
Properties
The first pictureframe use WiFi for upload of pictures etc.
The second pictureframe use a Compact Flash card to store pictures
About the laptops.
The laptop are IBM 365XD ThinkPads.
+ |
Cheap (Cd-drive broken, keyboard somewhat broken. Cabinet and monitor hinges
broken. Great I do not need those anyway.) |
+ |
No fans. |
- |
LCD. Not a TFT but OK. |
+ |
No USB. It would be nice to put in a USB memory stick. |
+ |
2 PCMCIA ports. I use one WiFi. The 2. port could be used for eg. a CF
memory card in an adaptor.
|
+ |
Can boot from PCMCIA/CFlash and network |
+ |
External floppy drive. I used this to install Debian. |
Hardware
- I removed the CD drives. I do not need them and one was broken anyway.
- I removed the batteries. The ThinkPad runs without a battery. The battery
just makes the picture frame heavier and might use more electricity. Also I
consider it an advantage that you can turn off the picture frame by just
turning off the powder.
- On the first ThinkPad I left the keyboard in. By the second I found out
that it can boot with the keyboard if the trackpoint is disabled in Windows Thinkpad menu.
- I removed the speaker, the volume control, and an audio module (the small PCB to rigth with the microphone)
- I removed the center panel with the LED's
The BIOS.
I was not impressed with the BIOS. It had a flying bird as a cursor.
I tried to flash-upgrade the first thinkpad but the upgrade failed. At least I could
still boot the laptop but all entries in the BIOS was gone. Only the stupid
bird was left. I tried upgrading again but the upgrade program declared that
I already had the newest version and exited.
Getting rid of suspend-mode, X blanking etc
I spend a lot of time avoiding the first picture-frame to go into suspension mode,
which is a really bad thing on a computer without an accessible keyboard. It
turns out I considered this problem too late.
- I could have disabled suspending permanently from within the
Win95 that came on the laptop. However formatting the disk was the first thing
I did. On the second pictureframe i remembered to do this.
- I could have booted the thinkpad with a DOS floppy and run a program,
downloadable from www.ibm.com to modify the
BIOS. But I did not realise this until I had build the picture frame, and I
had not made a hole for the cable to the external floppy drive.
- In the end I used the "tpctl" package. It is a kernel module and some programs.
But the changes made with tpctl are not permanent. I run tpctp from /etc/rc2.d/S95nosuspend like this:
#!/bin/bash
tpctl --setup-display-internal=enable
tpctl --pm-mode-AC=manual
tpctl --pm-sedation-standby-timer=-
tpctl --pm-sedation-suspend-or-hibernate-timer=-
tpctl --pm-sedation-hibernate-from-suspend-timer=-
tpctl --pm-sedation-hardware-or-software=-
tpctl --pma=manual
tpctl --pm-timer-mode-suspend-or-hibernate=disable
tpctl --pm-timer-mode-blank-display=disable
tpctl --pm-timer-mode-standby=disable
tpctl --pm-mode-safe-suspend=disable
Get rid of cursor in X.
I used:
http://wearcam.org/seatsale/programs/blankcursor.bdf
For Xfree 4.x there are more possibilities.
Slideshow
I used "feh" which does a really good job.
Without X I would have used "fbi" in a frame-buffer.
Convert pictures to screen size with "convert" from "imagemagick".
Eg
for img in foo*.jpg; do convert -depth 16 -resize 800x600 -quality 70 $img pf$img; done
This does what you want: Keep the aspect
ratio and fit pictures to screen without rotating.
Pictureframe 1: Network
This one has a harddisk, and a PCMCIA WiFi card.
Because the picture frame has no accessible keyboard, floppy-drive, CD-drive,
USB, or serial port, if it loses access to the network, there is no way to get
to it without taking it apart. The picture frame can be moved and wireless
network configurations can change.
I wrote a small script that will try to get on all wireless networks, that I
know. cyclenet (of course keys and
addresses are fake here).
Operating system
I Installed Debian using the bootfloppies in the external floppydrive. Then I
did a networkinstall using an Orinoco WiFi card.
Pictureframe 2: CompactFlash card
This one have no harddisk. It boots from a 64Mbyte CompactFlash card in a PCMCIA
adapter. The pictures are stored on the same CF-card.
Operating system
I partitioned the CF-card with a 4MByte FAT partition and a 60MByte ext2
partition. Syslinux loads a kernel from the first partition which use the
second partition (/dev/hdc2) as root partition. I did not use an initram disk
because the RAM is limited and there is no swap.
In total the Operating system takes up 30MBytes, leaving 34 MBytes for pictures.
Make sure to mount the root filesystem read-only or the CF disk will wear out.
I mounted at tmpfs on /tmp to allow X to write there.
Software
Displaying pictures
My original plan was to display photos in frame-buffer-mode with
"fbi". However the best I could make the frame-bufferdriver do with the Trident
9320 chipset was 640x480 i 256 colors.
I then had to use X to display the photos. Xfree 4.3 did not work. XFree 3.3.6
(XF86Config)
from Debian stable worked right away, except that I spend quite a lot of time getting rid of the X-cursor in the middle of screen.
I ended up using
http://wearcam.org/seatsale/programs/blankcursor.bdf
While doing a some research on the internet I realized I was not the only one struggling with this annoying problem. I really think there should be a "noCursor" option in XF86Config.
Changing pictures remotely
I made a small script to
change the gallery on the pictureframe from another computer.
Other ideas
- Streaming from network. I.e. a gallery server.
- With the picture-frame running NTP it could be a good precise clock.
osdclock works well. Run like:
osd_clock -s0 -c blue
Niels Elgaard Larsen
This work is licensed under a Creative Commons License.
This
work is licensed under a Creative Commons
Attribution 2.5 License.
Back to Elgaard procjets