Openmoko on HTC-Dream

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(Current status)
 
(34 intermediate revisions by 8 users not shown)
Line 1: Line 1:
 +
= Current status =
 +
* <span style="background:green"> '''The HTC Dream support has been merged in the SHR distribution.'''</span>
 +
* [http://trac.shr-project.org/trac/wiki/Devices/HTCDream/InstallGuide An Installation guide] is available on the SHR wiki
 +
 +
== Headline text ==
 +
 +
= History =
 +
 +
<span style="background:red">The following page is kept for historical reasons only</span>
 +
 
== Introduction ==
 
== Introduction ==
 +
 
HTC-Dream is a android based phone.
 
HTC-Dream is a android based phone.
 
Android is running on top of a Linux kernel.
 
Android is running on top of a Linux kernel.
Line 6: Line 17:
 
I booted an Openmoko user space.
 
I booted an Openmoko user space.
 
The way to do it on your own is described below.
 
The way to do it on your own is described below.
 +
For questions ask leviathan and GNUtoo in irc://irc.freenode.net/#htc-linux
 +
 +
''If leviathan doesn't answer, he might be smoking ATM or be working elsewhere.''
 +
''In this case, try to contact him on jabber, or leave him an offline message: leviathan@xmpp.ccczh.ch''
 +
 +
'''If links are down, just try the overlay'n directory. The site is outdated very fast!'''
 +
  
 
=== Working ===
 
=== Working ===
 
* USB-Ethernet
 
* USB-Ethernet
 
* Framebuffer console
 
* Framebuffer console
* Xfbdev
+
* Xorg
 
* Wifi
 
* Wifi
 
* Touchscreen
 
* Touchscreen
 
+
* Phonecalls
=== Should work, but not tested yet ===
+
* ALSA
* Phonecalls ( >_< )
+
 
+
=== Not fixed yet ===
+
* ALSA ( --> no mplayer -.- )
+
  
 
== Setup the rootfs ==
 
== Setup the rootfs ==
Line 24: Line 38:
 
* In order to follow this guide format a SD-Card (just like installing Openmoko on Neo Freerunner).
 
* In order to follow this guide format a SD-Card (just like installing Openmoko on Neo Freerunner).
 
**  First partition: vfat
 
**  First partition: vfat
** Second partition: ext2 (root)
+
** Second partition: ext3 (root)
* mount it and extract http://ftp.o2s.ch/pub/fso-console-image-htcdream.tar.gz to it.
+
* mount it and extract http://ftp.o2s.ch/pub/openmoko/htcdream/repo/images/htcdream/shr-full-eglibc-ipk--20100509-htcdream.rootfs.tar.bz2 to it.
=== Use internal memory ===
+
Type root into the login screen and for password just type enter
+
then
+
ifup usb0
+
Then connect to your htcdream over usb+ssh:
+
ifconfig usb0 192.168.0.200
+
scp fso-console-image-htcdream.tar.gz root@192.168.0.202:~
+
ssh root@192.168.0.202
+
gunzip fso-console-image-htcdream.tar.gz
+
Then mount the internal memory with the biggest space make it clean and install your openmoko:
+
mkdir /mnt/foo
+
mount /dev/mtdblock5 /mnt/foo -o noatime -t yaffs2
+
rm -rf /mnt/foo/*
+
tar xvf fso-console-image-htcdream.tar -C /mnt/foo
+
  
 
== Bootloader ==
 
== Bootloader ==
Line 46: Line 46:
  
 
== Kernel ==
 
== Kernel ==
 +
=== Using precompiled image ===
 +
Download an kernel image from:
 +
* http://ftp.o2s.ch/pub/openmoko/htcdream/repo/images/htcdream/zImage-2.6.32%2br17%2bgitr636fa4daf243826ef6cebb64dd0509f3b079fcb5-r17-htcdream.bin
 +
(I had to disable anonymous ftp because some people misused it to upload copyrighted movies and pr0n. Sry. -- leviathan)
 +
 
=== Building new kernel ===
 
=== Building new kernel ===
 
Use the kernel from the replicants.
 
Use the kernel from the replicants.
Line 52: Line 57:
  
 
  export HACK_DIR=`pwd`
 
  export HACK_DIR=`pwd`
  git clone git://gitorious.org/replicant/gnulinuxkernel.git
+
  git clone git://gitorious.org/htc-msm-2-6-32/leviathan-incoming.git
  cd gnulinuxkernel
+
  cd leviathan-incoming
  wget http://wiki.openmoko.org/images/1/1e/Replicant_config.txt -O .config
+
  git checkout --track -b msm-gnuconform orgigin/msm-gnuconform
  wget http://bobcopeland.com/srcs/android/msm_wifi.patch
+
git pull
patch -p1 < ./msm_wifi.patch
+
  wget http://ftp.o2s.ch/defconfig_OE3 -O .config
 
  make CROSS_COMPILE=/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/bin/ ARCH=arm
 
  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 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/
+
  sudo mv /lib/modules/2.6.32 /mnt/foo/lib/modules/
 
  sync
 
  sync
 
  umount /mnt/foo
 
  umount /mnt/foo
Line 74: Line 79:
 
==== For SD-card rootfs ====
 
==== For SD-card rootfs ====
 
  mkbootimg --cmdline "console=tty0 no_console_suspend=1 root=/dev/mmcblk0p2 rootdelay=2 fbcon=rotate:1" \
 
  mkbootimg --cmdline "console=tty0 no_console_suspend=1 root=/dev/mmcblk0p2 rootdelay=2 fbcon=rotate:1" \
  --kernel $HACK_DIR/gnulinuxkernel/arch/arm/boot/zImage \
+
  --kernel $HACK_DIR/leviathan-incoming/arch/arm/boot/zImage \
 
  --ramdisk ./newramdisk.cpio.gz -o openmoko-boot.img
 
  --ramdisk ./newramdisk.cpio.gz -o openmoko-boot.img
  
 
==== For internal rootfs ====
 
==== For internal rootfs ====
  mkbootimg --cmdline "console=tty0 no_console_suspend=1 root=/dev/mtdblock5 rootfstype=yaffs2 rootdelay=2 fbcon=rotate:1" \
+
  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 \
+
  --kernel $HACK_DIR/leviathan-incoming/arch/arm/boot/zImage \
 
  --ramdisk ./newramdisk.cpio.gz -o openmoko-boot.img
 
  --ramdisk ./newramdisk.cpio.gz -o openmoko-boot.img
  
Line 86: Line 91:
 
* execute
 
* execute
 
  fastboot flash boot openmoko-boot.img
 
  fastboot flash boot openmoko-boot.img
* restart then handy
+
* restart the phone
 
  fastboot reboot
 
  fastboot reboot
  
Line 93: Line 98:
 
  mkdir firmware
 
  mkdir firmware
 
  cd firmware
 
  cd firmware
  wget http://ftp.o2s.ch/pub/wl1251-fw.bin
+
  wget http://ftp.o2s.ch/pub/openmoko/htcdream/firmware-wl12xx/wl1251-fw.bin
  wget http://ftp.o2s.ch/pub/wl1251-nvs.bin
+
  wget http://ftp.o2s.ch/pub/openmoko/htcdream/firmware-wl12xx/wl1251-nvs.bin
 
  scp * root@192.168.0.202:/lib/firmware/
 
  scp * root@192.168.0.202:/lib/firmware/
 
=== Driver ===
 
Download http://wireless.kernel.org/download/compat-wireless-2.6/compat-wireless-2.6.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
 
  
 
== Screenshots ==
 
== Screenshots ==
Line 149: Line 106:
 
[[Image:Image2.jpg]]
 
[[Image:Image2.jpg]]
  
[[Category:Distributions]]
+
[[Category:Openmoko distributions]]

Latest revision as of 18:23, 30 April 2011

Contents

[edit] Current status

  • The HTC Dream support has been merged in the SHR distribution.
  • An Installation guide is available on the SHR wiki

[edit] Headline text

[edit] History

The following page is kept for historical reasons only

[edit] 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. For questions ask leviathan and GNUtoo in irc://irc.freenode.net/#htc-linux

If leviathan doesn't answer, he might be smoking ATM or be working elsewhere. In this case, try to contact him on jabber, or leave him an offline message: leviathan@xmpp.ccczh.ch

If links are down, just try the overlay'n directory. The site is outdated very fast!


[edit] Working

  • USB-Ethernet
  • Framebuffer console
  • Xorg
  • Wifi
  • Touchscreen
  • Phonecalls
  • ALSA

[edit] Setup the rootfs

[edit] 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.

[edit] Kernel

[edit] Using precompiled image

Download an kernel image from:

(I had to disable anonymous ftp because some people misused it to upload copyrighted movies and pr0n. Sry. -- leviathan)

[edit] 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/htc-msm-2-6-32/leviathan-incoming.git
cd leviathan-incoming
git checkout --track -b msm-gnuconform orgigin/msm-gnuconform
git pull
wget http://ftp.o2s.ch/defconfig_OE3 -O .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.32 /mnt/foo/lib/modules/
sync
umount /mnt/foo

[edit] 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

[edit] For SD-card rootfs

mkbootimg --cmdline "console=tty0 no_console_suspend=1 root=/dev/mmcblk0p2 rootdelay=2 fbcon=rotate:1" \
--kernel $HACK_DIR/leviathan-incoming/arch/arm/boot/zImage \
--ramdisk ./newramdisk.cpio.gz -o openmoko-boot.img

[edit] 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/leviathan-incoming/arch/arm/boot/zImage \
--ramdisk ./newramdisk.cpio.gz -o openmoko-boot.img

[edit] Flashing boot.img

  • Start into fastboot
  • execute
fastboot flash boot openmoko-boot.img
  • restart the phone
fastboot reboot

[edit] WLAN

[edit] Firmware

mkdir firmware
cd firmware
wget http://ftp.o2s.ch/pub/openmoko/htcdream/firmware-wl12xx/wl1251-fw.bin
wget http://ftp.o2s.ch/pub/openmoko/htcdream/firmware-wl12xx/wl1251-nvs.bin
scp * root@192.168.0.202:/lib/firmware/

[edit] Screenshots

Image.jpg Image2.jpg

Personal tools

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/fso-console-image-htcdream.tar.gz to it.

Use internal memory

Type root into the login screen and for password just type enter then

ifup usb0

Then connect to your htcdream over usb+ssh:

ifconfig usb0 192.168.0.200
scp fso-console-image-htcdream.tar.gz root@192.168.0.202:~
ssh root@192.168.0.202
gunzip fso-console-image-htcdream.tar.gz

Then mount the internal memory with the biggest space make it clean and install your openmoko:

mkdir /mnt/foo
mount /dev/mtdblock5 /mnt/foo -o noatime -t yaffs2
rm -rf /mnt/foo/*
tar xvf fso-console-image-htcdream.tar -C /mnt/foo

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

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
wget http://wiki.openmoko.org/images/1/1e/Replicant_config.txt -O .config
wget http://bobcopeland.com/srcs/android/msm_wifi.patch
patch -p1 < ./msm_wifi.patch
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" \
--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 then handy
fastboot reboot

WLAN

Firmware

mkdir firmware
cd firmware
wget http://ftp.o2s.ch/pub/wl1251-fw.bin
wget http://ftp.o2s.ch/pub/wl1251-nvs.bin
scp * root@192.168.0.202:/lib/firmware/

Driver

Download http://wireless.kernel.org/download/compat-wireless-2.6/compat-wireless-2.6.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

Screenshots

Image.jpg Image2.jpg