After hours of spitting through traces trying to resolve all errors and searching for differences between the emulator and the Zaurus my conclusion was that the main difference was the way the framebuffer was used. Android uses a panning mechanism (page flipping) for screen updates, and this is currently unsupported in the default pxa2xx framebuffer code of the linux 2.6.23 kernel.
So I tried to add panning support to the framebuffer code, and with success! It needs some debugging though, because there are still some minor problems with the screen updates, but hey, the saga continues, Android on the Zaurus still seems to be a perfect match!
A few quick shots taken with my camera:
Android booting The Android desktop The great map program (Still don't know how it located me) The web browser
[ 6 comments ] ( 152 views ) | permalink | ( 3 / 1458 )
So I fiddled a bit with the Android emulator tonight. I thought it might be interesting to see what the differences are between running Android on the emulator and on the Zaurus.
I modified ramdisk.img a bit, so Android doesn't starts up automatically in the emulator and I've also added strace to the image, which can be found in the root(/) directory. The emulator can be started using the modified image by running:
emulator -debug-kernel -console -ramdisk cortez.img
Now the emulator boots up and ends with a prompt. At that point, start Android by running:
# strace -ff -F -tt -s 200 -o /data/log-zygote.txt /system/bin/app_process -Xzygote /system/bin --zygote &
# strace -ff -F -tt -s 200 -o /data/log-runtime.txt /system/bin/runtime &
This creates lots of log files, which now can be compared to the Zaurus log files. My logs can be found here
[ add comment ] ( 3 views ) | permalink | ( 3 / 1277 )
Yesterday I took some time to set up all the tools needed to see whether or not the latest emulator image could be ported to the Zaurus easily.
First I investigated the emulator a bit using the adb-debugger. An important change can be seen when running mount
rootfs / rootfs rw 0 0
/dev/pts /dev/pts devpts rw 0 0
/proc /proc proc rw 0 0
/sys /sys sysfs rw 0 0
/tmp /tmp tmpfs rw 0 0
/dev/block/mtdblock0 /system yaffs2 rw,nodev,noatime,nodiratime 0 0
/dev/block/mtdblock1 /data yaffs2 rw,nodev,noatime,nodiratime 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nodev,noatime,nodiratime 0 0
/tmp and /cache are added since the previous version, so we have to add them to the Zaurus image as well.
Next thing I did was to rip the emulator file system. This can be done easily by pushing the binutils package to the emulator and archiving the /system, /data and /cache directories using the adb shell command.
Having that, I downloaded the Linux 2.6.23 Android M5-RC14 kernel and created a diff file against a vanilla 2.6.23 kernel to see the specific Android changes.
Since kernel debugging isn't exactly one of my favorite hobbies, I then created a complete Zaurus (Spitz) image with the kernel used in the previous Android release, just to see what it did. Well, this ends up with a black screen, no bouncing red ball, nothing.
Setting the logging level to 7 or 8 shows lots and lots of errors, mostly related to the binder block device. I guess that's were most changes took place.
I am now in the process of applying the kernel changes. This is rather time consuming, so this could take a while longer. Unfortunately I don't have that much spare time currently. I know AndroidZaurus is also working on this, so maybe we could make this a joined effort .
[ add comment ] ( 3 views ) | permalink | ( 3 / 1248 )
new Android SDK recently... sigh, so much to do and so little time. I'll try to get this ported onto my Zaurus shortly, because it's so damn cool. We'll manage I'm sure, just wait and see.
Has someone ripped the file system already, or even better, managed to get the kernel patched successfully?
Anyway, dust off the dev-tools, get the party hats and let's get it on!
[ 1 comment ] ( 50 views ) | permalink | ( 3 / 1237 )
Included in this image are following additional packages on default:
update-modules apt ipkg midnight commander strace altboot (I kind of like it) wireless-tools wpa-supplicant pcmciautils
Apart from that, you'll find the key settings are applied as described by Android Zaurus. Last but not least I've added his Rotation applet. Great little utility!
The installation instructions are still the same, so I just updated the download links, which can be found in the menu item on the left.
Once again, have fun!
IMPORTANT UPDATE: It seems that there was an error in the gnu-tar version. Please re-download if you had problems
[ add comment ] ( 14 views ) | permalink | ( 3 / 1431 )
The same installation procedure applies for the SL-C1000, SL-C7x0 and SL-C860 devices. Instructions and can be found in the previous post or from the menu on the left.
The specific SL-C7x0 and SL-C860 downloads are initrd.bin, zImage.bin and updater.sh.
Please give it a try and give me feedback on your results.
[ 12 comments ] ( 770 views ) | permalink | ( 3 / 1412 )
The SL-C1000 installer works slightly differently from the SL-C3x00 version. It uses Altboot to boot from a ext3 partitioned SD card. I tried using a the normal procedure where the root filesystem boots from internal flash, but this resulted in socket errors (Connection refused) on startup of Android, as described here. I simply don't know enough about the internal workings of Android as to understand why this is, so I searched for a workaround. Using Altboot is the workaround I came up with. Since Altboot makes it possible to boot from SD or CF apart from the usual internal flash memory, I partitioned and formatted a 1Gb SD card with a ext3 partition. Then I Flashed a slightly customized Poky kernel with Altboot included. The Android root filesystem is extracted to SD and the Zaurus boots from SD. From there it's a simple
/startto start Android. That sounds too simple? Let's do a step by step then
Partition and format your SD card with an ext3 partition. The ext partition is important, if you want this to work. Don't use fat or fat32, use ext3, otherwise you'll regret it. I used
sudo gpartedon my Ubuntu desktop to make the partitioning and formatting easier. I also added a swap partition for some future Debian experiments, but this isn't necessary. For now you can safely skip the swap-partition step, just make sure you have a ext3 partition formatted (is the importance of the ext3 bit clear enough you think?).
Download gnu-tar, initrd.bin, zImage.bin, updater.sh and android-root.tar.gz and copy the files to the freshly formatted (ext3) SD memory card.
The flashing is done in the usual way.
1. Remove battery and power adapter cable
2. Wait for 5 seconds
3. Replace battery, close and lock battery cover
4. Attach power adapter cable
5. Keep OK button pressed while pressing on/off switch
6. From the Japanese menu, choose option 4 (Update), then 2 (SD) and finally Y
You're asked if you want to flash the kernel, erase the flash, flash the root filesystem and finally the Android root filesystem. You can except all questions with the defaults (all yes). Only the last bit, the extraction of the Android root filesystem, doesn't work (yet). It doesn't seem to be possible to extract a tar archive to an ext3 formatted SD from the flashing environment (Permission denied). We need to do an extra step because of that unfortunately.
After flashing the Zaurus is rebooted automatically and Altboot is started. Choose option 1 so the Zaurus boots from internal flash memory. Login with root and extract the android root filesystem manually.
cd /media/cardDepending on the speed of your SD card this can take a while.
tar -xzpf android-root.tar.gz
Now, I found out the best way to handle now is doing a full reset (power off, battery remove, 5sec wait, replace battery and power on). The Zaurus boots, and when Altboot starts choose option 3, boot from SD. The first time you do this you'll be asked for some input. One is the administrator password for Altboot and the other is a question if you want to copy the home directory. Answer yes to this question!
The machine now boots from SD and you can login as usual with root.
To start Android, simply run
And now, let the party begin!
[ 5 comments ] ( 355 views ) | permalink | ( 3.1 / 660 )
Hopefully I will be able to test the SL-C1000 version tonight. More on this later.
[ 3 comments ] ( 105 views ) | permalink | ( 2.9 / 1367 )
See the articles in techworld and pcadvisor
[ add comment ] ( 1 view ) | permalink | ( 2.9 / 1334 )
The word that we as proud owners of a Zaurus are part of the happy few Android users is traveling fast. Thanks for mentioning my efforts guys, but most credits go to others, I just followed their instructions and created a hassle-free installation so others can give it a try as well.
I've added the installation instructions from my earlier post in the menu on the left. Installation won't get easier than this I think, and believe me, it's really worth giving it a try. So install it while it's still fresh
[ add comment ] ( 3 views ) | permalink | ( 3.1 / 1514 )