So what’s the deal with Zipit Z2 bootloaders? Well, there are two of them 🙂 From factory the Z2 comes with bootloader called “blob”. It is simple bootloader with source and modifcations published at linux.zipitwireless.com site but there are few issues with it:
- it supports only serial console (no keyboard or lcd) so when you flash wrong kernel you need to do serial mod to recover
- it boots only kernel from internal flash (no sd card)
- it gets the Z2 machine id wrong (it reuses one allocated for Mainstone board) so it does not boot recent kernels built with correct machine id allocated for Z2
- there is a rumour that the actual binary flashed in Z2 is built from slightly different source and previous attempts to build blob binary from published sources resulted in bricked zipit
The solution to all this is called u-boot. Sources for Z2 version is currently published in marex‘s devel branch of u-boot-pxa tree and there are also some out of tree patches. One mentioned here is for implementing poweroff/deep sleep on shutdown or reset like blob does, and the other two are currently mine. The first one fixes flaky pxa27x-mkp keyboard driver and the second one implements proper lcd console rotation because the native Z2 LCD panel orientation is 90 degrees rotated. The difference can be seen here:
This shows chain-loading my u-boot version from original u-boot flashed in the device.