Noisedroid/FAQ: Difference between revisions

From Noisebridge
Jump to navigation Jump to search
(My Top 12 NFL Quarterbacks Of All Time - Old And New!)
(Undo revision 26689 by 91.121.27.33 (Talk))
Line 1: Line 1:
== Building ==
* Configure a x86_32 Ubuntu 8.10 or Debian 4.0 host with at least 20GB of disk space.
* download sources according to http://source.android.com/download, install needed packages, etc
* build for Dream (the internal name for G1) according to http://source.android.com/documentation/building-for-dream
** however, you probably want to use an up-to-date kernel branch instead of the the ancient 2.6.25 that the android.com <tt>local_manifest.xml</tt> refers to:
<project path="kernel" name="kernel/msm" revision="refs/heads/android-msm-2.6.27"/>
** this results in a build using a prebuilt <tt>kernel</tt> and <tt>wlan.ko</tt> from <tt>vendor/htc/dream/</tt>.
* after <tt>make</tt> completes you'll have a built tree in <tt>out/target/product/dream</tt>, and you can run
# fastboot flash boot boot.img
# fastboot flash system system.img


Here's what I did to build my own kernel and wlan.ko:
cd mydroid
d=$PWD
First, build the kernel.  The <tt>android-msm-2.6.27</tt> branch seems to work just fine.  We're building for the <tt>msm</tt> platform using the <tt>mydroid/prebuilt/</tt> 4.2.1 toolchain; the 4.3.1 toolchain doesn't seem to work.
cd kernel
make ARCH=arm CROSS_COMPILE=$d/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi- msm_defconfig
make ARCH=arm CROSS_COMPILE=$d/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
Once the kernel build completes without errors, we can build the horrifyingly complex TIWLAN driver.  We don't need to set CROSS_COMPILE or ARCH, the <tt>system/wlan/ti/Makefile</tt> does that for us, but we do need to add the prebuilt toolchain to $PATH.
cd $d/system/wlan/ti/sta_dk_4_0_4_32
PATH=$d/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin:$PATH make KERNEL_DIR=$d/kernel
Finally, we can install the results into <tt>out/target/product/dream/</tt> and rebuild <tt>boot.img</tt> (for the new kernel) and <tt>system.img</tt> (for the new wlan.ko).  The makefiles don't have correct dependencies for the .img files, so we just delete them and let them get rebuilt.
cd $d
cp kernel/arch/arm/boot/zImage out/target/product/dream/kernel
cp system/wlan/ti/sta_dk_4_0_4_32/wlan.ko out/target/product/dream/system/lib/modules/wlan.ko
rm out/target/product/dream/*.img
make
== Working with the G1 ==
* TODO: how to root a retail G1
* http://www.gotontheinter.net/content/fastboot-cheat-sheet
There are two significant host apps for (ab)using the G1: [http://www.gotontheinter.net/content/fastboot-cheat-sheet fastboot] and [http://developer.android.com/guide/developing/tools/adb.html adb].  Fastboot is used to write over USB to the G1's flash, for example to [http://groups.google.com/group/android-platform/msg/437448ed327a5fbc flash a complete system.img] or [http://www.gotontheinter.net/logo.rle replace the T-Mobile splash screen].  adb gives you access to a debug root shell on the G1 with <tt>adb shell</tt>, and also "syslog" with <tt>adb logcat</tt>.
[[Category:Cellular]]
== USB to Serial interface with the G1 ==
[[Image:G1-two-usb-to-serial-cable.jpg|thumb|G1 USB to Serial interface cable]]
It's possible to create a USB to serial interface cable ([https://noisebridge.net/pipermail/noisebridge-discuss/2009-March/003336.html details here]) to interact with the running phone and the boot loader(s).
According to [http://groups.google.com/group/android-platform/browse_thread/thread/439d3f3af7a88a09/10a80eb835e8dbcc?lnk=gst&q=serial#10a80eb835e8dbcc this android-platform post] the serial port is 115,200 8N1 at 2.8V TTL with the following pinout:
_____________
| A B C D E |
\1 2 3 4 5 6|
A: GND
B: NC
C: +DATA
D: -DATA
E: +5v
1: +Mic
2: +Right
3: Switch / Rx (2.8V, CMOS-TTL Level) / CABLE_IN2
4: GND / Tx (2.8V, CMOS-TTL Level) / CABLE_IN1
5: GND (Serial GND, 0 Ohms resistance between this and pin A)
6: +Left
'''!!! Fixed 10.10.09 : Rx & Tx reversed, because they were confused !!!'''
[http://www.instructables.com/id/Android_G1_Serial_Cable/ How to make a Android G1 Serial to USB Cable]

Revision as of 11:43, 28 July 2012

Building

<project path="kernel" name="kernel/msm" revision="refs/heads/android-msm-2.6.27"/>
    • this results in a build using a prebuilt kernel and wlan.ko from vendor/htc/dream/.
  • after make completes you'll have a built tree in out/target/product/dream, and you can run
# fastboot flash boot boot.img
# fastboot flash system system.img

Here's what I did to build my own kernel and wlan.ko:

cd mydroid
d=$PWD

First, build the kernel. The android-msm-2.6.27 branch seems to work just fine. We're building for the msm platform using the mydroid/prebuilt/ 4.2.1 toolchain; the 4.3.1 toolchain doesn't seem to work.

cd kernel
make ARCH=arm CROSS_COMPILE=$d/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi- msm_defconfig
make ARCH=arm CROSS_COMPILE=$d/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-

Once the kernel build completes without errors, we can build the horrifyingly complex TIWLAN driver. We don't need to set CROSS_COMPILE or ARCH, the system/wlan/ti/Makefile does that for us, but we do need to add the prebuilt toolchain to $PATH.

cd $d/system/wlan/ti/sta_dk_4_0_4_32
PATH=$d/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin:$PATH make KERNEL_DIR=$d/kernel

Finally, we can install the results into out/target/product/dream/ and rebuild boot.img (for the new kernel) and system.img (for the new wlan.ko). The makefiles don't have correct dependencies for the .img files, so we just delete them and let them get rebuilt.

cd $d
cp kernel/arch/arm/boot/zImage out/target/product/dream/kernel
cp system/wlan/ti/sta_dk_4_0_4_32/wlan.ko out/target/product/dream/system/lib/modules/wlan.ko
rm out/target/product/dream/*.img
make

Working with the G1

There are two significant host apps for (ab)using the G1: fastboot and adb. Fastboot is used to write over USB to the G1's flash, for example to flash a complete system.img or replace the T-Mobile splash screen. adb gives you access to a debug root shell on the G1 with adb shell, and also "syslog" with adb logcat.


USB to Serial interface with the G1

G1 USB to Serial interface cable

It's possible to create a USB to serial interface cable (details here) to interact with the running phone and the boot loader(s).

According to this android-platform post the serial port is 115,200 8N1 at 2.8V TTL with the following pinout:

_____________
| A B C D E |
\1 2 3 4 5 6|

A: GND
B: NC
C: +DATA
D: -DATA
E: +5v

1: +Mic
2: +Right
3: Switch / Rx (2.8V, CMOS-TTL Level) / CABLE_IN2 
4: GND / Tx (2.8V, CMOS-TTL Level) / CABLE_IN1
5: GND (Serial GND, 0 Ohms resistance between this and pin A)
6: +Left

!!! Fixed 10.10.09 : Rx & Tx reversed, because they were confused !!!

How to make a Android G1 Serial to USB Cable