chumby: Fri Nov 30 01:42:00 2007

Fri Nov 30 01:42:00 2007

I was a "late" early adopter for the Chumby - when I saw mention on the corporate blog that they were sending out the first production units to people who'd signed up... but that you could still sign up... I figured sure, it's squarely in the "one-each" category, and got on the list.

Very good out-of-box experience - gets the "fuzzy" aspect across right away, with the cloth bags (note that they did come across as well designed, just not traditional-tech-product crisp - really gave off an inviting "don't worry about voiding the warrantee, play with me" sort of vibe :-)

Even ignoring all that, if someone had offered me an NTP synced alarm clock, using wireless net, that can play mp3 alarms, and gets daylight savings time right all by itself, for under $200, I'd have just gone right out and bought it, probably any time in the last 10 years. (I built one of those out of a trash-picked laptop, and used it until it fell apart...) That alone made it a useful product. And yet... that's not what it's about.

The screen is bright. Easy to read in a sunlit room. This is of course horrible if you're trying to fall asleep in said room, after dark... there's a night setting (which is useless because it doesn't run the real clock display) and a dim setting (which is almost useless because it needs a button press and half a dozen screen touches to get to it and back to the clock display.) However, I also have a Phillips digital picture frame, which has this neat feature: simply define certain times as night and day, and it automatically blanks and unblanks the screen. That seemed like the right approach...

A little searching on the wiki turns up a way to turn on sshd from the touchscreen. A bit more reading turns up a few other hints. My overall approach was to simply find out how to put the screen in dim and bright modes, then just have a cron job fire up at the right time. Almost easier done than explained :-)

cat > /psp/dim_screen
#!/bin/sh
echo 1 > /proc/sys/sense1/dimlevel
chmod +x /psp/dim_screen
^D
cd /psp
sed s/1/0/ < dim_screen > bright_screen
chmod +x bright_screen 
cat > sleep.cron
45 23 * * * /psp/dim_screen
00 7 * * * /psp/bright_screen
^D
cat sleep.cron  >> /psp/crontabs/root

That creates a dim_screen and bright_screen command which work by simply stuffing a 1 or 0 into /proc/sys/sense1/dimlevel which changes the screen, though the UI doesn't notice it. Then simply run one at 11:45pm and the other at 7am. Nothing subtle, just basic linux sysadmin work; the only "trick" is that /psp is persistant writable storage and most of the fixed firmware "calls out" to it, via symlinks or explicit references in scripts.

All household electronics should be this malleable :-)

Next project will take a little more effort - getting a Vernier GoTemp USB temperature probe hooked up to one of the USB ports on the back, and forward readings to a server somewhere. I've already got this working on my repurposed ex-Martian PC printserver; the chumby kernel doesn't have USB HID support, nor does it have USB LD support, so I can't just open /dev/ldusb0 from a script, I'd have to either replace the kernel, or build/find a port of libusb, maybe from the Maemo packages for the Nokia N800.

Of course, I also need to come up with a web-service based temperature logging and analysis database, to use the data :-)

Footnotes: