A trouble to write a comment?

I noticed that a lot of accesses to the page for submitting comments. And me myself have difficulties to write comments back.

I guess the hosting site, seesaa.net, has some troubles for now. Even I was annoied a dead link of my own post a few days ago.

Please be patiant for now. It will be fixed at sometime later. If you have something to bark at me, send me an email to androidzaurus@yahoo.co.jp.

posted by 安藤恐竜 at 22:08 | Comment(0) | TrackBack(0) | 日記

More Android Applets

I introduced ComicViewer of Adamrocker a while ago. Since then he has updated the applet a couple of times and now the latest is ComicViewer3. This is the direct link of his zipped applet just in case if you have a bit of trouble to spot it.

Now the aspect ratio of images is more appropriate, so that no need to say pan. Memory leak issues are fixed and still it works comfortablly fast.

Shortcut keys are unified in both modes. Pressing [P] or [N] displays a previous or next image. Cursor keys work as what you expect for. And if your Android system is based on cortez or mine, the volume switch - up/down switch on the side of Zaurus - works same as paging.

ComicViewerV3.png      ComicViewerV3-1.png      ComicViewerV3-2.png

In OESF Forums, there is a post introducing an applet called Molib. When I tried it on my Android Zaurus, I was amazed by not only a beautiful Paris satellite map but also the French fonts. It is a fine example of how Android is i18ned.
Molib-1.png      Molib.png

Another applet comes out from a Japanese company called EAST Co. Ltd. The applet is Hotpepper, which is mash up of Google Map and a popular restaurant guide called Hotpepper.

The applet searches restaurants near the location on the map and shows restaurant information. It will be very useful if GPS is equipped. Sadly my Android Zaurus can not handle touchscreen correctly yet, I'm stucked at Shinjuku where the applet shows as default.

Hotpepper-1.png      Hotpepper.png

Have fun.
posted by 安藤恐竜 at 19:17 | Comment(0) | TrackBack(0) | 日記

Deadline extended! - Android Developer Challenge

Good news for applet developers.

Android Developers Blog: Deadline Extension for the Android Developer Challenge

14 April 2008 is the new deadline. We get a month longer.

And another news mentioned in this announce. Google will release new version of SDK in a few weeks. Looking forward to seeing how it will work on Zaurus.

posted by 安藤恐竜 at 08:50 | Comment(0) | TrackBack(0) | 日記


Self compiling - ncftp

I tried today to build ncftp on Angstrom Zaurus, so called self-compiling. I've already cross-built it with Code Sourcery's toolchain. This is another experiment to see how Angstrom toolchain works.

Following packages are required to build ncftp.
# ipkg update
# ipkg install task-sdk-bare
# ipkg install gcc
# ipkg install gcc-symlinks
# ipkg install binutils-dev
# ipkg install make
Let's see how Zaurus compiles ncftp by itself.
# wget ftp://ftp.ncftp.com/ncftp/ncftp-3.2.1-src.tar.bz2
# tar jxvf ncftp-3.2.1-src.tar.bz2
# cd ncftp-3.2.1/

# time ./configure
real 2m 51.54s
user 1m 51.79s
sys 0m 56.83s

# time make
ERROR: busybox ar [-o] ....
It seems archiver's version difference. I found ar in my Zaurus is just a symbolic link to busybox, so I changed it to Angstrom toolchain.
# ls -l /usr/bin/ar
ar -> busybox

# cd /usr/bin
# rm ar
# ln -s arm-angstrom-gnueabi-ar ar
Try again.
# make clean
# time make
make[1]: strip: Command not found
It was not exactly an error but it's easy to fix.
# cd /usr/bin
# rm ar
# ln -s arm-angstrom-gnueabi-strip strip
Last try.
# make clean
# time make
real 9m 1.36s
user 8m 18.01s
sys 0m 38.55s
With my cross compile environment on my Ubuntu PC, same thing could be done way faster.
$ time ./configure --host=arm-none-linux-gnueabi --prefix=/opt/arm-cc
real 0m24.485s
user 0m7.580s
sys 0m3.092s

$ patch -p0 < ncftp-3.2.1-arm-linux.patch

$ time make
real 0m33.728s
user 0m22.741s
sys 0m2.908s
But. Question is how easily we can make a patch. If there's already some patches available, cross compiling is good and fast. If not, self compiling environment would be a nice backup.
posted by 安藤恐竜 at 17:48 | Comment(0) | TrackBack(0) | 日記

Maintenance Kernel and re-partitioning

Well, I decided to re-partition the HDD in my Zaurus. I don't need vfat patition anymore, neither Qt environment.

But backup is backup. Following is only a memo for myself. Please do not try on your Zaurus if you are not sure what's going on.
$ ssh root@zaurus
# cd /media/hdd
# tar zcvf hdd3.dict1.tar.gz dict1
# mv hdd3.dict1.tar.gz /media/card
# rm -rf dict1
# tar zcvf hdd3.dict2.tar.gz dict
# mv hdd3.dict2.tar.gz /media/card
# rm -rf dict2
# tar zcvf hdd3.Documents.tar.gz Documents
# mv hdd3.Documents.tar.gz /media/card
# rm -rf Documents
# cd /
# tar zcvf /media/hdd/hdd2.home.tar.gz home
# mv /media/hdd/hdd2.home.tar.gz /media/card
# poweroff
I saved these tar files in my PC and delete them from SD.

