www.kandroid.org

Kandroid community’s minimal seminar Android based Optimus One Anatomy ( Ver 1.0 )

Jan-29-2011

Geunsik Lim (Nick:인베인, leemgs.at.gmail.com) Jeongsoo Yang (Nick:들풀, yangjeongsoo.at.gmail.com)

* Case study: KU3700/LU3700/SU370 Optimus One = Optimus S (Sprint) = Optimus T (T-Mobile) = Optimus Vortex () = Optimus Chic

ü * 본 문서는 비상업적 용도에 한해서 자유롭게 수정 및 재배포 가능합니다. 단, 이 경우 그 출처를 명시해야 합니다. CONTENTS

Android Technology Session

1. OptimusOne Spec 2. Host Linux Environments 3. License Issues of OptimusOne 4. CPU & Memory Information 5. OptimusOne’s BSP Source Summary 6. Build Android Full source for OptimusOne 7. Build Android Kernel source for OptimusOne 8. Fastboot to update the flash filesystem 9. Make custom image for performance directly 10. Kernel internals of OptimusOne 11. Appendix. OptimusOne’s Update Flowchart How to Solve Some Problems After Purchase LG Optimus One Specs

1. Android 2.2 (Froyo)

2. Chipset CPU: Texas Instruments OMAP 3630 (ARMV6 Cortex-A8) Clock Speed: 600Mhz

3. Display Display Type: color transflective TFT , 262144 scales Display-Diagonal: 3.2 " Display_Resolution: 320 x 480

4. Cellular Phone Cellular-Networks: CDMA800, CDMA1900 Call Alert: 72 -chord melody

5. Etc Positioning:Device: Multi-touch screen Expansion-Slots: microSD, microSDHC, TransFlash USB: USB 2.0 client, 480Mbit/s(MAX), micro-USB : Supported Wireless+LAN: 802.11b, 802.11g Complementary: Assisted GPS, QuickGPS, Geotagging Main_Camera: 3.1 MP Battery+Capacity: 1500 mAh

Korea Android Mini Seminar 3/43 Environment of Host Linux

* Linux Distribution: Fedora 11 - http://ftp.neowiz.com/pub/fedora/releases/11/Fedora/i386/iso/Fedora-11-i386-DVD.iso

* Linux Kernel: Linux 2.6.29.6-217.2.3.fc11.i686.PAE #1 SMP

* GCC Compiler: gcc 3.4.6 20060404 (Red Hat 3.4.6-13) gcc 4.4.1 20090801 (Red Hat 4.4.1-2)

* JAVA Virtual Machine - Java(TM) 2 Runtime Environment Standard Edition (build 1.5.0_22-b03) - http://java.sun.com/javase/downloads/previous.jsp

Korea Android Mini Seminar 4/43 Process(Thread) and Memory Information

●system_server 67 * Total Numbers: 612 ●m.android.phone 32 * Kernel Threads: 46 ● e.process.gapps 29Quiz * U/S Processes : 79 ●ogle.android.gm 23 Quiz * U/S Threads: 487 ●com.kakao.talk 22 ●d.process.acore 21 MemTotal: 427556 kB Dirty: 24 kB MemFree: 10060 kB Writeback: 0 kB Buffers: 4028 kB AnonPages: 245376 kB Cached: 133004 kB Mapped: 53952 kB SwapCached: 0 kB Shmem: 1080 kB Active: 185308 kB Slab: 11440 kB Inactive: 194332 kB SReclaimable: 3448 kB Active(anon): 121880 kB SUnreclaim: 7992 kB Inactive(anon): 124568 kB KernelStack: 4520 kB Active(file): 63428 kB PageTables: 16404 kB Inactive(file): 69764 kB NFS_Unstable: 0 kB Unevictable: 2760 kB Bounce: 0 kB Mlocked: 0 kB WritebackTmp: 0 kB SwapTotal: 0 kB CommitLimit: 213776 kB SwapFree: 0 kB Committed_AS: 6075776 kB VmallocTotal: 303104 kB VmallocUsed: 87112 kB VmallocChunk: 182276 kB

Korea Android Mini Seminar 5/43 I/O Memory Information

12800000-2fefffff : System RAM (493,879,295bytes) 1282d000-12deafff : Kernel text (6,021,119 bytes) 12e10000-130785ef : Kernel data (2,524,655 bytess) 1611c000-1631bfff : kgsl_phys_memory 2ff00000-2ff3ffff : ram_console 98000000-9800ffff : dmb_ebi2_phys_memory a0000000-a001ffff : kgsl_reg_memory a0000000-a001ffff : kgsl a0200000-a0200fff : msm_serial_hs.0 a0400000-a0400fff : msm_sdcc.1 a0500000-a0500fff : msm_sdcc.2 a0800000-a08003ff : msm_hsusb a0800000-a08003ff : msm_otg a0a00000-a0a007ff : msm_nand_phys a0d00000-a0d000ff : dmb_ebi2_cr_base a0d10000-a0d100ff : dmb_ebi2_xm_base a9900000-a9900fff : msm_i2c.0 a9900000-a9900fff : msm_i2c aa200000-aa2effff : mdp aa600000-aa600fff : pmdh

Korea Android Mini Seminar 6/43 Open-source License Technical Issues

* What are GPL licenses that used on OptimusOne model ? - Linux, DBUS, BLUETOOTH, ALSA , and so on

libdbus.so GPL Message Bus System Library

lib-bluetooth.so GPL Bluetooth library (bluez-plugin )

libalsa.so(libsnd.so) GPL Advanced Linux Sound Architecture (ALSA)

wireless.ko GPL kernel module for broadcom wireless device driver

Linux Kernel GPL Kernel source by Linus Tovalds

