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


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.



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.
  1. 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.
  2. I could have booted the thinkpad with a DOS floppy and run a program, downloadable from 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.
  3. 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:
    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:

For Xfree 4.x there are more possibilities.


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.


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 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

Niels Elgaard Larsen
Linux On Laptops Creative Commons License
This work is licensed under a Creative Commons License. Creative
Commons License
This work is licensed under a Creative Commons Attribution 2.5 License.
Back to Elgaard procjets