Now the maintenance kernel. While pressing [D] and [B] at the same time, unlock the battery cover, push reset switch, lock the battery cover back then power on.

The maintenance kernel is yet another version of Zaurus ROM. I played with it for a while.
# dmesg | more
# fdisk -l /dev/hda
# mount -woremount /
# mount -t jffs2 /dev/mtdblock2 /hdd1
# mount -t jffs2 /dev/mtdblock3 /hdd2
OK. I go a step further.

fdisk /dev/hda and delete all the partitions. Create a new partition from cylinder 1 to 7872 and let left space be another one then set type as 82 (Linux Swap). Then mkfs.ext2 /dev/hda1 and mkswap -v1 /dev/hda2. Now most of 4GB HDD becomes root and around 32MB swap.

I have downloaded the stable Angstrom console image to my SD card. Just flash it as usual. Last command for my new Angstrom envrionment is swapon /dev/hda2 so that a new 32M swap joins in.

My purpose for a big / is install self compiling envrionment. After ipkg update, I did some ipkg install like gcc, gcc-symlinks, task-sdk-bare.

I'll see what I can do on this new environment.
posted by 安藤恐竜 at 00:06 | Comment(0) | TrackBack(0) | 日記


How to create android.img

Following explains how the android.img was created.

First of all, I read an article by a Japanese blogger, Weboo, who successfully Android up on C-860. I appreciate Weboo for sharing his idea.
o Android run on Zaurus | Weboo! Returns. - All written in Japanese

What he has done is make a Android rootfs as a file on SD card and loopback mounted it, then chroot there. He clevery gets workaround mmap issue of jffs2.

After I posted Android Zaurus without chroot, I find tmpfs is very suitable. So, I gathered everything together and packaged it.

My Zaurus's /home directory is almost full, so I used /media/hdd, which is vfat and original Qtopia application data sits on.
$ ssh root@zaurus
# dd if=/dev/zero of=/media/hdd/android.img bs=512 count=131072
# mkfs.ext2 /media/hdd/android.img
# mkdir android-sd
# sudo mount -o loop /media/hdd/android.img android-sd/
# cd android-sd/
# ls
Looking good. Then, I went back to my PC and copied Android files.
$ scp /tmp/system.tar root@zaurus:/media/hdd
$ scp /tmp/data.tar root@zaurus:/media/hdd
$ scp /tmp/ramdisk.img root@zaurus:/media/hdd
Now unpack them into the loopback mounted image file.
$ ssh root@zaurus
# cd android-sd/
# tar xvf /media/hdd/sytem.tar
# tar xvf /media/hdd/data.tar
# cpio -iv < /media/hdd/ramdisk.img
Also, I copied binderdev.ko, start-up script and some useful files saved in my work directory.
# cp ~/work/a.sh a.sh
# cp ~/work/qwerty.kl system/usr/keylayout
# mkdir -p lib/modules/2.6.23/kernel/drivers/binder
# cp ~/work/binderdev.ko lib/modules/2.6.23/kernel/drivers/binder
# cp ~/work/RotateView.apk data/app
# vi etc/default.prop
# cat etc/default.prop | grep net.eth0.dns1
net.eth0.dns1 =
This DNS points to OpenDNS.

One very important thing. I modified a.sh to mount tmpfs to /tmp. Add a line to a.sh
mount -t tmpfs tmpfs /tmp
Now /tmp goes out to RAM. This is the reason why tmpfs required to boot this image up.

Once the image file has everything in it, copy it to SD card.
# umount android-sd
# cp /media/hdd/android.img /media/card
OK. A new start-android.sh will be android-sd.sh
# cat -android-sd.sh
mount -o loop android.img rfs

if [ ! -e /dev/binder ]; then
echo "No /dev/binder. Try to insmod it."
insmod rfs/lib/modules/2.6.23/kernel/drivers/binder/binderdev.ko
if [ ! -e /dev/binder ]; then
echo "failed."
exit 0

if [ ! -e rfs/dev/binder ]; then
cp -a /dev rfs
chmod 666 rfs/dev/binder

umask 000
chroot ./rfs /a.sh
# ./android-sd.sh
As seen, the script insmod binderdev.ko if /dev/binder is not found. Then copy /dev files to Android's rootfs and change permission of binder device file.

Have fun.
posted by 安藤恐竜 at 16:33 | Comment(1) | TrackBack(0) | 日記


Angstromで動くAndroidのインストールイメージ - 人柱募集中

Note for English readers:This is an exact translation of Android Zaurus: An install image of Android for Angstrom - Testers Wanted!.

追記 12/20/2008
なんか注目集めちゃってるようなので補足。このAndroidは最初のSDK、m3版で、現在のOpen Source版1.0や実機第1号T-Mobile G1とは、別物とお考えいただきたく。見た目も違うし、アプリケーションの互換性もありません。APIとかガンガン変ってる時期なので。C3x000なら、Cortezさんのところに0.9版のイメージがありますです。




tar zxvf android-sdboot-image.tar.gz で展開。ちょっと時間がかかる。
Androidをブートするには /media/sdcard/android-sd.sh
  1. Kernel 2.6.23
  2. 20MB以上のtmpfs

  1. android.imgはext2フォーマットされたloopbackファイルで、Androidのシステムがごっそり入ってます。.
  2. androd-sd.shでこれをループバックマウントします。
  3. そこにchrootしてから、tmpfsを/tmpとしてマウント。
Kernel 2.6.23な理由はbinderdev.koが2.6.23用だから。tmpfsは/tmpに使ってるから。他のごにょごにょは全部迂回してます。なので、機種ディストロを問わず動くのではなかろうかと。


posted by 安藤恐竜 at 20:47 | Comment(18) | TrackBack(1) | 日記

An install image of Android for Angstrom - Testers Wanted!

I build an install image of Android for Angstrom Zaurus.

I test it only on my C3000, and I'm hoping here that it will work any other Zaurus as long as running on Angstrom and some other 2.6.23 based distributions.

Installation is simple.
Install any Angstrom image from angstromdistributions.org. My recommendation is console-image because it is simple.
Download android-sdboot-image.tar.gz. MD5 is b26d596c06eca39128c7ba09bc31e6ce.
Copy it to your SD card, which must have more than 100MB available.
Log in to Angstrom Zaurus
Unzip it by tar zxvf android-sdboot-image.tar.gz. It will take a while.
To boot Android, run the script /media/sdcard/android-sd.sh
I tested it with Angstrom but it might run on other distributions like Poky as long as it meets following conditions;
  1. Kernel 2.6.23
  2. 20MB or more tmpfs

Let me explain in short how it works.
  1. android.img is an ext2 formated loopback file contains Android system.
  2. In the androd-sd.sh script, the image is mounted as loopback file system.
  3. After chroot to it, tmpfs is mounted as /tmp.
Kernel 2.6.23 is required because binderdev.ko is built for it. tmpfs is required because it is mounted as /tmp. By doing this, this install image takes workarounds on any known issues. It is the reason why I expect Android could be booted up on any distribution, any Zaurus.

I preconfigured DNS address pointing to OpenDNS. My RotateView.apk in it. Some might find usueful in /usr/bin/busybox which I built a while ago. The best thing is, it would not taint anything in host Angstrom system, because Android sits in SD card. If anything goes wrong, just delte them.

Have fun.

Feedbacks and contributions are very welcome.
posted by 安藤恐竜 at 20:30 | Comment(28) | TrackBack(0) | 日記


Android Developer Challengeの応募方法

Note for English readers: This post explains how to join Android Developer Challenge in Japanse. By the way, have you submitted some applets to Android Developer Challenge? I have submitted RotateView in the course of writing this article. Mine does not have slightest chance to win the contest, but why not? Nobody knows what kind of applets will win, even Google itself would not know yet. The contest ends in early March. We still have enough time to try. Good luck!

Android Developer Challenge。もう応募しました?私はしましたよ。RotateView.apkをwwwまぁ、この記事書くために不法投棄してきたんですけどねwww



次に、説明の文章を書きます。たぶん、英語の方がいいでしょう。ちょっとアレだなぁ、という人はGoogle Translateに翻訳してもらいましょう。読めねーよwwwなんて文句があるならTranslateチームに言ってね(はぁ〜と)ということで。


RotateView, screen rotation.
Want a screen to select the button.
RotateView Once the configuration is also valid.

One out of four selections. And click.
Note: This description is automatically translated using
Google Translate. An original description is written in
Japanese, which follows English description. Thank you for
the excellent service of Goodle Translation .

RotateView, screen rotation.
One out of four selections. And click.
RotateView Once the configuration is also valid.

Thank you very much for your attention.

Android Zaurus

Original description in Japanese follows here with a few details.


さて、Android Developer ChallengeにあるSubmitをクリックします。

すると、3つの選択肢があります。順に、個人用、チーム用、企業用です。個人を前提に進めます。チームの場合は、チームメンバーを追加するため、記入欄がちょろっと増えてますが、基本は同じ。Individual Submission Formをクリックします。

  1. フルネーム
  2. メールアドレス
  3. 住所1
  4. 住所2
  5. 郵便番号
  6. 電話番号
  7. 誕生日
  8. アプリケーションの名前
  9. SDKのバージョン
  10. ドキュメント
  11. APKファイル
  12. 新規投稿か再投稿かの選択肢


さて、最後のI agree to the Terms and Conditions.(条件に同意する)にチェックマークを入れたらSubmitボタンを押します。


posted by 安藤恐竜 at 17:27 | Comment(0) | TrackBack(0) | 日記



Note for English readers: This article is only a Japanese translation of Android on Zaurus SL-C1000 installation instructions in Cortez's Omegamoon. Please not to waste your time with re-translation. You'd better go visit Omegamoon.
CortezさんのOmegamoonにザウルス SL-C1000で動くAndroidのインストール手順があります。C-1000って何?うまいの喰えるの?と思ってたので、面倒だしスルーしてたんですけど、ごめんなさい。C-3200とともに現行モデルなんですね。知りませんでした。本当にごめんなさい。



ザウルス SL-C1000で動くAndroidのインストール手順




SDカードをext3でパーティションを切ってフォーマットする。これが動くようにしたいのなら、extパーティションが重要。パーティション切りとフォーマットを簡単にやるために、僕はUbuntuデスクトップPCのsudo gpartedを使った。ついでに将来Debianで何かの実験をするために、swapパーティションも追加した。今のところ、swapパーティションの手順は省いてもいいけど、ext3でフォーマットされたパーティションを作ることだけは忘れずに。(ext3の重要性はまぁ分かるよね?)

