Inspired by the many digital picture frame tutorials online I decided to make one myself.
First I jotted down some goals:
- Use a minimal amount of hardware and achive total silence.
Solution: Strip away, speakers, battery, CD- and floppy drive. Instead of the hard drive use a Compact Flash card with a CF-IDE bridge.
- Use a minimal amount of wires.
Solution: Use wireless networking.
- Design with a thin and flat formfactor.
Solution: Mount everything between two sheets of transparent polycarbonate or acrylic glass (plexi glass).
- Run without keyboard or mouse.
Solution: Remote control via ssh and/or vnc.
- Easy power up/down via the power button.
Solution: Autologin in console and run X and other stuff from .bash_profile
Problem: Since the Toshiba 320CDS uses an APM BIOS it cannot read events on the power button. In other words it cannot power down nicely using the power button. Any ACPI BIOS would be able to.
- Display a slide show of images.
Solution: Use Feh, a very capable lightweight image viewer.
- Lenghten the life of the CF card by minimising disk writes/reads after boot.
Solution: Do not use swap on the CF card, store images online, configure the system to report less.
- Display a Pong Clock.
Solution: Use the pong xscreensaver.
Problem: Won't run smoothly @233 MHz
Install a minimal debian installation
- Follow this excellent tutorial: wiki.dennyhalim.com/debian-minimal-desktop-installation
Additional Debian packages to use
- Remote control with: ssh and x11vnc
- Disable screen blanking in x: x11-xserver-utils
- Wireless support: wpasupplicant wireless-tools
- Image viewer: feh
- Remove the mouse cursor: unclutter
- Mount any ftp/sftp/... as local directory: curlftpfs
Set up wireless networking with 3Com Office Connect 11g PCMCIA
- Download the correct firmware from: prism54.org
- Install the packages wireless-tools and wpasupplicant
- Follow this excellent tutorial: http://ubuntuforums.org/showthread.php?t=318539
- To use multiple networks, use the following configuration to activate roaming mode:
- Edit /etc/network/interfaces:
iface wlan0 inet manual # this has to be set to manual, dhcp configuration is done later
" is the identifier that corresponds to the network configuration in wpa_supplicant.conf[NAME_OF_NETWORK]
- Create a /etc/wpa_supplicant/wpa_supplicant.conf containing:
- Edit /etc/network/interfaces:
Autologin in debian without starting x first
Follow one of the two examples here: www.debianadmin.com/how-to-auto-login-and-startx-without-a-display-manager-in-debian.html
Starting X after autologin:
- Add startx to .bash_profile
Set up and use curlftps after autoloing:
- Add your USER to the group fuse:
sudo adduser USER fuse
For this to activate you have to log in again, the easiest way to do this is:
- Mount your remote directory by adding this line to .bash_profile:
curlftpfs -r -o user=FTPUSERNAME:FTPPASSWORD FTPURL DIRTOMOUNTIN
- If you ever have to unmount the directory you can do this with umount as root or with fusermount -u as a user.
Start remove mouse cursor and start slideshow after starting x:
- Add these lines to ~/.config/openbox/autostart.sh:
feh --full-screen --randomize --auto-zoom --slideshow-delay 10 /home/makkan/images/ &
Disable screen blanking:
- First of all make sure the bios doesn't blank the screen.
- Add these two lines to .bash_profile:
setterm -blank 0
setterm -powersave off
- Edit /etc/console-tools/config
Change this line: BLANK_TIME=30
- In your ~/.config/openbox/autostart.sh add these lines:
xset -dpms &
xset s off &
xset s noblank &
Reduce disk writes
- If you have to use swap to get things working set it to minimal use by editing: /etc/sysctl.conf
Add the line: vm.swappiness=0
- In /etc/sysctl.conf also activate laptop mode by adding the line:
- Activate your new configuration by typing: sudo sysctl -p
- Rsyslog writes a MARK every 20:th minute, disable this by editing /etc/default/rsyslog and set:
Restart rsyslog with:
sudo /etc/init.d/rsyslog restart
- Cron writes a report every hour/day/week and so forth. Disable this by editing: