Recently, I’ve been getting interested in getting Squeak running on smaller pieces of hardware, such as cellphones or PDAs. Last week I received my FIC Neo1973 open-source GSM cellphone, which runs a system based on OpenEmbedded called OpenMoko.
I’ve managed to get the system compiled and running both in emulation and on the phone itself, and I’ve added support for building Squeak VM 3.9-8 to the base OpenEmbedded packages. It took a little while, but I’ve managed to get past the cross-compilation (libtool) and plugin-loading (-rdynamic) hurdles, and I’m pleased to report that everything is working well. Squeak images old (2.8) and new (3.9-final) run fine.
Here’s a (blurry) picture of the latest Squeak VM, version 3.9, running a tiny, stripped 2.8 image on the handset itself: Squeak on the Neo1973.
The next steps will be to use OSProcess and Flow to access the various bits of hardware jammed into the Neo (GSM modem, GPS, Bluetooth, touchscreen, audio, battery, auxiliary buttons, headset connection/mute-button events, etc), and to use something like Faure (screenshots) to construct a stylus- or finger-driven UI.
The Neo hardware is amazing – the display is VGA resolution at a crisp 285dpi, only slightly lower than a low-end laser printer, which opens up a lot of options for UI design – and the kernel programmers have done a great job of the kernel/userland interfaces.
Update: I’ve added an issue to OpenEmbedded’s bug tracker, to see if they would like to fold my build scripts into the main trunk. You can follow the discussion here: http://bugs.openembedded.org/show_bug.cgi?id=3013
Here’s a link to the squeak-x bitbake scripts, for those who would like to try it out in the meantime.