訳注1) ext3のパーティションサイズについてコメントがありませんが、Androidのrootfsは50MBほど、Pokyも数十MBありますので、最低でも128MB一枚まるごとext3しちゃうのがいいかと思われます。128MBなら使わなくなったのがそこらへんに2〜3枚転がってますよね?

訳注2) ext3が重要というのは、Androidがrootfsでmmap書き込みできないと起動しないためです。NANDザウルスはワークにできるのがjffs2で、jffs2は技術的にmmap書き対応できないため、Android起動でchrootしたときにコケます。Androidがrootfsでmmapしたがるのには理由があって、動的なシステム設定をUnix Domain Socketのproperty_serviceを使って、/init起動時に作成しようとするためです。system_profileでググってみてください。

  1. gnu-tar
  2. initrd.bin
  3. zImage.bin
  4. updater.sh
  5. android-root.tar.gz

  1. バッテリーと電源アダプタケーブルを外す
  2. 5秒待つ
  3. バッテリーを戻し、カバーを閉めたらロック
  4. 電源アダプタケーブルをさす
  5. [OK]キーを押しながら、電源On/Offボタンを押す
  6. メニューから4. アップデート、次に2. SDを選択、最後にはい

Login: root
# cd /media/card
# tar -xzpf adnroid-root.tar.gz



Androidを起動するには、単純に /start を実行する。

ところで。C-750, C-860もCortezさんのところにありますが、C三桁のAltbootにバグがあるらしく、正しく起動しないようです。人柱希望者はAndroid on SL-C7x0 and SL-C860 (testers needed) にあるファイルをSDに入れて、フラッシュ。

posted by 安藤恐竜 at 14:51 | Comment(12) | TrackBack(1) | 日記


ComicViewer - Android Applet

The author of Androitter - a twitter applet for Android - introduced a new applet.

This time, a ComicViewer. He puts Screen Cast on his blog, so that you can see how it works by just clicking the play button in the Flash on his page.

Update on Jan 19: Adamrocker updated his applet. He has fixed some memory leaks. So I revised links to his page. If you have installed ComicViewer v2 to your Android Zaurus, download his package and re-install, please.

The instruction how to try on your Android Zaurus will be;
o Download the zipped project file and unpack it.
o Copy comic_viewer2/bin/comic_viewer2.apk to android-root/data/app in your Android Zaurus.
o Pack your favorite JPEG or PNG image files in a zip file. Then copy it to your SD card.
o Set SD card to your Zaurus.
o Boot Android up.
o Go Application Folder and click [ComicViewer v2]
o Find /sdcard and press [Enter] key.
o Find your zipped image file.

Once you find the zip file, press [OK]. The image files in your zip will be displayed. You can browse trhough by pressing left and right cursor.
ComicViewer1.png    ComicViewer2.png

Then press [OK]. Now you are in View mode. [L] or [R] on the keyboard shifts the image left or right. [Up] and [Down] cursor key give you scroll. [Menu] has [Zoom In], [Zoom Out] and [Pan]. [Pan] is usefull because some image might be displayed in wrong aspect ratio.
ComicViewer3.png    ComicViewer4.png    ComicViewer5.png

Works in the landscape view as the same.
ComicViewer6.PNG    ComicViewer7.PNG

If aspect ratio is messed up, say [Pan].
ComicViewer8.PNG    ComicView10.png
This applet is a fun thing to see. It runs very light. You will be amazed how it works. It's way faster than the dogs in API Demo. But....


This applet is under development and you may come across some issues. Please do not get mad if anything unexpected happens. Keep it in your mind we are a test bed. Whatever happens it is caused by what we have done.

I would recommend to try this applet on following restrictions.

o Keep your zipped image file less than a few mega-bytes. Too big, too much.
o Once in a while, your Zaurus may be gone crazy. A lot HDD access and no response. In such a case, leave your Zaurus alone for a while. In ten or thirty minutes (I'm not joking), it will come back with "Activity No Respose" dialog, then say [Force close]. You'll be back in home.

These issues might be related to Dalvik GC and how an applet manages its resources. Further study is required.

Anyway, it's very fun thing to try this applet.



I didn't have any collections of image files, so I downloaded some from Miku Hatsune Tumblr to write this post.
posted by 安藤恐竜 at 22:30 | Comment(3) | TrackBack(1) | 日記

Boot Android up on Zaurus without chroot

I compared android-root/ file structure and Angstrom's /. It looks like not so much conflicted. So, I tried to boot Android up without chroot.

android-root/system and android-root/data have no problem as symbolic links from / to android-root. In /etc, only hosts file could be an issue, so keep Angstrom's hosts file. Other than it just spill them over.
$ ssh root@zaurus
# cd /
# ln -s /home/root/android-root/system system
# ln -s /home/root/android-root/data data
# cd /home/root/android-root/etc
# cp /etc/hosts .
# tar cvf /tmp/etc.tar .
# cd /etc
# tar xvf /tmp/etc.tar
Now I might be able to boot Android up with just two commands.
# chmod 666 /dev/binder
# android-root/init
Gee. I ended up looking at famous red cylon forever. From PC's another shell, I logged in to Zaurus to see the binder's permission.
$ ssh root@zaurus
# ls -l /dev/binder
crw-rw---- 1 root root 252, 0 Jan 18 02:58 /dev/binder
It seems to me that android-root/init re-constructs /dev with udev stuff.

After I rebooted my Zaurus, I brought two ssh consoles connected to my Zaurus, so that I could check the binder's permission while booting Android up.
# chmod 666 /dev/binder
# android-root/init

--- from the second console ---

# ls -l /dev/binder
crw-rw---- 1 root root 252, 0 Jan 18 02:58 /dev/binder
The permission had changed.

After a couple of try-and-errors, I found Android can be booted up by chmod the binder before Android switches to grapfical mode.

I revised start-android.sh.
chmod 666 /dev/binder
android-root/init &
sleep 1
chmod 666 /dev/binder
OK. I get Android up without chroot.

By the way, Angstrom mounts 30MB tmpfs on /media/ram. Now I can move /tmp from HDD to RAM.

Reboot again, then symlink /var/tmp to /media/ram.
$ ssh root@zaurus
# cd /var
# rm tmp
# ln -s /media/ram tmp
After I boot Android up, I see less HDD LED brinking than /tmp on HDD.

I expected more performance improvement by moving /tmp out to RAM, but it doesn't change much.

I'll play with this Android Zaurus for a while.

posted by 安藤恐竜 at 19:37 | Comment(1) | TrackBack(0) | 日記


Building device driver for Angstrom

This post will be the last article of a serise about CodeSourcery's tool chain.

This time, device driver. Say, some gadget you have but Angstrom doesn't support it, and you find a source code somewhere else. Will that really happen?

Anyway, same as previous article, downlaod the toolchain tar ball. Make sure choice is ARM EABIGNU/Linux and IA32 GNU/Linux.
Download the ARM 2007q3 Release

Correction on Jan 18, 2008: A choice should be a pair of ARM GNU/Linux and IA32 GNU/Linux. We need -arm-none-linux-gnueabi-, not -arm-none-eabi-. Sorry for any inconvenience.

Then unpack it somewhere convenient for you.
$ cd /opt
$ sudo tar jxvf arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
$ sudo ln -s arm-2007q3 arm-cc
$ export PATH=/opt/arm-cc/bin:$PATH
$ export CC=arm-none-linux-gnueabi-gcc
Then download kernel source code from Google's Android distribution. You may also want .config file. I uploaded Angstrom's defconfig files as a sample.

Download, configure and build the kernel.
$ wget http://android.googlecode.com/files/linux-2.6.23-android-m3-rc20.tar.gz
$ tar zxvf linux-2.6.23-android-m3-rc20.tar.gz
$ mv kernel linux-2.6.23-android-m3-rc20
$ cd linux-2.6.23-android-m3-rc20
$ wget https://androidzaurus.up.seesaa.net/image/defconfig-angstrom.tar.gz
$ tar zxvf defconfig-angstrom.tar.gz
$ cp defconfig/defconfig-spitz .config
$ CROSS_COMPILE=arm-none-linux-gnueabi- make
make may ask you bunch of questions but simply [Enter] to choose default. Because the kernel itself will be useless anyway unless patch it properly. What we want here is a module driver. If you need to build the kernel, you better try OpenEmbedded bitbake for sure.

After build finishes, go back to configuration and build a module driver. Let's say binderdev, this time.
$ CROSS_COMPILE=arm-none-linux-gnueabi- make menuconfig

   Device Drivers ---> [Enter]
   Character devices ---> [Enter]
   OpenBinder IPC Driver [Space] and make sure <M> at the top of Open Binder.
   Then [Tab] to <Exit> and [Enter]
   And, [Tab] to <Exit> and [Enter]
   And, [Tab] to <Exit> and [Enter]
   Say <Yes> to save configuration.

$ CROSS_COMPILE=arm-none-linux-gnueabi- make modules
$ file drivers/binder/binderdev.ko
drivers/binder/binderdev.ko: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), not stripped
It looks like OK.

Very few would be interrested I guess, hope that these tips save someone's sweat.



posted by 安藤恐竜 at 18:35 | Comment(5) | TrackBack(0) | 日記

Android Font

Android has True Type fonts in system/fonts.
$ ls -lh system/fonts/
-rw-r--r-- 1 root root 145.0k Dec 11 21:12 DroidSans-Bold.ttf
-rw-r--r-- 1 root root 106.2k Dec 11 21:12 DroidSans.ttf
-rw-r--r-- 1 root root 3.0M Dec 11 21:12 DroidSansFallback.ttf
-rw-r--r-- 1 root root 74.3k Dec 11 21:12 DroidSansMono.ttf
-rw-r--r-- 1 root root 164.9k Dec 11 21:12 DroidSerif-Bold.ttf
-rw-r--r-- 1 root root 130.8k Dec 11 21:12 DroidSerif-BoldItalic.ttf
-rw-r--r-- 1 root root 91.8k Dec 11 21:12 DroidSerif-Italic.ttf
-rw-r--r-- 1 root root 156.2k Dec 11 21:12 DroidSerif-Regular.ttf
I tried to install some of them to my Windows XP PC.

Just copy them to SD card, then drag & drop into c:\Windows\Fonts.

droid-serif.png  droid-sans-mono.png  droid-sans-fallback.PNG

