Howdy Everyone!
Here's my quick guide to compiling Android for the Optimus G Pro for ATT.
Basic Reference
For reference, this phone's codename is "geefhd" per the stock boot.img, however the kernel defconfig is "gkatt_bcm".
Simplicity sake dictates that I would like to use the kernel defconfig's name as the device codename.
From here on out, I'd like to refer to this phone in code as gkatt, yet we'll call the kernel source dir geefhd.
Prerequisites
Building Android for this phone requires quite a bit of familiarity with the Android build system. If you are unfamiliar with things like makefiles and bash, I do not recommend trying this, as you'll pull out more of your hair than you can afford to lose.
That said, I'd recommend you have at least repo installed, or in your $PATH variable to make this guide a little easier to follow.
You also need to have the build utilities installed. See the CyanogenMod wiki for the build dependencies and how to install them.
Getting your tree set up
Well, it ain't Christmas, but let's put up the tree anyway.
For this guide, I'm going to assume you're like me, and you put all your Android projects in ~/android/.
Let's begin.
Code:
mkdir -p ~/android/cm-10.1/
cd ~/android/cm-10.1/
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
repo sync
Now after a few hours, you'll have a empty tree set up. Let's decorate!
Getting the device repos set up
Once you have the basic CM skeleton in place, we need to add our device support files.
Code:
mkdir -p ~/android/cm-10.1/device/lge
cd ~/android/cm-10.1/device/lge
git clone -b cm-10.1 https://github.com/TeamLGOG/android_device_lge_gee-common.git gee-common
git clone https://github.com/thecubed/android_device_lge_gkatt.git gkatt
Congrats. Now you have the Android side of things ready, however you're not fully ready to start building-- you need a kernel!
Getting the kernel repos ready
Next up: kernel.
Code:
mkdir -p ~/android/cm-10.1/kernel/lge
cd ~/android/cm-10.1/kernel/lge
git clone https://github.com/thecubed/android_kernel_lge_geefhd.git geefhd
You should now have a nice folder containing the kernel and everything you need to build it.
Great! What do I do with this?
You now have two options -- do you want to build Android AND a kernel, or just a kernel?
Let's assume you want to build a kernel only first.
Code:
cd ~/android/cm-10.1/kernel/lge/geefhd
. envsetup.sh
Now you'll see some neat text from my setup script, it'll tell you what commands it just added to your shell and how to use them.
To build a kernel do this:
Code:
make mrproper
make gkatt_bcm-perf_defconfig
make zImage
Then you can look in arch/arm/boot for a file called zImage, which is the kernel itself, ready to be used and abused.
Once you're done and want to clean up, just run make clean or make mrproper to erase all tracks of ever building.
Keep in mind, "mrproper" erases your ".config" file, so before you can build again, you have to issue "make gkatt_bcm-perf_defconfig".
My envsetup script will warn you of that, just incase you forget
Now, let's assume you want to build an Android recovery image!
Code:
cd ~/android/cm-10.1/
. build/envsetup.sh
lunch cm_gkatt-userdebug
The environment is now ready for you to build...
Code:
mka recoveryimage
In about 10 mins you'll have a full recovery.img in $OUT.
The neat thing about this is it builds the kernel inline with your build -- so you build a recovery AND a kernel at the same time.
This will save you a LOT of time testing kernels, since you don't have to manually unpack and repack the boot image after modifying the kernel.
To see your shiny new recovery.img file:
Code:
cd $OUT
KEEP IN MIND you CANNOT flash these images! Flashing them will result in a security error!
You can only fastboot boot these images. I'll post fastboot instructions shortly.
How do I get help??
Well, first things first, ask on IRC.
I'm nearly always around on Freenode. Join #lg-optimus-g and ask if I'm around.
I go by the name IOMonster on IRC. When I'm at work, I'm IOMonster_work.
Please don't just ask to ask a question, ask your full question.
Don't PM me unless you ask first, it's weird to get 20 PM windows open on my IRC client and not have any idea who is who or what they want... basic courtesy please
If by chance/miracle I'm not on IRC, post here. Again, I will not answer questions related to this via PM on XDA. I like answering things publicly so that others can read the answer. Google doesn't index PM's (yet, at least haha), so it doesn't do anyone any good to help you over PM unless it's something private.
I <3 you so much, how do I show my love?
You are so kind
I most definitely do not expect donations of any kind, however they are appreciated a lot.
I purchased this phone off-contract just to get it unlocked, if you are a kind soul and would like to send me a token of your appreciation I would love you forever.
XDA has a neat "Donate to me" button that should be on the left side of this page under my name. Donations go to purchasing new hardware to work on and other neat stuff, so they're always appreciated.
Let me know if I missed anything!
Awesome work! How can we get the vendor files to build cm-10.1? For now, could we use the same as the OG ?
apascual89 said:
Awesome work! How can we get the vendor files to build cm-10.1? For now, could we use the same as the OG ?
Click to expand...
Click to collapse
Check http://github.com/TeamLGOG
The vendor files there should work fine for this device, minus the wlan props and any modem/DSP related firmware.
This phone is *very* similar to the OG/N4, it's just got a larger screen and different wlan chip (Broadcom instead of Qualcomm)
However, all that said, I've yet to build it for the phone-- I'm focused on getting it more unlocked right now.
thecubed said:
Check http://github.com/TeamLGOG
The vendor files there should work fine for this device, minus the wlan props and any modem/DSP related firmware.
This phone is *very* similar to the OG/N4, it's just got a larger screen and different wlan chip (Broadcom instead of Qualcomm)
However, all that said, I've yet to build it for the phone-- I'm focused on getting it more unlocked right now.
Click to expand...
Click to collapse
Hi there
I am interest in building E988 kernel which is international version of Optimus G Pro
would you mind tell me how to tweak the E988 source on this development ?
E988 is using gku-perf_defconfig
E988 is using different wlan chip vs ATT
hkfriends said:
Hi there
I am interest in building E988 kernel which is international version of Optimus G Pro
would you mind tell me how to tweak the E988 source on this development ?
E988 is using gku-perf_defconfig
E988 is using different wlan chip vs ATT
Click to expand...
Click to collapse
Have you tried gku_bcm-perf_defconfig ?
I have a feeling that might do the trick
thecubed said:
Have you tried gku_bcm-perf_defconfig ?
I have a feeling that might do the trick
Click to expand...
Click to collapse
yes, i tested in E988 source.. and it will hanged and stuck in fastboot screen (as last time, I try to compile BCM config (want a trick for a wrong driver)
anyway.. i will clone your kernel source first to see and will try using your source to compile with "gku-perf_defconfig"
I believe the E980 and E988 is the same kernel source, only config is different (i hope)
Edit: (Testing Case)
1) Using your source code and with gku-perf_defconfig =>
Fastboot boot <myboot.img> => reboot => then back to Fastboot mode
It seems wcnss_wlan (Qualcomm) has issue again
https://mega.co.nz/#!VI4S3RgK!SpgWgX5mUXrQFpYeE9oZlXbyVkImsIYz6J_CWWe9X5M
[ 5.528704 / 01-18 07:39:57.262] wcnss_wlan wcnss_wlan.0: WCNSS Power-up failed.
[ 5.535174 / 01-18 07:39:57.272] init: cannot find '/system/etc/install-recovery.sh', disabling 'flash_recovery'
[ 5.535449 / 01-18 07:39:57.272] init: cannot find '/system/bin/libbroadcast_server', disabling 'broadcast'
[ 5.536303 / 01-18 07:39:57.272] init: cannot find '/system/xbin/spritebud', disabling 'spritebud'
[ 5.536365 / 01-18 07:39:57.272] init: cannot find '/system/bin/rf4ce', disabling 'rf4ce'
[ 5.547504 / 01-18 07:39:57.282] wcnss_wlan triggered by userspace
2) Using your source code and with gku_bcm-perf_defconfig =>
Fastboot boot <myboot.img> => hanged => need press power button for 3sec and re-start in fastboot mode
then I fash back the stock image and then try to get last_kmsg...
but I get nothing due to hanged (i think)
[email protected]:/ # cat /proc/last_kmsg > /sdcard/last_kmsg.txt
cat /proc/last_kmsg > /sdcard/last_kmsg.txt
/proc/last_kmsg: No such file or directory
thanks for all your work only one question how to get into fast boot
Got a small error but duno how to fix it here a build log\
build/core/Makefile:419: *** BOARD_FORCE_RAMDISK_ADDRESS has been deprecated. Use BOARD_MKBOOTIMG_ARGS.. Stop.
[email protected]:~/android/cm-10.1#
that's when tring to build recovery
This is when tring to build kernel
MK_FW firmware/audience-es325-fw.bin.gen.S
make[1]: *** No rule to make target `firmware/audience-es325-fw.bin', needed by `firmware/audience-es325-fw.bin.gen.o'. Stop.
make: *** [firmware] Error 2
Gotroot said:
Got a small error but duno how to fix it here a build log\
build/core/Makefile:419: *** BOARD_FORCE_RAMDISK_ADDRESS has been deprecated. Use BOARD_MKBOOTIMG_ARGS.. Stop.
[email protected]:~/android/cm-10.1#
that's when tring to build recovery
This is when tring to build kernel
MK_FW firmware/audience-es325-fw.bin.gen.S
make[1]: *** No rule to make target `firmware/audience-es325-fw.bin', needed by `firmware/audience-es325-fw.bin.gen.o'. Stop.
make: *** [firmware] Error 2
Click to expand...
Click to collapse
I got that same error this morning. Had to leave for work so couldn't really look into it.
Sent from my GT-I9505G using Tapatalk 4 Beta
apascual89 said:
I got that same error this morning. Had to leave for work so couldn't really look into it.
Sent from my GT-I9505G using Tapatalk 4 Beta
Click to expand...
Click to collapse
So, all that is because I just realized I didn't sync CM10.1, but just CM10 to my buildbox...
I'll update it all today, I just realized that when I set up my build dir I just did repo init -u .. -b jellybean instead of cm-10.1
oops!
Anyway, easy fix, and I'll have it out soon-ish today.
thecubed said:
So, all that is because I just realized I didn't sync CM10.1, but just CM10 to my buildbox...
I'll update it all today, I just realized that when I set up my build dir I just did repo init -u .. -b jellybean instead of cm-10.1
oops!
Anyway, easy fix, and I'll have it out soon-ish today.
Click to expand...
Click to collapse
No rush man, I don't want to take time away from you unlocking this beast!
Lmfao awesome!!!!!!
DUDE LOL still throwing back error after redoing my folers heres the error
When making recovery
build/core/base_rules.mk:130: *** gee-common/recovery: MODULE.TARGET.STATIC_LIBRARIES.librecovery_ui_geehrc already defined by device/lge/gee-common/recovery. Stop.
When making kernel
MK_FW firmware/audience-es325-fw.bin.gen.S
make[1]: *** No rule to make target `firmware/audience-es325-fw.bin', needed by `firmware/audience-es325-fw.bin.gen.o'. Stop.
make: *** [firmware] Error 2
I just pushed my (very minor) only correction needed to make this build with cm-10.1 sources.
Provided you have your build environment set up correctly, everything should build now (for recovery at least)
thecubed said:
I just pushed my (very minor) only correction needed to make this build with cm-10.1 sources.
Provided you have your build environment set up correctly, everything should build now (for recovery at least)
Click to expand...
Click to collapse
I tried the mka bootimage option and it gives me the following error:
LD drivers/usb/storage/ums-alauda.o
LD drivers/usb/storage/ums-cypress.o
LD drivers/usb/storage/ums-datafab.o
LD drivers/usb/storage/ums-freecom.o
LD drivers/usb/storage/ums-isd200.o
LD drivers/usb/storage/ums-jumpshot.o
LD drivers/usb/storage/ums-karma.o
LD drivers/usb/storage/ums-onetouch.o
LD drivers/usb/storage/ums-realtek.o
LD drivers/usb/storage/ums-sddr09.o
LD drivers/usb/storage/ums-sddr55.o
LD drivers/usb/storage/ums-usbat.o
LD drivers/usb/storage/built-in.o
LD drivers/usb/built-in.o
LD drivers/built-in.o
make[1]: *** [sub-make] Error 2
make[1]: Leaving directory `/home/apascual89/android/cm-10.1/kernel/lge/geefhd'
make: *** [TARGET_KERNEL_BINARIES] Error 2
make: *** Waiting for unfinished jobs....
[email protected]:~/android/cm-10.1$
In the past I remember seeing that if I was trying to build with an unsupported toolchain.
I'm having a small issue as well so I killed ny whole env... and started from scratch
Sent from my LG-E980 using xda premium
I tried now to build the zImage and got the following error:
MK_FW firmware/audience-es325-fw.bin.gen.S
make[1]: *** No rule to make target `firmware/audience-es325-fw.bin', needed by `firmware/audience-es325-fw.bin.gen.o'. Stop.
make: *** [firmware] Error 2
[email protected]:~/android/cm-10.1/kernel/lge/geefhd$
Just reporting to let you know.
Ok even after thrown my env. away and starting from scratch im still getting the same error
make[1]: *** No rule to make target `firmware/audience-es325-fw.bin', needed by `firmware/audience-es325-fw.bin.gen.o'. Stop.
make: *** [firmware] Error 2
I'm not sure why you guys are getting those errors. I'm able to build the kernel just fine...
Maybe my repo is missing something that I have locally? I'll try re-syncing everything to a new dir and testing again later.
Awesome you got my error log just let me know I will keep hitting it I have nun but time....
Thanks fir the work
Sent from my LG-E980 using xda premium
Hello!
I need to say this first : i'm a newbie at development but i want to learn.
I succesfully managed to compile CM9 from CyanogenMod sources but i have some problems trying to compile mike's cm10.1 kernel.I followed his tutorial changing smultron to zeus in terminal,it gave me something about trying dependecies only and then moved on(tried with smultron too and same message) .It compiles for about half hour and then it says :
Code:
host StaticLib: libLLVMCore (/home/filip/android/system/out/host/linux-x86/obj/STATIC_LIBRARIES/libLLVMCore_intermediates/libLLVMCore.a)
make[1]: *** [sub-make] Error 2
make[1]: Leaving directory `/home/filip/android/system/kernel/semc/msm7x30'
make: *** [TARGET_KERNEL_BINARIES] Error 2
make: *** Waiting for unfinished jobs....
[email protected]:~/android/system$
The changes I have made to the kernel where to change the input drivers from him with the input drivers from DoomLord 3.4 kernel for msm7x30 zeus branch , but I don't think this is the main reason of this error.
EDIT: Compiled succesfully with the input folder from mike's sources.Any idea how to resolve the problem with the input folder from DoomLord ? in his git he says the the touchscreen problem is resolved.
EDIT 2: New error:
Code:
scripts/kconfig/conf --silentoldconfig Kconfig
GEN /home/filip/android/system/out/target/product/zeus/obj/KERNEL_OBJ/Makefile
CHK include/linux/version.h
Using /home/filip/android/system/kernel/semc/msm7x30 as source for kernel
CHK include/generated/utsrelease.h
make[3]: `include/generated/mach-types.h' is up to date.
CALL /home/filip/android/system/kernel/semc/msm7x30/scripts/checksyscalls.sh
CHK include/generated/compile.h
GZIP kernel/config_data.gz
CHK kernel/config_data.h
UPD kernel/config_data.h
CC kernel/configs.o
CC drivers/input/touchscreen/cy8ctma300_touch.o
LD kernel/built-in.o
/home/filip/android/system/kernel/semc/msm7x30/drivers/input/touchscreen/cy8ctma300_touch.c:185:28: error: expected ')' before 'int'
/home/filip/android/system/kernel/semc/msm7x30/drivers/input/touchscreen/cy8ctma300_touch.c:186:32: error: expected ')' before string constant
/home/filip/android/system/kernel/semc/msm7x30/drivers/input/touchscreen/cy8ctma300_touch.c: In function 'perform_reset':
/home/filip/android/system/kernel/semc/msm7x30/drivers/input/touchscreen/cy8ctma300_touch.c:488:2: error: implicit declaration of function 'gpio_set_value' [-Werror=implicit-function-declaration]
/home/filip/android/system/kernel/semc/msm7x30/drivers/input/touchscreen/cy8ctma300_touch.c:492:2: error: implicit declaration of function 'gpio_get_value' [-Werror=implicit-function-declaration]
/home/filip/android/system/kernel/semc/msm7x30/drivers/input/touchscreen/cy8ctma300_touch.c: At top level:
/home/filip/android/system/kernel/semc/msm7x30/drivers/input/touchscreen/cy8ctma300_touch.c:1104:13: error: 'THIS_MODULE' undeclared here (not in a function)
/home/filip/android/system/kernel/semc/msm7x30/drivers/input/touchscreen/cy8ctma300_touch.c:1106:2: error: unknown field 'ioctl' specified in initializer
/home/filip/android/system/kernel/semc/msm7x30/drivers/input/touchscreen/cy8ctma300_touch.c:1106:2: warning: initialization from incompatible pointer type [enabled by default]
error, forbidden warning: cy8ctma300_touch.c:1106
make[5]: *** [drivers/input/touchscreen/cy8ctma300_touch.o] Error 1
make[4]: *** [drivers/input/touchscreen] Error 2
make[3]: *** [drivers/input] Error 2
make[2]: *** [drivers] Error 2
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [sub-make] Error 2
make[1]: Leaving directory `/home/filip/android/system/kernel/semc/msm7x30'
make: *** [TARGET_KERNEL_BINARIES] Error 2
I attached cy8ctma300_touch.c
sorry.. of topic.. but thanks.. thanks for Trying .. for yourself and Us.. .. I hope someone can answer that.
I tried to compile kernel with cy8ctma300_touch.c from Wedgess's 2.6 kernel from
[DEV][WIP][PLAY] cm 10.1 & pac 4.2 [ROM][KERNEL][4.2.2][UPDATED 21-03-13] and i got exactly same error
As you said, CM10.1 compile without errors with it's own cy8ctma300_touch.c
I'll look into it as much my limited knowledge about linux/kernel things alow me (noob here also, this was my very first rom/kernel compiled from source )
Bakisha said:
I tried to compile kernel with cy8ctma300_touch.c from Wedgess's 2.6 kernel from
[DEV][WIP][PLAY] cm 10.1 & pac 4.2 [ROM][KERNEL][4.2.2][UPDATED 21-03-13] and i got exactly same error
As you said, CM10.1 compile without errors with it's own cy8ctma300_touch.c
I'll look into it as much my limited knowledge about linux/kernel things alow me (noob here also, this was my very first rom/kernel compiled from source )
Click to expand...
Click to collapse
I also want to get into Kernel Compiling.. and ROM compiling of course.. can anyone suggest me is my computer specs enough for compiling and Dual Booting Windows 8 and Ubuntu.. (should I even use Ubuntu ?? or any other distro.. plz recommend) .
My Computer Specs are
4GB Ram
Intel Core 2 Duo CPU T9300 @ 2.50 Ghz
650gb HD
Windows 8 Pro 64 Bit.
yes , it's enough . I don't know if you could resolve anything but you can try . there are a lots of guides on the net about how to do this.
Bakisha said:
I tried to compile kernel with cy8ctma300_touch.c from Wedgess's 2.6 kernel from
[DEV][WIP][PLAY] cm 10.1 & pac 4.2 [ROM][KERNEL][4.2.2][UPDATED 21-03-13] and i got exactly same error
As you said, CM10.1 compile without errors with it's own cy8ctma300_touch.c
I'll look into it as much my limited knowledge about linux/kernel things alow me (noob here also, this was my very first rom/kernel compiled from source )
Click to expand...
Click to collapse
ChunkFlip said:
yes , it's enough . I don't know if you could resolve anything but you can try . there are a lots of guides on the net about how to do this.
Click to expand...
Click to collapse
what distro to use.. lubuntu,, xubuntu.. Ubuntu.. ? which is most stable for android compiling.. and I might start using it as daily driver besides Windows as well.. (don't think so., but maybe.. hehe)
saqibkhan said:
what distro to use.. lubuntu,, xubuntu.. Ubuntu.. ? which is most stable for android compiling.. and I might start using it as daily driver besides Windows as well.. (don't think so., but maybe.. hehe)
Click to expand...
Click to collapse
I'm using Ubuntu 13.10 x64 in Virtualbox. I firstly tried 12.04 LTS but it gave me nothing but trouble in virtualbox.
As in OP, i followed Mike's guide to build from source
As for initial setting up ubuntu i followed this guide and lot of "googling" (basicly, whatever error i get, i copy that text and paste it to google search).
But be warned, source is at least 15GB, it can take some time to download. Plus, compiling time (at least for me) is 3 or 4 hours (if building only kernel, it's shorter, about half an hour)
My progress is very slow, don't have much time for testing, but so far i found that maybe error is not in Mike's cy8ctma300_touch.c but rather difference in kernel between 2.6 and 3.4 . For example, it compile ok if in line 1106 in wedgess cy8ctma300_touch.c i enter ".unlocked_ioctl" instead of just ".ioctl" but touchscreen don't work still. In Mike's kernel there is already line with ".unlocked_ioctl" so it don't give error when compiling.
I still have to try something i found on web, but i don't know will i be able to do it this weekend...
Bakisha said:
I'm using Ubuntu 13.10 x64 in Virtualbox. I firstly tried 12.04 LTS but it gave me nothing but trouble in virtualbox.
As in OP, i followed Mike's guide to build from source
As for initial setting up ubuntu i followed this guide and lot of "googling" (basicly, whatever error i get, i copy that text and paste it to google search).
But be warned, source is at least 15GB, it can take some time to download. Plus, compiling time (at least for me) is 3 or 4 hours (if building only kernel, it's shorter, about half an hour)
My progress is very slow, don't have much time for testing, but so far i found that maybe error is not in Mike's cy8ctma300_touch.c but rather difference in kernel between 2.6 and 3.4 . For example, it compile ok if in line 1106 in wedgess cy8ctma300_touch.c i enter ".unlocked_ioctl" instead of just ".ioctl" but touchscreen don't work still. In Mike's kernel there is already line with ".unlocked_ioctl" so it don't give error when compiling.
I still have to try something i found on web, but i don't know will i be able to do it this weekend...
Click to expand...
Click to collapse
I think if Ubuntu is installed as a separate Operating system.. it would take less time to build.. 3-4 hours is tooo long.. anyways.. I am going to install it DUal boot it with Windows 8.. and start compiling then.
Hi all,
I have downloaded the sources for cm 12.1, I have already build many ROMs for htc m7, m8 and some others. Cyanogen have not released the source for htc m9 yet, however you and find a github repo with all the neccesary parts for building you himaul ROM over a CM_12.1 source. It is called Hima-Dev
I have cloned all necessary parts for building it and I have placed them into the right place. Bellow I attach a listh of what I downloaded.
The kernel
Then the common vendor propietary folder
And finally the device specific folder along with its common folder for device.
Before building I run the ./extract-files script in order to get all propietary libraries, apps and files. Then I start a building for "himaul" and everythhing works very ok. (breakfast himaul && brunch himaul)
The problem comes after install the new ROM. It raises many exceptions during boot screen. Bellow I attach some of the log messages I get.
Code:
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__htclog_init_mask" referenced by "libtime_genoff.so"...
java.lang.NullPointerException: Attempt to invoke interface method 'void android.app.IActivityManager.handleApplicationCrash(android.os.IBinder, android.app.ApplicationErrorReport$CrashInfo)' on a null object reference
My question is. Should I wait for cyanogen in order to get a stable source or is there any workout for solving this? :good: