[Guide]USB Host Enabled Kernel for the G1/Dream
HOWTO: Compile USB Host Enabled Kernel for the G1/Dream
Hi everyone,
I've got my new HTC Dream and I love it. It's my first Android based device. Now I'm running CyanogenMod 6 Rom.
So this is what I have:
Model number: HTC Dream
Andreoid ver: 2.2
Kermel ver: 2.6.34.5-cynogenmod
Mod version: CyanodenMod-6.0.0-DS
Build number: FRF91
I followed these guides to compile usb host enabled kernel. Please thank
Andrew de Quincey,
Sven Killig ,
Michael Mitchell and
Frank Sposaro for their awesome work.
Preparing Android Build Environment
mkdir ~/cm-kernel-usbhost/
cd ~/cm-kernel-usbhost/
git clone git://github.com/CyanogenMod/cm-kernel.git
cd cm-kernel
git branch -r
git checkout --track -b cm-2.6.34 origin/android-msm-2.6.34
Patch the kernel source tree
wget
http://sven.killig.de/android/N1/2.2...usb-host.patch
patch -p1 < android-kernel_msm-bca5320_Nexus-One_usb-host.patch
open ~/cm-kernel-usbhost/ cm-kernel /drivers/usb/host/ehci-msm7201.c and delete line 313
Export a variable for the ARM cross compiler
export CCOMPILER=~/android-ndk-r4b/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/arm-eabi-
Download kernel .config here and move to .config
Edit!: Use attached config file!
mv g1-cm-kern-2.6.34-usbhost.config .config
Then start the build:
make ARCH=arm CROSS_COMPILE=$CCOMPILER
At this point you should have a kernel stored in ~/cm-kernel-usbhost/cm-kernel/arch/arm/boot/zImage
Now, get the kernel on the phone:
I use fastboot to boot from RAM (not persistent)
~/android-sdk-linux_86/tools/fastboot boot arch/arm/boot/zImage
Look above at the output from the kernel build. The last thing completed is the module building (total = modpost). Notice the hierarchal structure of the compiled modules within the filesystem. Ex: /system/drivers/usb/core/usbcore.ko
Copy modules to sdcard
Now we need to load the modules into the running kernel.
Open a terminal emulator on the phone (connectbot also works, connect to local)
get root:
su
then load the usb core and ehci modules:
insmod /sdcard/usbcore.ko
insmod /sdcard/ehci-hcd.ko
You can download compiled kernel and modules
here.
Hope that this guide will be helpful to newbies like me.
Regards,
Andy
NB!
This kernel currently disables USB mount and adb over USB.
usb-storage.ko module is loaded fine but when a usb flash drive is pluged-in the phone reboots itself.
You need a powered hub or Y-cable and USB A Female / A Female Adaptor to connect your usb devices.
Now wifi is working!
UPDATE: 11.12.2010
How to make an OTA package and switch between usb host and otg.
wget ww2.cs.fsu.edu/~mitchell/android/ZipBuilder.tar
tar -xvf ZipBuilder.tar
cd ZipBuilder
./builder.sh
rename update_signed.zip usbhost_signed.zip and copy it to sd card.
make a Nandorid backup and split boot.img using
split_bootimg.pl
rename boot.img-kernel to zImage and copy it to ~/cm-kernel-usbhost/cm-kernel/arch/arm/boot/
than run ./builder.sh again
rename update_signed.zip to otg_signed.zip and copy it to sd card.
Now you can flash these zip from recovery.