So, the biggest font file, DroidSansFallback.ttf, has Japanese font in it. I guess other language fonts such as Simple Chinese and Big5 also supported by this single font file as well as other European Language fonts.

It's like a zipping the World into 3M bytes. I'm not fammiliar with embedded font things, but I guess Android has one of the most sophisticated font systems.

This is only an experiment. Copying out the font files may bring up copyright issue, so I deleted them from my PC.
posted by 安藤恐竜 at 13:01 | Comment(0) | TrackBack(0) | 日記


w3m build with CodeSourcery tool chain

Just another log of my try and error while building w3m for Angstrom Zaurus.

I found this post sometime ago and very interrested in CodeSourcery's tool chain.
motz diary: Compile Android kernel from the source

First of all, downlaod the toolchain tar ball. Make sure choice is ARM EABIGNU/Linux and IA32 GNU/Linux.
Download the ARM 2007q3 Release

Correction on Jan 18, 2008: A choice should be a pair of ARM GNU/Linux and IA32 GNU/Linux. We need -arm-none-linux-gnueabi-, not -arm-none-eabi-. Sorry for any inconvenience.

Then unpack it somewhere convenient for you. My case, /opt.
$ cd /opt
$ sudo tar jxvf arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
$ sudo ln -s arm-2007q3 arm-cc
$ export PATH=/opt/arm-cc/bin:$PATH
$ export CC=arm-none-linux-gnueabi-gcc
Download source code of w3m from SourceForge.

Try configure and build.
$ tar zxvf w3m-0.5.2.tar.gz
$ cd w3m-0.5.2
$ ./configure --host=arm-none-linux-gnueabi --enable-japanese=U
checking GC header location... /usr /usr/local ~/
checking /usr/include... checking gc.h usability... no
checking gc.h presence... no
checking for gc.h... no
So, w3m wants Hans_Boehm gc. After some googling, I found it in HP's site.
$ wget http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc.tar.gz
$ tar zxvf gc.tar.gz
$ cd gc6.7
$ ./configure --host=arm-none-linux-gnueabi --prefix=/opt/arm-cc
$ sudo make --dry-run install
$ sudo make install
arm-none-linux-gnueabi-ranlib /opt/arm-cc/lib/libgc.a
./libtool: line 4680: arm-none-linux-gnueabi-ranlib: command not found
Command is there and path is OK. So just edit the shell script to tell the absolute path to ranlib.

Edit libtool at line 172
Before: RANLIB="arm-none-linux-gnueabi-ranlib"
After:  RANLIB="/opt/arm-cc/bin/arm-none-linux-gnueabi-ranlib"

Try again.
$ sudo make install
Seems to be OK.

Go back to w3m build.
$ cd w3m-0.5.2
$ ./configure --host=arm-none-linux-gnueabi \
--prefix=/opt/arm-cc \
--with-gc=/opt/arm-cc \

checking whether setpgrp takes no argument...
configure: error: cannot check setpgrp when cross compiling
So, w3m really doesn't support cross compiling. Let's edit configure not to bail out on this error.

Comment out exit in configure at line 10501
# { (exit 1); exit 1; };

Try configure again, then make.
$ ./configure --host=arm-none-linux-gnueabi \
--prefix=/opt/arm-cc \
--with-gc=/opt/arm-cc \
$ make
etc.c: In function 'setup_child':
etc.c:1366: error: too many arguments to function 'setpgrp'
My setpgrp looks like void function. Edit configure again.

Add a following line to configure at line 10554

$ ./configure --host=arm-none-linux-gnueabi \
--prefix=/opt/arm-cc \
--with-gc=/opt/arm-cc \
$ make
./mktable 100 functable.tab > functable.c
/bin/bash: ./mktable: cannot execute binary file

$ file mktable
mktable: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, dynamically linked (uses shared libs), not stripped
Gee. Make try to build a tool runtime.

Edit Makefile to make x86 executable for mktable. It's kind a long story. So see w3m-0.5.2-arm-patch.tar.gz if you are interrested in.

$ make clean
$ make
Now I got tons of errors related ncurses is missing.
$ wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.4.tar.gz
$ tar zxvf ncurses-5.4.tar.gz
$ cd ncurses-5.4
$ ./configure --host=arm-none-linux-gnueabi --prefix=/opt/arm-cc
$ make
AWK=mawk sh ./tinfo/MKkeys_list.sh ../include/Caps | sort >keys.list
./make_keys keys.list > init_keytry.h
./make_keys: 1: Syntax error: word unexpected (expecting ")")
It looks like very tough thing to do.

Forget to build ncurses from scratch. Intead, copy them from openembedded image which I already have.
$ pushd ~/openembedded/tmp/work/armv5te-angstrom-linux-gnueabi/ncurses-5.4-r9/image/
$ cd usr/lib
$ cp -a . /opt/arm-cc/lib
$ cd ../share
$ cp -a . /opt/arm-cc/share
Or download ncurses-dev package on Angsrom Zaurus and copy them back.
$ ssh root@zaurus
# ipkg update
# ipkg install ncurses-dev
# ipkg files ncurses-dev
Package ncurses-dev (5.4-r10) is installed on root and has the following files:
... snip ...
Try again.
$ make clean
$ make
Looks good. Copy to Angsrom Zaurus and try.
$ tar zcvf /tmp/arm-w3m.tar.gz w3m w3mbookmark w3mhelperpanel w3mimgdisplay
$ pushd /opt/arm-cc/lib/gcc/arm-none-linux-gnueabi/4.2.1/
$ find . -name "libgc.*" -print | xargs tar zcvf /tmp/arm-libgc.tar.gz
$ scp /tmp/arm-w3m.tar.gz root@zaurus:/home/root
$ scp /tmp/arm-libgc.tar.gz root@zaurus:/home/root
$ ssh root@zaurus
# tar zxvf arm-w3m.tar.gz
# cd /usr/lib
# tar zxvf /home/root/arm-libgc.tar.gz
# LANG=c ./w3m http://hogehoge