* Official Notice for providing source code (Setting Menu) LG Electronics offers to provide source code to you on CD-ROM for a charge covering the cost of performing such distribution, such as the cost of media, shipping and handling upon e-mail request to LG Electronics at [email protected] This offer is valid for a period of three years from the date of the distribution of the product by LG Electronics. (http://opensource.lge.com)

Korea Android Mini Seminar 7/43 Open-source License Legal Issues

Android 기반 모바일 폰의 Android 2.2소스를 정상 빌드 후에 빌드된 이미지 (예: zImage(Kernel) , ramdisk.img , system.img, userdata.img)를 Android Phone에 탑재하기 위해 판매회사의 담당자에게 해당 지침서 또는 가이드를 요청.

SFLC( Software Freedom Law Center; www.softwarefreedom.org )의 권고 준수사항에 의하면, 오픈소스 제공의무의 범위는 “GPL관련 소스들의 컴파일 결과물을 제품에 탑재하는 것에 대한 가이드 까지 제공해야 하는 것”을 의무조항으로 하고 있다.

SFLC 기관에서 소스코드의 제공 범위에 대해서 아래와 같이 해석하고 있다.

• GPLV2/V3(Original Code) -> 생산/배포자 -> GPLV2/V3 based S/W release -> Open sources [ (1) Related source code + (2) Items “needed to generate + (3) install & run” the GPL’d programs ] -> End User(Customers)

해당 라이센스의 준수사항에 대해 질의 내용 및 요구사항들이 있다면, www.softwarefreedom.org 및 gpl-violation.org에 해당 사항에 대해 논의가 가능하다. 라인센스 조항 미 준수사항이 밝혀지게 되는 경우 관련 회사는 브랜드 이미지 실추 및 클레임에 대한 제바 비용을 감당해야 한다. 또한, 자유 소프트웨어 해커들로부터 전반적인 제품에 대한 보다 적극적인 위반여부를 감시받을 수 있다.

Korea Android Mini Seminar 8/43 Android Applications for H/W Benchmark

Subset of aroung 400 OpenGL ES 2.0 tests

*J android hacker's system * DEQP-Mini: the quality of the * Quadrant Standard Edition tool : CPU Frequency Moni- graphics support(OpenGL ES 2.0 (CPU, Memory, I/O, benchamrk) in your device toring 2D/3D graphics)

Korea Android Mini Seminar 9/43 Necessary packages in Host Linux PC geunsik@f11#> geunsik@f11#> geunsik@f11#> sudo yum install git-core gnupg sun-java5-jdk \ flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev \ build-essential zip curl libncurses5-dev zlib1g-dev valgrind libpng libpng-dev

Korea Android Mini Seminar 10/43 Installation GCC & JAVA to build android full source geunsik@f11#> geunsik@f11#> yum install compat-gcc* geunsik@f11#> rpm -qa | grep compat-gcc compat-gcc-34-3.4.6-9.i386 compat-gcc-34-c++-3.4.6-9.i386 compat-gcc-34-g77-3.4.6-9.i386 geunsik@f11#> geunsik@f11#> vi /etc/profile # http://java.sun.com/javase/downloads/previous.jsp export JAVA_HOME=/usr/lib/jvm/jdk1.5.0_22 export PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:/home/invain/bin:$PATH export ANDROID_JAVA_HOME=$JAVA_HOME geunsik@f11#> geunsik@f11#> source /etc/profile

Korea Android Mini Seminar 11/43 Download Android Full source from official web- site

geunsik@f11#> cd /opt/mydroid-froyo geunsik@f11#> wget http://android.git.kernel.org/repo geunsik@f11#> chmod 755 repo geunsik@f11#> repo init -u \ git://android.git.kernel.org/platform/manifest.git -b froyo geunsik@f11#> time repo sync

Korea Android Mini Seminar 12/43 Download OptimusOne BSP source from LGE

* Contacts : “OpenSource” “OpensourceMC”

* Official URL: http://opensource.lge.com - - “KU3700”

* BSP files : KU3700_Android_Froyo_OpenSource.zip (99MB) 1) LG-KU3700_kernel.tar.gz (65MB) 2) LG-KU3700_android.tar.gz (34MB)

61.0MB ./dalvik 95.0MB ./external 13.0MB ./hardware 01.9MB ./vendor

Korea Android Mini Seminar 13/43 Sub-directories information geunsik@f11#> du -sh ./OptimusOne_OpenSource_V2.2-20101105

4.0K ./Makefile 13M ./bionic 4.2M ./bootable 4.1M ./build 74M ./cts 97M ./dalvik 39M ./development 9.6M ./device 750M./external 303M./frameworks 37M ./hardware 374M./kernel 61M ./ndk 3.9G ./out 98M ./packages 945M./prebuilt 14M ./sdk 26M ./system 1.9M ./vendor

Korea Android Mini Seminar 14/43 Merge BSP into Android 2.2 Generic source

geunsik@f11#> cd /opt/mydroid-froyo geunsik@f11#> cp -arf /opt/KU3700/ku3700_opensource_android/* /opt/mydroid-froyo/ geunsik@f11#> cd /opt/mydroid-froyo geunsik@f11#> cp -arf /opt/KU3700/kernel /opt/mydroid-froyo/

Korea Android Mini Seminar 15/43 Build Kernel Source (Linux 2.6.32 base) 1/2 geunsik@f11#> cd /opt/mydroid-froyo/kernel geunsik@f11#> cp -arf ../prebuilt/linux-x86/toolchain/arm-eabi-4.2.1 /usr/local/ geunsik@f11#> vi /etc/profile # Crosscompiler env setting for OptimusOne 2.2(Froyo) export PATH=$PATH:/usr/local/arm-eabi-4.2.1/bin/ geunsik@f11#> make ku3700-perf_defconfig geunsik@f11#> ls -al ./arch/arm/boot/ - zImage(3.0MB ; Image 6.7MB) file will be located in ./arch/arm/boot/ directory.

* “ku3700-perf_defconfig” 환경파일의 주요 구성 내용 . CPU : Qualcom MSM7X27 (ARM V6 32Bit ARM1136jf-S @600Mhz) . ARM THUMB Support . ARM TLB V6 . Preemptible Mode (Preemption Mode) . OABI Compatibile Mode . Command Mode: init=/sbin/init root=/dev/ram rw initrd=0x11000000,16M console=ttyDCC0 mem=88M

