Tuesday, January 13, 2009

Zipit Z2

Recently I acquired a Zipit Z2 when my sister-in-law brought one over for me from the States (thanks Ange! :)).

The Z2 is marketed as a portable IM client for kids. It's an Intel PXA based device with a wireless chip running a Linux kernel. On top of this is some front end software that is used to handle various IM accounts (MSN, Yahoo, AIM). As a usage example: my niece IM's her friends on the way to school, picking up various AP's along the way.

Thanks to a useful site I was able to connect up a serial terminal to the Z2 and begin exploring it (see notes: 1). The Z2 is an interesting little machine, the more so in that Zipit has made available their kernel patches and actually encourage community involvement, something I find rather refreshing.

After building the stock OE kernel, I became rather obsessed with trying to get the latest (as of writing) 2.6.27.10 kernel running on it. I built a kernel and forward applied some of the original patches. This got me to a basic running kernel, but one that would not boot to MMC (my plan was to have userland on MMC). At this point I got rather stuck and so headed off to #zipit on freenode for some advice.

Fortunately for me, I met up with a brilliant kernel dev by the name of GPSFan who took a look at my patches and .config, and helped me get it to a stage where MMC booting was possible. At this point LCD and keyboard were not functioning, but it seems I had managed to generate a level of interest. In a short while, GPSFan managed to get the framebuffer (see notes: 2, 3) going. Further experimentation on my part revealed that the stock kernel keyboard driver was functioning to a certain extent, but that key mapping was incorrect. Once again GPSFan managed to get the keyboard working!

We are now at the point where we have a functioning machine but without wifi access. GPSFan is looking into it and hopefully, thanks to the recent advancement of the Libertas SPI driver and his efforts, we will have wifi access shortly. This will open up many possibilities!

I intend to provide patches for OE and various other bits of info on this site as development proceeds.
Link
Notes:
  1. The serial port on the Z2 is at TTL levels, this means you will need a level converter in order to connect it to your PC's serial port. I have sucessfully used a Samsung E810 serial cable to achieve this. Info on this cable can be found at this site. Look at this site for the soldering positions on the Z2 board. The serial port is mapped to ttyS2, at 115200 8N1, no flow control.
  2. The framebuffer handling includes a PWM backlight exposed through sysfs. If you mount sysfs (mount -t sysfs sysfs /sys) you can echo values to the backlight to set it: e.g. "echo 512 > /sys/class/backlight/pwm-backlight/brightness" which is pretty damn cool.
  3. The framebuffer, if used as a console, will initially be incorrectly oriented. To correct this you can either: "echo 3 > /sys/class/graphics/fbcon/rotate" after mounting sys or, use "fbcon=rotate:3" as a kernel parameter. My current kernel parameters are: root=/dev/mmcblk0p1 rootdelay=2 console=ttyS2,115200 fbcon=rotate:3