Openmoko on HTC-Dream
From Openmoko
Contents |
Introduction
HTC-Dream is a android based phone. Android is running on top of a Linux kernel. So we have basically no work to do using this kernel to boot an Openmoko user space. This work is done. I booted an Openmoko user space. The way to do it on your own is described below.
Working
- USB-Ethernet
- Framebuffer console
- Xfbdev
- Wifi
- Touchscreen
Should work, but not tested yet
- Phonecalls ( >_< )
Not fixed yet
- ALSA ( --> no mplayer -.- )
Setup the rootfs
- In this example setup I used a SD-Card as root partition.
- In order to follow this guide format a SD-Card (just like installing Openmoko on Neo Freerunner).
- First partition: vfat
- Second partition: ext2 (root)
- mount it and extract http://ftp.o2s.ch/pub/openmoko/images/shr-full-eglibc-ipk--20091106-htcdream.rootfs.tar.bz2 to it.
Use internal memory
Start into fastboot mode
wget http://ftp.o2s.ch/pub/openmoko/images/shr-fso-console-image-eglibc-ipk--20091106-htcdream.rootfs.yaffs2 -O system.yaffs2 fastboot flash userdata system.yaffs2
Bootloader
You need to install fastboot. In order to do this, you will have need to have "root" on the existing Android device or already have a developer version of the bootloader installed.
Kernel
Using precompiled image
Download an kernel image from:
Select -htcdream-fastboot_sd.bin for SD-card booting or -htcdream-fastboot_mtd.bin for booting from internal flash.
Rename it to openmoko-boot.img (to keep consistent with the howto ;) )
Building new kernel
Use the kernel from the replicants. Fetch the kernel sourcecode from http://gitorious.org/replicant/gnulinuxkernel And configure it as you whish.
export HACK_DIR=`pwd` git clone git://gitorious.org/replicant/gnulinuxkernel.git cd gnulinuxkernel git checkout -b leviathan cp arch/arm/configs/openmoko .config make CROSS_COMPILE=/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/bin/ ARCH=arm sudo make CROSS_COMPILE=/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/bin/ ARCH=arm modules_install sudo mv /lib/modules/2.6-29-openmoko-msm /mnt/foo/lib/modules/ sync umount /mnt/foo
Building boot.img
mkdir $HACK_DIR/mk_boot_img cd $HACK_DIR/mk_boot_img wget http://wiki.openmoko.org/images/9/92/Mkbootimg.bin wget http://wiki.openmoko.org/images/f/f6/Newramdisk.cpio.gz mv Newramdisk.cpio.gz newramdisk.cpio.gz sudo cp Mkbootimg.bin /usr/bin/mkbootimg
For SD-card rootfs
mkbootimg --cmdline "console=tty0 no_console_suspend=1 root=/dev/mmcblk0p2 rootdelay=2 fbcon=rotate:1" \ --kernel $HACK_DIR/gnulinuxkernel/arch/arm/boot/zImage \ --ramdisk ./newramdisk.cpio.gz -o openmoko-boot.img
For internal rootfs
mkbootimg --cmdline "console=tty0 no_console_suspend=1 root=/dev/mtdblock5 rootfstype=yaffs2 rootdelay=2 fbcon=rotate:1 rw" \ --kernel $HACK_DIR/gnulinuxkernel/arch/arm/boot/zImage \ --ramdisk ./newramdisk.cpio.gz -o openmoko-boot.img
Flashing boot.img
- Start into fastboot
- execute
fastboot flash boot openmoko-boot.img
- restart the phone
fastboot reboot
WLAN
Firmware
mkdir firmware cd firmware wget http://ftp.o2s.ch/pub/openmoko/firmware-wl12xx/wl1251-fw.bin wget http://ftp.o2s.ch/pub/openmoko/firmware-wl12xx/wl1251-nvs.bin scp * root@192.168.0.202:/lib/firmware/
Driver
Install package
wget http://ftp.o2s.ch/pub/openmoko/packages/compat-wireless-msmwifi_2009-10-28-.4_htcdream.ipk scp compat-wireless-msmwifi_2009-10-28-.4_htcdream.ipk root@192.168.0.202:~ ssh root@192.168.0.202 <enter> opkg install compat-wireless-msmwifi_2009-10-28-.4_htcdream.ipk
Compiling
Download http://wireless.kernel.org/download/compat-wireless-2.6/compat-wireless-2.6.tar.bz2 (broken) I think now http://wireless.kernel.org/download/compat-wireless-2.6/compat-wireless-old.tar.bz2 Unpack it. Change into the folder.
make ARCH=arm CROSS_COMPILE=/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/bin/ KLIB=$HACK_DIR/gnulinuxkernel KLIB_BUILD=$HACK_DIR/gnulinuxkernel "$@"
Change up
cd ..
Run following script
#!/bin/sh compat=compat-wireless-2009-09-30/ mkdir modules/ for i in $compat/net/mac80211/mac80211.ko \ $compat/net/wireless/cfg80211.ko \ $compat/net/wireless/lib80211.ko \ $compat/net/wireless/lib80211_crypt_wep.ko \ $compat/net/wireless/lib80211_crypt_ccmp.ko \ $compat/net/wireless/lib80211_crypt_tkip.ko \ $compat/drivers/net/wireless/wl12xx/wl1251_sdio.ko \ $compat/net/rfkill/rfkill_backport.ko \ $compat/drivers/net/wireless/wl12xx/wl1251.ko; do cp $i modules/ done
Copy it onto your device
scp -r modules root@192.168.0.202:~
Connect to your device and start the networking:
insmod rfkill_backport.ko insmod cfg80211.ko insmod mac80211.ko insmod lib80211.ko insmod lib80211_crypt_tkip.ko insmod lib80211_crypt_wep.ko insmod lib80211_crypt_ccmp.ko insmod wl1251.ko insmod wl1251_sdio.ko
- http://bobcopeland.com/android_wifi.html
- Look onto this section with the calibration files
- http://htc-linux.org/wiki/index.php?title=WL1251