Korea Android Mini Seminar 16/43 Build Kernel Source (Linux 2.6.32 base) 2/2 geunsik@f11#> make -j 4 ; make modules ; geunsik@f11#> sudo make modules_install geunsik@f11#> tree /lib/modules/2.6.32.9/kernel/

*arch/arm/mach-msm/dma_test.ko *arch/arm/mach-msm/reset_modem.ko *crypto/ansi_cprng.ko *drivers/input/evbug.ko *drivers/input/lgosp-hid/lgosp-hid.ko *drivers/misc/pmem_kernel_test.ko *drivers/mtd/tests/mtd_oobtest.ko *drivers/mtd/tests/mtd_pagetest.ko *drivers/mtd/tests/mtd_readtest.ko *drivers/mtd/tests/mtd_speedtest.ko *drivers/mtd/tests/mtd_stresstest.ko *drivers/mtd/tests/mtd_subpagetest.ko *drivers/mtd/tests/mtd_torturetest.ko *drivers/net/wireless/bcm4325/wireless.ko *drivers/net/wireless/libra/librasdioif.ko *drivers/scsi/scsi_wait_scan.ko

Korea Android Mini Seminar 17/43 Can You customize Linux Kernel Really? 1/2

* Do we have to select Preemptible Linux Kernel for real-time characteristics? * How to optimize for size reduction (tools: dumpstae, getprop, ps ) * Linux version 2.6.32.9 (mclab1@lge) (gcc ver- sion 4.4.0 (GCC) ) #3 PREEMPT Fri Sep 24 14:31:02 KST 2010 /proc/config.gz

Korea Android Mini Seminar 18/43 Can You customize Linux Kernel Really? 2/2

* Tune BogoMIPS for the faster operation and arithmetic * Will we use YAFFS2 instead of EXT2/3/4 for high performance of Nand storage? /proc/config.gz

●Processor : ARMv6-compatible processor rev 5 (v6l) ●BogoMIPS : 245.61 ●Features : swp half thumb fastmult vfp edsp java ●CPU implementer : 0x41 ●CPU architecture: 6TEJ ●CPU variant : 0x1 ●CPU part : 0xb36 ●CPU revision : 5 ●Hardware : KU3700 Global board (LGE KU3700) ●Revision : 0000 ●Serial : 0000000000000000

Korea Android Mini Seminar 19/43 Build android full source including BSP geunsik@f11#> cd /opt/mydroid-froyo ======PLATFORM_VERSION_CODENAME=REL geunsik@f11#> . ./build/envsetup.sh PLATFORM_VERSION=2.2.1 TARGET_PRODUCT=generic including device//dream/vendorsetup.sh TARGET_BUILD_VARIANT=eng including device/htc/passion/vendorsetup.sh TARGET_SIMULATOR= TARGET_BUILD_TYPE=release including device/htc/sapphire/vendorsetup.sh TARGET_BUILD_APPS= TARGET_ARCH=arm HOST_ARCH=x86 geunsik@f11#> time -j4 make HOST_OS=linux HOST_BUILD_TYPE=release BUILD_ID=MASTER geunsik@f11#> ======

* TroubelShooting 1) rm -f ./dalvik/libcore/xml/src/main/java/org/apache/xml/serializer/utils/./SerializerMessages_de.java 2) chmod -R 755 ./external ( permission of executable file ) 3) yum install -y iibpng* 4) make update-api (out/target/common/obj/PACKAGING/checkapi-current-timestamp] error 38)

Korea Android Mini Seminar 20/43 Image files for Android based Real phone

- *.img file will be located in ./out/target/product/generic/ directory. geunsik@f11#> geunsik@f11#> geunsik@f11#> ls ./out/target/product/generic/ -al

-rw-rw-r-- 1 invain invain 7 2010-11-13 15:19 android-info.txt -rw-rw-r-- 1 invain invain 8866 2010-11-13 15:54 clean_steps.mk drwxrwxr-x 3 invain invain 4096 2010-11-13 15:21 data -rw-rw-r-- 1 invain invain 15655 2010-11-13 16:01 installed-files.txt drwxrwxr-x 13 invain invain 4096 2010-11-13 16:01 obj -rw-rw-r-- 1 invain invain 50 2010-11-13 15:54 previous_build_config.mk -rw-rw-r-- 1 invain invain 164888 2010-11-13 15:34 ramdisk.img drwxrwxr-x 8 invain invain 4096 2010-11-13 15:34 root drwxrwxr-x 4 invain invain 4096 2010-11-13 15:33 symbols drwxrwxr-x 10 invain invain 4096 2010-11-13 15:34 system -rw------1 invain invain 59032512 2010-11-13 16:01 system.img -rw------1 invain invain 1461504 2010-11-13 15:31 userdata.img geunsik@f11#>

Korea Android Mini Seminar 21/43 How to modify *.image that you want only. 1/2

* system.img Target1 : ./out/target/product//obj/PACKAGING/systemimage_unopt_intermediates/system.img ./out/host/linux-x86/bin/mkyaffs2image -f -s 2048 out/target/product//system \ ./out/target/product//obj/PACKAGING/systemimage_unopt_intermediates/system.img \

Target2 : ./out/target/product//system.img ./out/host/linux-x86/bin/acp -fpt \ ./out/target/product//obj/PACKAGING/systemimage_unopt_intermediates/system.img \ ./out/target/product//system.img chmod a+r ./out/target/product//system.img

* userdata.img ./out/host/linux-x86/bin/mkyaffs2image -f -s 2048 \ ./out/target/product//data ./out/target/product//userdata.img chmod a+r ./out/target/product//userdata.img

Korea Android Mini Seminar 22/43 How to modify *.image that you want only. 2/2

* ramdisk.img Target : ./out/target/product//ramdisk.img ./out/host/linux-x86/bin/mkbootfs ./out/target/product//root | \ ./out/host/linux-x86/bin/minigzip > ./out/target/product/KU3700/ramdisk.img