posted by 安藤恐竜 at 20:08 | Comment(0) | TrackBack(0) | 日記

ncftp for Angstrom

Angstrom distribution has sftp but lacks classic ftp client.

I built NcFTP Client. Following is a tar ball of executable files, just in case anybody looking for binary.

o ncftp-3.2.1-arm-linux.tar.gz

And patch file ncftp-3.2.1-arm-linux.patch.

Following is my try and error log.
$ wget ftp://ftp.ncftp.com/ncftp/ncftp-3.2.1-src.tar.bz2
$ tar jxvf ncftp-3.2.1-src.tar.bz2
$ cd ncftp-3.2.1
$ ./configure --host=arm-none-linux-gnueabi --prefix=/opt/arm-cc
$ make
$ file bin/ncftp
bin/ncftp: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), stripped
Oops. I built x86 binary. It looks like configure doesn't support cross compiling. So I modified Makefile to set CC=arm-none-linux-gnueabi-gcc.
$ make clean
$ make
strip: Unable to recognise the format of the input file `../bin/ncftp'
make[1]: [../bin/ncftp] Error (ignored)

Compiling wgets.c: [ERROR]
In file included from wgets.c:9:
syshdrs.h:142:22: error: ncurses.h: No such file or directory
So, strip should be arm-none-linux-gnueabi-strip. And ncurses.h is missing. I have ncurses headers and libraries in my openembedded image. Just copy them.
$ pushd ~/openembedded/tmp/work/armv5te-angstrom-linux-gnueabi
$ pushd ncurses-5.4-r9/image/usr/include/
$ sudo cp * /opt/arm-cc/lib/gcc/arm-none-linux-gnueabi/4.2.1/include/
$ popd
$ cd ncurses-5.4-r9/image/usr/lib
$ sudo cp * /opt/arm-cc/lib/
$ popd

Alternatively, ncurses-dev.ipk could be used.
$ ssh root@zaurus
# ipkg update
# ipkg install ncurses-dev
# ipkg files ncurses-dev
Package ncurses-dev (5.4-r10) is installed on root and has the following files:
... snip ...
Copy them back from Zaurus to PC.

Now try again.
$ make clean
$ make
one-linux-gnueabi/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
It looks like the linker doesn't know where to find ncurses library. Modify vis/Makefile to add LDFLAGS+= -L/opt/arm-cc/lib.
$ make
$ find bin/ -type f -print | xargs file
bin/ncftp: ELF 32-bit LSB executable, ARM, ...
bin/ncftpbatch: ELF 32-bit LSB executable, ARM, ...
bin/ncftpbookmarks: ELF 32-bit LSB executable, ARM, ...
bin/ncftpget: ELF 32-bit LSB executable, ARM, ...
bin/ncftpls: ELF 32-bit LSB executable, ARM, ...
bin/ncftpput: ELF 32-bit LSB executable, ARM, ...
Now I got executables for arm.

If you want to build using my patch, step would be
$ wget ftp://ftp.ncftp.com/ncftp/ncftp-3.2.1-src.tar.bz2
$ tar jxvf ncftp-3.2.1-src.tar.bz2
$ cd ncftp-3.2.1
$ ./configure --host=arm-none-linux-gnueabi --prefix=/opt/arm-cc
$ cd ..
$ patch -p0 < ncftp-3.2.1-arm-linux.patch
$ cd ncftp-3.2.1
$ make


というわけで、今度はAngstrom用にNcFTP Clientをビルドしてみました。


o ncftp-3.2.1-arm-linux.tar.gz

posted by 安藤恐竜 at 17:43 | Comment(4) | TrackBack(0) | 日記


w3m for Angstrom

Today I spend some time to build w3m, the console web browser.

It is a proof of concept that CodeSourcery's pre-build ARM tool chain can be used for Angstrom development. Of cource we can follow the OpenEmbedded bitbake way though, it would be nice to have a toolchain for quick hack.

There are some tries and errors, I get w3m work on my Angstrom Zaurus.

w3m1.png      w3m2.png      w3m3.png

Just in case, somebody may look for executables, I uploaded the binary tarballs on this blog. I guess any Angstrom Zaurus can execute this image.

o arm-w3m.tar.gz
o arm-libgc.tar.gz

Copy both of them and unzip on your Angstrom Zaurus.
$ mkdir w3m
$ cd w3m
$ tar zxvf ../arm-w3m.tar.gz
$ cd /usr/lib
$ tar zxvf /home/root/arm-libgc.tar.gz
$ cd ~/w3m
$ LANG=c ./w3m http://hogehoge

Don't ask me why inline images are not displayed. I'm the first person who wants to know why. Maybe I forget to configure w3mimgdisplay to grab the frame buffer.

Anyway it is a proof of concept for CodeSourcery's toolchain.

I'll post another article in a couple of days how I built w3m and Boehm GC with CodeSourcery's toolchain.


というわけで、w3mをビルドしてみました。 CodeSourceryのツールチェーンは使えるのかしら?という素朴な疑問を解消するために。arm-w3m.tar.gzとarm-libgc.tar.gzを落として、上の囲みのように展開すれば動くと思います。



posted by 安藤恐竜 at 20:20 | Comment(0) | TrackBack(0) | 日記

Two more issues: sdcard and sound

There are a couple of things to do.
o Touchscreen is unstable.
o Keyboard driver is required. Still some keys can't be typed in, such as slash(/).

Adding to these I found more recently.
o Sound. No sound yet.
o SD Card

I tried this sample applet MusicDroid - Audio Player Part I | Hello Android a few days ago and found Android applets can't access to /sdcard.

I went back to the Android SDK emulator and booted it up with SD Card support.
$ ./mksdcard 16M sd.img
$ ./emulator -sdcard sd.img &
$ ./adb shell ls /sdcard
drwxrwxrwx root root 2008-01-11 07:02 android
drwxrwxrwx root root 2008-01-11 08:33 download

# ./adb shell ls /sdcard/android/
-rwxrwxrwx root root 17408 2008-01-14 06:54 media.db

$ ./adb shell
# cd /sdcard/android
# sqlite3 media.db
sqlite> .tables
albums audio_genres_map images
artists audio_meta thumbnails
audio audio_playlists video
audio_genres audio_playlists_map
Then tried on my Android Zaurus and get exactly the same results. So the Android system knows how to access /sdcard. But applets don't. It's really weird.

Second new issue is sound. I never heard any sound from my Android Zaurus. Today I tried this movie player applet Android - Video/Music player sample with a quick hack. Because I can't type some characters on my Zaurus, I set default URI in the source code.
After building apk, I copied to to my Android Zaurus.

vplay1.png      vplay2.png

It worked but no sound. Well, bright side is 3GP decoding works efficiently enough on Zaurus 400MHz XScale.

A lot things to do.
posted by 安藤恐竜 at 16:24 | Comment(4) | TrackBack(0) | 日記


Thank you note for visitors from linuxdevices.com

I was surprised by the access log of this blog and found Penguinistas hack Android onto real hardware introduced this blog.

First of all, all the credits of making it possible to run Android on Zaurus goes to Benno
and gergely at eu.edge. I only followed their steps.

The article of linuxdevices.com assembles time line neatly. But I noticed a few epocs are missed.
o Willcom shows off an Android prototype - Engadget
o Android Porting to Real Target HW - NemusTech

Willcom Core Module Forum reportedly booted up Android before Nov. 27 and that makes them one of the earliest who successfully ported Android to real targets.
a refference article in Japanese: WILLCOMコアモジュールフォーラム、Androidの動作を確認

Regarding Android screenshots, the linuxdevices.com article says
all apparently captured from his Zaurus
Yes, I use fbgrab on my Android Zaurus. I usually open some ssh terminals up connected to my Zaurus while playing with Android. On an ssh terminal, I type in fbgrab command as it needed.


Sorry for a dirty shot (and fingerprint....), but this is only one pitcture I have for now. Though I bought a digital camera a week ago, I don't have much time playing with it.

Last thing.
His or her blog
Well, I'm he. :-)

posted by 安藤恐竜 at 13:51 | Comment(2) | TrackBack(0) | 日記


Androitter - A twitter Applet

In the previous article, I introduced a twitter applet which is distributed at throw life blog. In my review, I commented "it works perfectly but the font is too small to read. A font size option might be helpful", then the applet author, Adamrocker, came back with updated version of his twitter applet. What a nice guy.

From his blog, Androitter ver. 3 - twitter applet for Android, you can download the whole project including the source code and binary. Just in case, for the people who cannot locate where the link is, this androitter3.zip is the direct link to the zipped file.

Let's see how it looks.

Androitter icon and login screen.
androitter-menu.png      androitter-login.png

In the menu, there's a new [Config.] option. And now I can select font size by nice looking spinner UI. Thank you, Adamrocker!
androitter-conf.png      androitter-spinner.png      androitter-large.png

This could be a good practice. Because handheld devices are often equipped with fine pitch LCD pannels, GUI design may not be completed only in the emulator. Typical PC LCD pannel's resolution is around 100dpi, but Zaurus'es famous Silicon LCD is 216dpi. It's like one fourth of the image size.

In the emulator, maximam zoom of Android web browser may look like too big, but on a real target, it would be nice size to see.

Well, next thing is uim and keyboard driver... Hmmmmm....

Anyway, thank you, Adamrocker!

following words are for Japanese readers. Don't have to be bothered to try Google translate. ;-)

というわけで。以前書いたスクリーンショットのエントリtwitterのアプレットについて、ちぃとフォントが小さいすぎとブーたれたんですけど、作者のthrow lifeの中の人が、親切にもフォントサイズを変更できるバージョンを作成してくださいました。AndroidでTwitterクライアント ver.3。いい人だ。ありがとうございました。





posted by 安藤恐竜 at 17:47 | Comment(0) | TrackBack(0) | 日記




・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。