Remember that $30 laptop?
Finally, I mean after one and half month struggling, finally I got it working.
It is perhaps the longest project I did since I moved to Sydney. Almost everyday during this one and half month.
The biggest issue is the laptop itself. The cardbus support is not well compatible with my 802.11G wifi card. Initially, I tried to connect to my existing WPA encrypted wifi router. But it’s very unstable. Both cards I have, one Ralink 2500 and one Antheros 5212, crashed system immediately after driver loaded in windows. Thought maybe the support for wifi is not good in Win95OSR2 (loaded when laptop coming), I tried windows 98 and 98SE, same. Actually, before the full win98se, I installed 98lite. That’s a mistake cause it took me double time to confirm win98 did not work either.
Before giving up, I tried to install linux. Since I need a really small and fast one, The Damn Small Linux was installed, with the only boot option of floppy driver (I’m lucky to have that driver:) But latter I found DSL is not a good choice either because too many system modules and tools were missing and hard to config.
After many days and many hours experiments, finally I found the combination of Atheros card and open (no encryption) wifi link is the most stable configuration, and the madwifi driver under linux is much more stable than the OEM driver under windows. So, I simply set up another virtual open wifi link on my FON router especially for this photo frame.
everything looks fine now except sometimes the card still stop to work due to a hardware resetting error. Fortunately, it can be fixed by restart the card. A script is added to system for checking the connectivity and restart wifi card.
The wifi related issue cost me around one month. The remain part is relatively straightforward. Initially, I decided to display the photos from Flickr, but I never got the Flickr::API working due to the heavily cutted perl in dsl. Then I setup another web server with a running script which randomly copy a photo to a fixed place. The script on the client side (the frame) simply download this photo and display in regular time.
So far, it’s runing well, but there were still some practical issues: LCD will shutdown after 30 mins, the system fan and hard disk were too noisy, and shutdown/switch on was annoying too. I found a lovely tool called ‘toshset’, which can be used to switch off the fan, slow down cpu (prevent over hot), shutdown hard disk, and even setup a auto power-on based on RTC time. The suspend-to-RAM feature also works well in this old laptop. The shutdown & switch on time became much quicker by using it. The scheduled shutdown can be implemented by a tool called ‘apmsleep’.
I spent much time on the RTC auto power-on feature too. There are two issues: the ‘date’ command in linux will not automatically set the RTC. therefore, after reboot your date will be lost again. I tried to use ntpdate to syncronize with a time server, but unfortunately it did not support proxy. You need to use ‘hwclock’ to set the RTC properly. Another issue in this particular laptop is the RTC battery and sub-battery are totally dead. Those batteries are some weired model which are actually a combination of several button-sized Ni-H 30 mAh batteries. I managed to pick three working ‘button’s from the sub-battery and used as RTC battery, and it works!!
Too make a system work, even a really simple system, and easy to use is really tough. you have to overcome every possible obstocle and carefully consider every detail. What I think I did well is the overall process:
1. resolve key tech problems
2. create prototype for pilot running (always require some dirty hacks:)
3. develop production system
4. add new features
My next tasks are adding more features on this digital photo frame, such as clock, weather, tv guide, calendar, and even POS.