* boot.img = Kernel + ramdisk.img Target : ./out/target/product//boot.img ./out/host/linux-x86/bin/mkbootimg --kernel ./out/target/product//kernel \ --ramdisk ./out/target/product//ramdisk.img --cmdline "console=ttyMSM1,115200n8" \ --base 0x20000000 --pagesize 2048 --output out/target/product//boot.img

Korea Android Mini Seminar 23/43 Rooting of OptimusOne for Linux users (방법1) 1. Setting of phone 1.1 Setting – Application – Development – USB Debugging --> Connect USB Debugging 1.2 Connect ADB cable between PC and Phone --> Check Debug mode AdbWinApi.dll 2. Install ncurse/stcc++ libraries(for ADB) , Mono(for *.exe), Winforms(for Mono) AdbWinUsbApi.dll U104#>apt-get install -y lib32ncurses5 lib32stdc++ mono libmono-winforms2.0-cil SuperOneClick.exe F11#> yum install -y compat-libstdc++* mono* Superuser.apk F11#> unzip SuperOneClickv1.5.5-ShortFus.zip adb.exe F11#> chmod 755 adblinux adblinux F11#> ./adblinux devices adbmac List of devices attached busybox LG_ANDROID_KU3700** device rageagainstthecage F11#> ./adblinux shell id sqlite3 uid=0(root) gid=0(root) su F11#> sudo mono SuperOneClick.exe --> Click “root” menu

*SuperOneClick.exe: PE32 executable for MS Windows (GUI) 80386 32-bit Mono/.Net assembly

3. Start “Superuser” application in the phone 4. Utilize “root explorer” or “z4root” application to delete unnecessary files after you get the Root privilege.

Korea Android Mini Seminar 24/43 Rooting of OptimusOne for Linux users (방법2) f11#> ./adb push rageagainstthecage /data/local/tmp/rageagainstthecage f11#> ./adb shell android# cd /data/local/tmp android# chmod 4755 rageagainstthecage android# ./rageagainstthecage f11#> ./adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system f11#> ./adb push su /system/bin f11#> ./adb push Superuser.apk /system/app f11#> ./adb shell chmod 4755 /system/bin/su f11#> ./adb shell rm /data/local/tmp/rageagainstthecage f11#> ./adb reboot

Run “Terminal Emulator” Android S/W android$ su android# id

Korea Android Mini Seminar 25/43 USB Vendor ID Table

This table provides a reference to the vendor IDs needed in order to add USB de- vice support on Linux. The USB Vendor ID is the value given to the SYSFS{idVendor} property in the rules file, as described in udev setting step.

F11#> vi /etc/udev/rules.d/99-android.rules Manufacturer USB Vendor ID SUBSYSTEM=="", ATTRS{idVendor}=="04e8", Acer 0502 SYMLINK+="android_adb",MODE="0666" 413c SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", Foxconn 0489 SYMLINK+="android_adb",MODE="0666" - 091E HTC 0bb4 usb 2-4: new high speed USB device using ehci_hcd and address 10 12d1 usb 2-4: New USB device found, idVendor=1004, idProduct=618e usb 2-4: New USB device strings: Mfr=1, Product=2, Kyocera 0482 SerialNumber=3 LG 1004 usb 2-4: Product: LG Android USB Device usb 2-4: Manufacturer: LG Electronics Inc. 22b8 usb 2-4: SerialNumber: LG_ANDROID_KU3700** usb 2-4: configuration #1 chosen from 1 choice Nvidia 0955 cdc_acm 2-4:1.0: This device cannot do calls on its own. It is no modem. cdc_acm 2-4:1.0: ttyACM0: USB ACM device 10A9 scsi5 : SCSI emulation for USB Mass Storage devices 04e8 usb-storage: device found at 10 usb-storage: waiting for device to settle before scanning Sharp 04dd usb-storage: device scan complete scsi 5:0:0:0: Direct-Access LGE Android Platform 0000 PQ: 0 ANSI: 2 Sony Ericsson 0fce sd 5:0:0:0: [sdc] Attached SCSI removable disk sd 5:0:0:0: Attached scsi generic sg4 type 0 ZTE 19D2

Korea Android Mini Seminar 26/43 OptimusOne’s Official Firmware Update

(1) * Disable USB Debugging mode (4) (5) (2)

14minutes

(3)

* Official Download : http://www.cyon.co.kr/

