Friday, January 30, 2009

Zipit2 linux 2.6.29-rc3 support

Here is a package to support the 2.6.29rc3 kernel.
This package needs to be extracted into your openembedded/packages/linux folder.

The package contains patches for sound, keyboard, backlights (both of them!) and pretty much everything to date. Obviously this is highly experimental, but give it a go if you are feeling adventurous! :)

Getting there!
-(e)

Thursday, January 29, 2009

Zipit2 Keyboard Backlight!

Last night I managed to patch the pwm_bl driver to actually support multiple backlights and now we have keyboard PWM backlight support in! w00000t!

I will put up a patch later :)

Please see the updates I have made to my post about supporting the original kernel if you are going to use it, some important stuff was missing (my bad).

-(e)

Wednesday, January 28, 2009

Original Z2 kernel support in OpenEmbedded

In my last post I provided a setup system for Zipit2 OpenEmbedded development.
As I mentioned in that post, only my test kernel 2.6.27.10 was supported. I realised that until full kernel support is available, people would probably like to build the old kernel to play with.

So here is a package that will provide 2.6.21.1 kernel support.
The setup package creates a configuration that will leverage OE's package version support to build the latest kernel, so in order to use this kernel you will need to navigate to your packages/linux folder and rename the linux-zipit2-2.6.27.10.bb file to something else e.g. linux-zipit2-2.6.27.10.bb_.

Once you have done that, extract the contents of the archive to the packages/linux folder and:
bitbake linux-zipit2

It is possible to specify a prefered kernel version in your local.conf file to override this behaviour but I do not have the exact syntax available. If anyone would like to comment and leave instructions on how to achieve this override, that would be great.

Have fun! Shortly I will be adding a package for cutting edge 2.6.29 support in the quest to achieve mainline acceptance.

edit:

Like a total fool I forgot to mention that you will need to add the checksums for the kernel into checksums.ini in your openembedded/conf/checksums.ini file, here is the text you need to add:

[http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.1.tar.bz2]
md5=a28b78793cd368592f7873bf36cb38b0
sha256=2e92625e887bff35522eed3eecc2b80eb9a588d3c0eac64f35b4d29a557bac15
edit2:

Another missing component. Sigh. In an effort to cleanup the original SVN files I nuked the packages/sysvinit/sysvinit/zipit2/rcS file. Unfortunately this is where the old (crappy) keyboard drivers are loaded. To sort this out you need to patch this file, look for:

#
# For compatibility, run the files in /etc/rc.boot too.
#
[ -d /etc/rc.boot ] && run-parts /etc/rc.boot

and add this text after it:

# for now, the module loader is not working.
/sbin/modprobe pxa27x_keyboard
/sbin/modprobe zipit2_kbd_helper
Which should sort it all out.

-(e)

Monday, January 26, 2009

Openembedded and the Z2

So after a long delay I finally have something concrete to add to the blog.

If you want to get started with the Zipit2 you'll probably have stumbled across the linux.zipitwireless.com site. Here there are links to all sorts of bits, one of which is an OpenEmbedded 'starter kit'. The problem is: the code you pull out of SVN to get started is very old and still relies on the monotone OpenEmbedded repository, which does not exist any more.

OpenEmbedded is complicated enough that broken setup scripts do not help in any way. So I have put together this package which should get you from zero to base-image in a fairly painless manner.

Currently the package will:
  1. Install a local copy of BitBake
  2. Pull the latest GIT repository of OpenEmbedded
  3. Patch the repo for Z2 support
  4. Build up a profile.sh script for you to run when you want a sane dev environment
  5. Build up a local.conf file for the bitbake system and the Z2 machine
  6. Add the linux-2.6.27.10 kernel build and all associated scripts
This is still very much a work in progress, and while I have tested the build (it works and generates a valid kernel and userland) many changes are going to be made in the near future.

Exciting stuff coming is a port to as new a kernel as possible, with the intent to get kernel patches pushed upstream and the Z2 integrated as proper machine. All of this thanks to the tireless persistence of GPSFan and some grunt work by me :)

Until the next update...
-(e)

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