As one of the developers at Palm who headed up the software side of the Foleo project, I ended up with several of the prototype and final production units. With them all being 12 years old now, they don't work very well, with long dead batteries and case paint issues. I'm going back into my archives, pulling out my instruments, and using 3D printing technology to bring them back to life.
The Foleo was the first embedded Linux device I worked on in my career. When I first joined the team, we were still evaluating software stacks. I'd been recruited out of developer relations at PalmSource by one of my old contacts who had been at Handspring which had then merged with the old Palm hardware group to form palmOne. I'd been supporting devs on Palm OS for several years, but was looking forward to defining a new generation of hardware.
Originally, we'd been looking at using Gtk+ as the UI widget framework with it drawing to the device framebuffer, but it was proving to be heavier. We ended up keeping the glib part of GTK as a system library for data structures, but going with DirectFB as the graphics engine. On top of DirectFB, we took the LiTE widget system, then built our own libraries called Hx and HxUI. The "Hx" name comes from an early code name of the device, "Hollywood". As names got leaked, we'd take on other code names, including McGuffin and Falcon. For a few weeks, the device's boot screen was based on this graphic:
The keyboard for the Foleo was a custom design, featuring a trackpoint-style mouse pointer in the middle, and "Menu" and "Apps" buttons at the bottom where the "Ctrl" and "Alt" keys were on a standard keyboard. IIRC, the Menu key could actually be used as Ctrl in the Terminal app and we mapped Menu+C/X/V to the expected shortcuts for copy/cut/paste. Just above the keyboard were separate power and email buttons, either of which would turn on the Foleo. Below the keyboard was the right and left mouse buttons, the scroll wheel, and the app switch buttons (which worked to switch quickly among open applications). The wheel supported a "zing" gesture, where a quick flick up or down on the wheel was supposed to act like page up and page down. I personally worked on the zing detection code in the UI framework but it never worked very well, mostly because the wheel didn't send very many events as it moved, so it was hard to distinguish between a zing and a normal movement.
One of the inspirations for the project at Palm was the availability of inexpensive 10" screens from portable DVD players. We originally targeted a 800x480 screen using the Intel PXA270 as the CPU and display processor. However, we found the resolution to be limiting, and midway through the project, we switched to 1024x600 (a size that ended up being used on many netbooks in the following years). At that resolution, the PXA270's LCD output was getting strained, so an Intel 2700g graphics coprocessor was added, and we had one of the creators of DirectFB come on as a contractor to add support for the blit and draw hardware primitives.
In the last few months, after we'd announced it but before it shipped, I was working on trying to get some sort of image and video acceleration going. The 2700g supported hardware decoding primitives for MPEG-1, MPEG-2, and MPEG-4, and I spent a while going through the DCT code to attempt to get it to also handle JPEG acceleration. We tried to get a licensed version of Flash implemented to support YouTube (which had just become big in 2007), but we were never able to get the frame rate to be watchable.
Compact Flash Slot
Tucked away behind the battery was a CF slot. This was our solution to expanding the internal flash beyond 64MB. I worked on this project for a while, and we ended up going with a version of UnionFS, a filesystem for Linux that allowed creating an overlay of an existing filesystem using another filesystem. This proved to be more complicated than expected due to the driver bugs as well as gracefully handling the situation where a user removed a CF card after it had been joined with the machine.
On the right side of the machine was a SD card slot, a display connector, a USB 2.0 A port, and the power jack. These all mostly worked without any significant software support. We had to handle SD card and USB drive removal, so had a way of showing what was mounted in the main UI, along with a way to un-mount it safely, but we also tried to keep those mounted as read-only most of the time, letting apps switch to read/write briefly.
The display connector was tiny and connected to a VGA dongle that was supplied with the unit. AFAIK, the VGA analog signals are all on the connector, we just couldn't fit a 15-pin D-SUB connector due to the device's thinness.
The Foleo used the soft-touch paint on its surface that Palm also used on their Treo 755p phone. Unfortunately, this paint has the tendency to get very tacky and unpleasant to handle after years in storage, and all of my devices are suffering from that to different degrees.
Fortunately, this was only the exterior, so the inside with the keyboard and screen is still fine.
The best treatment I've found so far is to rub the surface with a mixture of water and baking soda. That seems to remove much of the sticky paint, leaving it much more usable. (Thanks to Dimity Grinberg for the formula)
Here a picture of one of my device's exterior that I've not treated. The They Might Be Giants sticker was one I had on my personal development DVT device to tell it apart from other models. It's been in a styrofoam box, so you see where the residue has pulled off some of the pellets.
The Foleo's battery is identified as Palm part# 157-10039-00, a li-ion battery with rating of 7.2 V and 3500 mAh. It's a 2P2S configuration - the type is LP103450SP-2P2S. All of my battery packs have self-discharged into a unrecoverable state, and no off-the-shelf alternatives are available. Physically, it looks like the Palm engineering team took the cells from four Treo battery packs (3.6 V, 1750 mAH) and wired them up in a 2P2S config.
The connector to the main board is a set of five contacts arranged as
1 - Vin
2 - plastic pin 3 - ??? 4 - ??? 5 - ??? 6 - GND
From testing with a bench power supply, I'm able to power a unit with 7.2V applied to Vin and ground connected to GND. The unit would act as if it was low battery from 6V to 7V, with no LED blinking at 5V. I don't know much about the charging circuit; there's an adapter input on the side of the Foleo which provides 12V 1.5A with a center-positive barrel jack. With no battery installed, this power circuit is sufficient to bring up a Palm logo on the screen, but some early system check fails and the device resets.