Korea Android Mini Seminar 27/43 fastboot command 1. fastboot : protocol used to update the flash filesystem in Android devices from a host over USB. {./mydroid/out/host//bin/}

2. Usage usage: fastboot [

3. Commands: update reflash device from update.zip flashall ‘flash boot’ + ‘flash system’ flash [ ] write a file to a flash partition erase erase a flash partition getvar display a bootloader variable boot [ ] download and boot kernel flash:raw boot [ ] create bootimage and flash it devices list all connected devices reboot reboot device normally reboot-bootloader reboot device into bootloader

4. options: -w erase userdata and cache -s specify device serial number -p specify product name -c override kernel commandline -i specify a custom USB vendor id Korea Android Mini Seminar 28/43 How to flash custom images with fastboot command

Turn on with Power button + Home key for fastboot mode. f11#>fastboot flash boot zImage_ramdisk [=boot.img] ( f11#>fastboot flash kernel zImage ) ( f11#>fastboot flash ramdisk ramdisk-uboot.img ) f11#>fastboot flash system system.img f11#>fastboot flash userdata userdata.img

*‘fastboot’ file is located in ./out/host/linux-x86/bin/fastboot directory.

Korea Android Mini Seminar 29/43 MTD(Memory Technology Device) Partition

F11 #> adb shell phone#> flash_image

usage: flash_image partition file.img phone#> phone#> phone#> cat /proc/mtd dev: size erasesize name bytes filesystem mtd0: 00600000 00020000 "boot" 6,144kb mtd1: 12200000 00020000 "/system" 296,960kb yaffs2 mtd2: 00600000 00020000 "recovery" 6,144kb mtd3: 002c0000 00020000 "/lgdrm" 2,816kb yaffs2 mtd4: 00100000 00020000 "splash" 1,024kb mtd5: 00040000 00020000 "misc" 256kb mtd6: 04000000 00020000 "/cache" 65,563kb yaffs2 mtd7: 263e0000 00020000 "/userdata" 626,560kb yaffs2

phone#> phone#> flash_image /dev/block/mtdblock2 ./system.img

Korea Android Mini Seminar 30/43 OptimusOne Linux Kernel Optimization

https://github.com/leemgs/OptimusOneKernel-KandroidCommunity

Korea Android Mini Seminar 31/43 References

● LGE Cyon Official Homepage, http://www.cyon.co.kr/

● LGE GPL Center, http://opensource.lge.com - “KU3700”

● LGE Official Blog Homepage, http://blog.lge.com

● XDA Developer Website, http://forum.xda-developers.com

● Android Git Repository, http://android.git.kernel.org

● Android Developer Homepage, http://developer.android.com

● Korea Android Technical Community, http://www.kandroid.org

● Linux Weekly News, http://www.lwn.net

Korea Android Mini Seminar 32/43 Conclusion

• A free target board for a poor embedded developers • From now, Make your custom ROM that we want to produce • You can get technical knowledge via android software rapidly • Share your experiences between phone manufacturers and open- source community for realistic win-win • Use another Linux distribution instead of easy-to-use Ubuntu to get trouble-shooting ability If you can. No pains, No gains • Closed Innovation vs. Open Innovation . Closed innovation is a paradigm that successful innovation requires control. . Open innovation is a paradigm that assumes that firms can and should use external ideas as well as internal ideas to advance their technology.

Korea Android Mini Seminar 33/43 Any Questions?

Korea Android Mini Seminar 34/43 THANKS

Korea Android Mini Seminar 35/43 Appendix

Korea Android Mini Seminar 36/43 A. Entire Flowchart to flash OptimusOne Image

* XXX.wdb C:\ProgramData\LGMOBILEAX\Phone\KU370012.wdb (Nov-19-2010, 198MB) * XXX.dll C:\ProgramData\LGMOBILEAX\Phone\KU3700(0.0.1.2).dll

KU370012.cab KU370012.wdb

e

Auto Save x

e

.

N

KU3700(0.0.1.2).dll E

-

s

l

i

t

U

-

0

0

modify 5

rename P Your Custom *.fat *.dfat , *.fls K Images

fastboot OR

Korea Android Mini Seminar 37/43 A. How to enhance Performance of MMS

S/W: Reduce the max value of SMS list from 200 to 50 for stable performance If you can...

… . ‘’’ ‘.”. . ,.` `... H/W: Dust at the bottom of . . .. left side according to hardware flaw

Korea Android Mini Seminar 38/43 A. Hidden Secret Code

*#*#4636#*#* for battery and other general setttings like GSM/CDMA - IMEI - Phone number (if known) - Current network - Ping test - Signal strength - Location (signal latency & Cell ID) - Neighboring Cell IDs - Roaming state - GSM service status - GPRS service status - Current network type - Message waiting status - Call redirect status - Call status

*#*#8255#*#* for Gtalk service monitor - Google Talk host address & port - Your Google JID (presumably Jabber ID, as GTalk is based on Jabber IIRC) - Your Device ID (this is interesting, and presumably hashed from something) - GTalk connection status - GTalk heartbeat status (presumably when it checks in to GTalk?)

Korea Android Mini Seminar 39/43 A. How to Solve User Response of contacts

* Process Information * MMS → 입력방법 → “LG입력 USER PID PPID VSIZE RSS WCHAN PC NAME 기”가 아닌 “한글키보드”선택 system 1405 1312 344920 39724 ffffffff afd0dbdc S system_server 또는 /system/app/HIME.apk app_2 1484 1312 230856 72064 ffffffff afd0eb98 S com.lge.android.hime 제거 * /system/app/HIME.apk (1484) <---- 11 threads

Source : ./packages/inputmethods/OpenWnn/src/jp/co/omronsoft/openwnn/OpenWnn.java ./packages/inputmethods/PinyinIME/src/com/android/inputmethod/pinyin/PinyinIME.java * systemserver (1405) <---- 66 threads

Source: ./Packages/Apps/Mms/Src/Com/Android/Mms/Ui/ConversationList.java * System Log Data

01-13 16:14:19.725 I/ContactsProvider( 1527): Query Uri match >> 1009 Uri >> content://com.android.contacts/contacts/235/photo 01-13 16:14:19.725 E/ContactsProvider( 1527): SELECT data15 FROM view_data data WHERE (1 AND contact_id=? AND _id=photo_id) 01-13 16:14:19.775 I/#LGIME ( 1484:com.lge.android.hime:/system/app/HIME.apk ): ### onStartInput 01-13 16:14:22.895 I/ActivityManager( 1405:system_server): Displayed activity com.android.mms(30553)/.ui.ConversationList: 3905 ms (total 3905 ms) 01-13 16:14:30.645 D/StatusBarPolicy( 1405:system_server): updateSignalStrength:false, mTotal[0]:1, mTotal[1]:11, mTotal[2]:8, mTotal[3]:5, mTotal[4]:2, mTotal[5]:0, mTotal[6]:13, mTotal[7]:10, mTotal[8]:7, mTotal[9]:4, mTotal[10]:0, mTotal[11]:13, mTotal[12]:10, mTotal[13]:7, mTotal[14]:5, mTotal[15]:0, mTotal[16]:13, mTotal[17]:10, mTotal[18]:7, mTotal[19]:5 01-13 16:14:30.645 D/StatusBarPolicy( 1405): prop get activeband is WCDMA 01-13 16:14:30.645 D/StatusBarPolicy( 1405): prop front WCDMA 01-13 16:14:30.645 D/StatusBarPolicy( 1405):Korea propcompare Android Mini front Seminar WCDMA 40/43 A. Android Applications in /system/app/

[invain@localhost tools]$ ./adb shell ls -l /system/app/*.apk -rw-r--r-- root root 2590 2010-12-23 20:24 GoogleBackupTransport.apk -rw-r--r-- root root 158097 2010-12-23 20:24 3WaySync.apk -rw-r--r-- root root 113439 2010-12-23 20:24 GoogleCalendarSyncAdapter.apk -rw-r--r-- root root 50594 2010-12-23 20:24 AccountAndSyncSettings.apk -rw-r--r-- root root 122282 2010-12-23 20:24 GoogleContactsSyncAdapter.apk -rw-r--r-- root root 227693 2010-12-23 20:24 AnalogClockWidget.apk -rw-r--r-- root root 89707 2010-12-23 20:24 GoogleFeedback.apk -rw-r--r-- root root 5686 2010-12-23 20:24 ApplicationsProvider.apk -rw-r--r-- root root 9912 2010-12-23 20:24 GooglePartnerSetup.apk -rw-r--r-- root root 1479397 2010-12-23 20:24 Blog_vc8_r1.1.2.apk -rw-r--r-- root root 622607 2010-12-23 20:24 GoogleQuickSearchBox.apk -rw-r--r-- root root 58825 2010-12-23 20:24 BookmarksWidget.apk -rw-r--r-- root root 1401398 2010-12-23 20:24 GoogleServicesFramework.apk -rw-r--r-- root root 10862 2010-12-23 20:24 BrcmBluetoothServices.apk -rw-r--r-- root root 1120708 2010-12-23 20:24 HIME.apk -rw-r--r-- root root 182222 2010-12-23 20:24 Browser.apk -rw-r--r-- root root 4081 2010-12-23 20:24 HTMLViewer.apk -rw-r--r-- root root 78960 2010-12-23 20:24 CMWifiSvc.apk -rw-r--r-- root root 1951829 2010-12-23 20:24 Helper.apk -rw-r--r-- root root 24019 2010-12-23 20:24 Calculator.apk -rw-r--r-- root root 1548939 2010-12-23 20:24 HiddenMenu.apk -rw-r--r-- root root 145226 2010-12-23 20:24 Calendar.apk -rw-r--r-- root root 259665 2010-12-23 20:24 HiddenMenuKorea.apk -rw-r--r-- root root 24503 2010-12-23 20:24 CalendarProvider.apk -rw-r--r-- root root 8819 2010-12-23 20:24 HiddenSdCard.apk -rw-r--r-- root root 422659 2010-12-23 20:24 CalendarWidget.apk -rw-r--r-- root root 62557 2010-12-23 20:24 Homeselector.apk -rw-r--r-- root root 930415 2010-12-23 20:24 CameraApp.apk -rw-r--r-- root root 1344737 2010-12-23 20:24 ImageEditor.apk -rw-r--r-- root root 10712 2010-12-23 20:24 CertInstaller.apk -rw-r--r-- root root 9151 2010-12-23 20:24 JSFontService.apk -rw-r--r-- root root 749871 2010-12-23 20:24 Contacts.apk -rw-r--r-- root root 151563 2010-12-23 20:24 KTNewsWidget.apk -rw-r--r-- root root 8655 2010-12-23 20:24 ContactsProvider.apk -rw-r--r-- root root 96754 2010-12-23 20:24 KTPackageInstaller.apk -rw-r--r-- root root 165787 2010-12-23 20:24 ContentsBoxService.apk -rw-r--r-- root root 1934151 2010-12-23 20:24 KTShowAppStore.apk -rw-r--r-- root root 3628 2010-12-23 20:24 DefaultContainerService.apk -rw-r--r-- root root 636656 2010-12-23 20:24 KTShowCustomer.apk -rw-r--r-- root root 143661 2010-12-23 20:24 DeskClock.apk -rw-r--r-- root root 156684 2010-12-23 20:24 KTStockWidget.apk -rw-r--r-- root root 53004 2010-12-23 20:24 DigitalAlarmWidget.apk -rw-r--r-- root root 3333122 2010-12-23 20:24 KTWeatherWidget.apk -rw-r--r-- root root 810730 2010-12-23 20:24 DioDict.apk -rw-r--r-- root root 251552 2010-12-23 20:24 KT_Cm_ex.apk -rw-r--r-- root root 8829 2010-12-23 20:24 DownloadProvider.apk -rw-r--r-- root root 1096668 2010-12-23 20:24 KoreanIME.apk -rw-r--r-- root root 4597 2010-12-23 20:24 DrmProvider.apk -rw-r--r-- root root 21840 2010-12-23 20:24 KtUcaProvider.apk -rw-r--r-- root root 8756 2010-12-23 20:24 DunServer.apk -rw-r--r-- root root 333360 2010-12-23 20:24 Email.apk -rw-r--r-- root root 2063494 2010-12-23 20:24 Facebook.apk -rw-r--r-- root root 7056 2010-12-23 20:24 FlexProvider.apk -rw-r--r-- root root 28034 2010-12-23 20:24 Fonts.apk -rw-r--r-- root root 219107 2010-12-23 20:24 Gallery3D.apk -rw-r--r-- root root 764397 2010-12-23 20:24 GenieWidget.apk -rw-r--r-- root root 1621393 2010-12-23 20:24 Gmail.apk

Korea Android Mini Seminar 41/43 A. Android Applications in /system/app/ ( & /data/app/)

-rw-r--r-- root root 846206 2010-12-23 20:24 LGCenterApp.apk -rw-r--r-- root root 1531347 2010-12-23 20:24 TDMB.apk -rw-r--r-- root root 62298 2010-12-23 20:24 LGCommon.apk -rw-r--r-- root root 811350 2010-12-23 20:24 Talk.apk -rw-r--r-- root root 15401 2010-12-23 20:24 LGDebug.apk -rw-r--r-- root root 7414 2010-12-23 20:24 TelephonyProvider.apk -rw-r--r-- root root 24652 2010-12-23 20:24 LGEDATAProcess.apk -rw-r--r-- root root 7868 2010-12-23 20:24 TtsService.apk -rw-r--r-- root root 173620 2010-12-23 20:24 LGESettings.apk -rw-r--r-- root root 1821099 2010-12-23 20:24 Twitter.apk -rw-r--r-- root root 5232440 2010-12-23 20:24 LGHome.apk -rw-r--r-- root root 2734 2010-12-23 20:24 UserDictionaryProvider.apk -rw-r--r-- root root 3783 2010-12-23 20:24 LGLockProvider.apk -rw-r--r-- root root 1529836 2010-12-23 20:24 Vending.apk -rw-r--r-- root root 157658 2010-12-23 20:24 LGMemo.apk -rw-r--r-- root root 127882 2010-12-23 20:24 VisualizationWallpapers.apk -rw-r--r-- root root 679942 2010-12-23 20:24 LGMetro.apk -rw-r--r-- root root 1247280 2010-12-23 20:24 VoiceSearch.apk -rw-r--r-- root root 16845 2010-12-23 20:24 LGOnScreenPhone.apk -rw-r--r-- root root 6065 2010-12-23 20:24 VpnServices.apk -rw-r--r-- root root 172548 2010-12-23 20:24 LGRSSReader.apk -rw-r--r-- root root 44226 2010-12-23 20:24 WapService.apk -rw-r--r-- root root 104919 2010-12-23 20:24 LGSetupWizard.apk -rw-r--r-- root root 4372936 2010-12-23 20:24 WorldClock.apk -rw-r--r-- root root 2046890 2010-12-23 20:24 LiveWallpapers.apk -rw-r--r-- root root 543428 2010-12-23 20:24 WorldClockWidget.apk -rw-r--r-- root root 15047 2010-12-23 20:24 LiveWallpapersPicker.apk -rw-r--r-- root root 788998 2010-12-23 20:24 YouTube.apk -rw-r--r-- root root 203543 2010-12-23 20:24 MagicSmokeWallpapers.apk -rw-r--r-- root root 6173858 2010-12-23 20:24 com.kt.res.apk -rw-r--r-- root root 4947009 2010-12-23 20:24 Maps.apk -rw-r--r-- root root 256224 2010-12-23 20:24 iwlan.apk -rw-r--r-- root root 8921 2010-12-23 20:24 MarketUpdater.apk -rw-r--r-- root root 81746 2010-12-23 20:24 lgeVideoPlayer.apk -rw-r--r-- root root 1680851 2010-12-23 20:24 Me2day_v1.2.9.apk -rw-r--r-- root root 1506048 2010-12-23 20:24 nDrive_VC9_R1.1.3-nodebug_mp3fix.apk -rw-r--r-- root root 9597 2010-12-23 20:24 MediaProvider.apk -rw-r--r-- root root 4907728 2010-12-23 20:24 thinkdroid.apk -rw-r--r-- root root 301058 2010-12-23 20:24 MediaUploader.apk -rw-r--r-- root root 4260770 2010-12-23 20:24 zoobreaker.apk -rw-r--r-- root root 164431 2010-12-23 20:24 MemoWidget.apk -rw-r--r-- root root 517812 2010-12-23 20:24 Mms.apk -rw-r--r-- root root 32340 2010-12-23 20:24 MmsHiddenMenu.apk [invain@localhost tools]$ ./adb shell ls -l /data/app -rw-r--r-- root root 669257 2010-12-23 20:24 MoviePlayer.apk -rw-r--r-- system system 2295504 2011-01-21 com.metago.astro-1.apk -rw-r--r-- root root 217022 2010-12-23 20:24 Music.apk -rw-r--r-- system system 3431558 2011-01-21 com.olaworks.scansearch-1.apk -rw-r--r-- root root 12340 2010-12-23 20:24 NetworkLocation.apk -rw-r--r-- system system 1506737 2011-01-21 com.nhn.android.ndrive-1.apk -rw-r--r-- root root 95896 2010-12-23 20:24 OPP.apk -rw-r--r-- system system 1860411 2011-01-21 com.google.android.gm-1.apk -rw-r--r-- root root 131796 2010-12-23 20:24 OTA.apk -rw-r--r-- system system 1847872 2011-01-21 com.android.vending-1.apk -rw-r--r-- root root 17861 2010-12-23 20:24 PackageInstaller.apk -rw-r--r-- system system 834075 2011-01-21 com.google.android.youtube-1.apk -rw-r--r-- root root 722445 2010-12-23 20:24 Phone.apk [invain@localhost tools]$ -rw-r--r-- root root 7011 2010-12-23 20:24 PicoTts.apk -rw-r--r-- root root 333728 2010-12-23 20:24 PowerOff.apk -rw-r--r-- root root 41521 2010-12-23 20:24 Protips.apk -rw-r--r-- root root 2722 2010-12-23 20:24 Provision.apk -rw-r--r-- root root 3429225 2010-12-23 20:24 ScanSearch.apk -rw-r--r-- root root 952970 2010-12-23 20:24 Settings.apk -rw-r--r-- root root 16644 2010-12-23 20:24 SettingsProvider.apk -rw-r--r-- root root 6304885 2010-12-23 20:24 SkyPirates.apk -rw-r--r-- root root 2010250 2010-12-23 20:24 SmartReader.apk -rw-r--r-- root root 302453 2010-12-23 20:24 SoundRecorder.apk -rw-r--r-- root root 17449 2010-12-23 20:24 Stk.apk -rw-r--r-- root root 288914 2010-12-23 20:24 Street.apk

Korea Android Mini Seminar 42/43 A. *.odex files in /system/app/

[invain@localhost tools]$ ./adb shell ls -l /system/app/*.odex -rw-r--r-- root root 47200 2010-12-23 20:24 LGOnScreenPhone.odex -rw-r--r-- root root 1000736 2010-12-23 20:24 3WaySync.odex -rw-r--r-- root root 119664 2010-12-23 20:24 LGRSSReader.odex -rw-r--r-- root root 37800 2010-12-23 20:24 AccountAndSyncSettings.odex -rw-r--r-- root root 9760 2010-12-23 20:24 LGSetupWizard.odex -rw-r--r-- root root 13456 2010-12-23 20:24 AnalogClockWidget.odex -rw-r--r-- root root 68936 2010-12-23 20:24 LiveWallpapers.odex -rw-r--r-- root root 19824 2010-12-23 20:24 ApplicationsProvider.odex -rw-r--r-- root root 18632 2010-12-23 20:24 LiveWallpapersPicker.odex -rw-r--r-- root root 33400 2010-12-23 20:24 BookmarksWidget.odex -rw-r--r-- root root 21424 2010-12-23 20:24 MagicSmokeWallpapers.odex -rw-r--r-- root root 7512 2010-12-23 20:24 BrcmBluetoothServices.odex -rw-r--r-- root root 81448 2010-12-23 20:24 MediaProvider.odex -rw-r--r-- root root 305568 2010-12-23 20:24 Browser.odex -rw-r--r-- root root 69984 2010-12-23 20:24 MemoWidget.odex -rw-r--r-- root root 87776 2010-12-23 20:24 Calculator.odex -rw-r--r-- root root 966856 2010-12-23 20:24 Mms.odex -rw-r--r-- root root 371536 2010-12-23 20:24 Calendar.odex -rw-r--r-- root root 25648 2010-12-23 20:24 MmsHiddenMenu.odex -rw-r--r-- root root 185912 2010-12-23 20:24 CalendarProvider.odex -rw-r--r-- root root 48856 2010-12-23 20:24 MoviePlayer.odex -rw-r--r-- root root 53848 2010-12-23 20:24 CalendarWidget.odex -rw-r--r-- root root 260904 2010-12-23 20:24 Music.odex -rw-r--r-- root root 350432 2010-12-23 20:24 CameraApp.odex -rw-r--r-- root root 221416 2010-12-23 20:24 NetworkLocation.odex -rw-r--r-- root root 34688 2010-12-23 20:24 CertInstaller.odex -rw-r--r-- root root 324856 2010-12-23 20:24 OPP.odex -rw-r--r-- root root 920952 2010-12-23 20:24 Contacts.odex -rw-r--r-- root root 50080 2010-12-23 20:24 OTA.odex -rw-r--r-- root root 343760 2010-12-23 20:24 ContactsProvider.odex -rw-r--r-- root root 25384 2010-12-23 20:24 PackageInstaller.odex -rw-r--r-- root root 12328 2010-12-23 20:24 DefaultContainerService.odex -rw-r--r-- root root 838032 2010-12-23 20:24 Phone.odex -rw-r--r-- root root 90440 2010-12-23 20:24 DeskClock.odex -rw-r--r-- root root 12408 2010-12-23 20:24 PicoTts.odex -rw-r--r-- root root 20264 2010-12-23 20:24 DigitalAlarmWidget.odex -rw-r--r-- root root 4832 2010-12-23 20:24 PowerOff.odex -rw-r--r-- root root 90272 2010-12-23 20:24 DownloadProvider.odex -rw-r--r-- root root 5776 2010-12-23 20:24 Protips.odex -rw-r--r-- root root 12600 2010-12-23 20:24 DrmProvider.odex -rw-r--r-- root root 1704 2010-12-23 20:24 Provision.odex -rw-r--r-- root root 11464 2010-12-23 20:24 DunServer.odex -rw-r--r-- root root 713824 2010-12-23 20:24 Settings.odex -rw-r--r-- root root 1173712 2010-12-23 20:24 Email.odex -rw-r--r-- root root 52168 2010-12-23 20:24 SettingsProvider.odex -rw-r--r-- root root 4336 2010-12-23 20:24 FlexProvider.odex -rw-r--r-- root root 138816 2010-12-23 20:24 SoundRecorder.odex -rw-r--r-- root root 516080 2010-12-23 20:24 Gallery3D.odex -rw-r--r-- root root 50488 2010-12-23 20:24 Stk.odex -rw-r--r-- root root 72864 2010-12-23 20:24 GoogleBackupTransport.odex -rw-r--r-- root root 153408 2010-12-23 20:24 TDMB.odex -rw-r--r-- root root 6512 2010-12-23 20:24 HTMLViewer.odex -rw-r--r-- root root 127784 2010-12-23 20:24 TelephonyProvider.odex -rw-r--r-- root root 638928 2010-12-23 20:24 HiddenMenu.odex -rw-r--r-- root root 35920 2010-12-23 20:24 TtsService.odex -rw-r--r-- root root 471192 2010-12-23 20:24 HiddenMenuKorea.odex -rw-r--r-- root root 14816 2010-12-23 20:24 UserDictionaryProvider.odex -rw-r--r-- root root 7640 2010-12-23 20:24 HiddenSdCard.odex -rw-r--r-- root root 24880 2010-12-23 20:24 VisualizationWallpapers.odex -rw-r--r-- root root 14648 2010-12-23 20:24 Homeselector.odex -rw-r--r-- root root 29776 2010-12-23 20:24 VpnServices.odex -rw-r--r-- root root 301224 2010-12-23 20:24 ImageEditor.odex -rw-r--r-- root root 172704 2010-12-23 20:24 WapService.odex -rw-r--r-- root root 5384 2010-12-23 20:24 JSFontService.odex -rw-r--r-- root root 92072 2010-12-23 20:24 WorldClock.odex -rw-r--r-- root root 57992 2010-12-23 20:24 KTNewsWidget.odex -rw-r--r-- root root 68024 2010-12-23 20:24 WorldClockWidget.odex -rw-r--r-- root root 47968 2010-12-23 20:24 KTStockWidget.odex -rw-r--r-- root root 129064 2010-12-23 20:24 lgeVideoPlayer.odex -rw-r--r-- root root 62840 2010-12-23 20:24 KTWeatherWidget.odex [invain@localhost tools]$ -rw-r--r-- root root 30096 2010-12-23 20:24 LGCommon.odex -rw-r--r-- root root 31592 2010-12-23 20:24 LGDebug.odex -rw-r--r-- root root 36216 2010-12-23 20:24 LGEDATAProcess.odex -rw-r--r-- root root 168224 2010-12-23 20:24 LGESettings.odex -rw-r--r-- root root 306040 2010-12-23 20:24 LGHome.odex -rw-r--r-- root root 11632 2010-12-23 20:24 LGLockProvider.odex -rw-r--r-- root root 93328 2010-12-23 20:24 LGMemo.odex

Korea Android Mini Seminar 43/43