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 ] ( 153 views ) | permalink | ( 3 / 1696 )
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 / 1544 )
just read that our prince of Orange, WimLex, has bought himself an iPhone in november 2007 already in an Apple store somewhere in New York.
I just tried to call him to ask him why he didn't told me anything about how to downgrade, jailbreak and activate the phone here in the Netherlands, but he doesn't seem to know how to get his voice mail up and running, because I'm unable to leave any messages. Could this be due to a memory overflow?!
[ add comment ] ( 2 views ) | permalink | ( 3 / 1530 )
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 / 1521 )
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 ] ( 51 views ) | permalink | ( 3 / 1466 )
So, to make a long story even longer, I decided later that week that I wanted an iPhone, so I went over to the Apple store again and bought myself one. Since I knew that the phone would be usable only with a two-year (US) contract with AT&T I did some investigation first just to make sure it would be possible to use it here in the Netherlands using my current carrier provider contract.
Browsing the Net I entered the great new world of OOB's (Out Of the Box), Jailbraking, Firmware downgrading, activation, unlocking and the likes. Impressive, I didn't had the time to read all the details at that time, but I knew enough, namely that it would be possible with some effort.
After buying and unpacking the device a few things were striking. Apple really knows how to create beautiful looking devices, but I've NEVER seen any device with so little instructions. Just a small paper saying you have to browse to a website for full instructions. After charging, the device just says "Connect to iTunes to activate". That's all, no further functioning whatsoever. This is weird!
Well, back in Holland I started to read all about unlocking the device. I was glad I did that first, because otherwise I would probably already upgraded the device to the last firmware, which would have made unlocking a real drag. Anyway, after following the excellent step by step guide from the hackint0sh guys the iPhone was usable as a luxurious iTouch after some time. No phone function, that was still a no-go area, since this hasn't been hacked by means of software until now as far as I know.
So I searched for hardware solutions, found a seller on eBay selling some Chinese SIM manipulation card, and took the risk of buying one. Two days later the SIM arrived, and following a simple online guide here my iPhone displays Vodafone as a provider now, and I'm the happy owner of a fully working iPhone. Not bad at all, and that within just a week time!
[ 3 comments ] ( 52 views ) | permalink | ( 3 / 1363 )
Redmond for a complete brainwash. All existing and new technology will be shown there, so we know how to create enterprise solutions the M$ way.
Worst case scenario, I won't be able to speak the word "Linux" out loud, and I dump my Zaurus for a PocketPc. That's something to look forward to ;-)
So expect no updates nor mail reading for the oncoming week. I hope I'll be able to read a book, so next week there will be a different "Cover to cover" finally.
[ 5 comments ] ( 78 views ) | permalink | ( 3 / 1372 )
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 ] ( 15 views ) | permalink | ( 3 / 1659 )
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 ] ( 779 views ) | permalink | ( 3 / 1641 )
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 ] ( 356 views ) | permalink | ( 3 / 887 )