[celoxhd][SGH-I757M][CWM Advanced Edition] PhilZ Touch - Galaxy S II HD LTE Android Development

Main thread + features + install instructions + dev support
http://forum.xda-developers.com/showthread.php?t=2201860
PhilZ Touch is a CWM Advanced Edition that adds all the features you could ever miss in CWM
It is a well proven recovery for many phones
It also adds a full touch interface a completely configurable GUI
Please give your feedback, what works, and any bug you could encounter
Read the features, and check if you are missing something
Also, do not forget to read about the powerful aroma file manager integration and double tap shortcut
Download links
Last version can be found here:
celoxhd
http://goo.im/devs/philz_touch/CWM_Advanced_Edition
Original dev supporter:
http://www.androidfilehost.com/?w=files&flid=12461
Click to expand...
Click to collapse
Huge thanks and credits to @titanic_fanatic
He ported the sources and provided all needed stuff to build it

Excellent, many thanks for all the work you put into this for us. We very much appreciate it
On the topic of bugs, I only have two (but I really don't mind at all). The screenshot works except for the resulting image is wavy coloured lines and no vibration regardless of the setting.
We've never had either, so I'm not missing them at all, but wanted to let you know.
Take care Phil
Sent from my SGH-I757M using XDA Premium 4 mobile app

titanic_fanatic said:
Excellent, many thanks for all the work you put into this for us. We very much appreciate it
On the topic of bugs, I only have two (but I really don't mind at all). The screenshot works except for the resulting image is wavy coloured lines and no vibration regardless of the setting.
We've never had either, so I'm not missing them at all, but wanted to let you know.
Take care Phil
Sent from my SGH-I757M using XDA Premium 4 mobile app
Click to expand...
Click to collapse
Added you to credits on the device page in main thread and here in OP :good:
screen shots: forget it, I should disable it once for all on new devices. Sadly, we have no working thing for most new devices. Only some Sammy and the mako did work
vibration: can you provide the path for vibrator?, it should be in kernel drivers I guess. Currently I use:
Code:
/sys/class/timed_output/vibrator/enable
We echo some msec value there and it Bzzzzz for that msec

Phil3759 said:
Added you to credits on the device page in main thread and here in OP :good:
screen shots: forget it, I should disable it once for all on new devices. Sadly, we have no working thing for most new devices. Only some Sammy and the mako did work
vibration: can you provide the path for vibrator?, it should be in kernel drivers I guess. Currently I use:
Code:
/sys/class/timed_output/vibrator/enable
We echo some msec value there and it Bzzzzz for that msec
Click to expand...
Click to collapse
That's the correct path Maybe the driver isn't loading properly... I'll see if I can get a dmesg Log when booting recovery to see if the driver actually loads
Sent from my SGH-I757M using XDA Premium 4 mobile app

Vibrator Fixed
Hey @Phil3759, I did a whole lot of investigating tonight and have figured out and fixed the vibration issue. I discovered that it was trying to load the module from /system/lib/modules/vibrator.ko. This is my roms ko file and is currently for cm10.2. The kerenel I setup for this recovery is our cm11 kernel and uses a different module (compiled against that kernel). It was trying to load the cm10.2 module from my rom into the cm11 kernel which obviously doesn't work, so I split the recovery.img added the correct module at /tmp/system/lib/modules added the necessary lines to init.recovery.qcom.rc and repackaged the kernel and new ramdisk.
I have flashed this and tested it. it works like a charm now Can you replace the version in your repo with this new one?

titanic_fanatic said:
Hey @Phil3759, I did a whole lot of investigating tonight and have figured out and fixed the vibration issue. I discovered that it was trying to load the module from /system/lib/modules/vibrator.ko. This is my roms ko file and is currently for cm10.2. The kerenel I setup for this recovery is our cm11 kernel and uses a different module (compiled against that kernel). It was trying to load the cm10.2 module from my rom into the cm11 kernel which obviously doesn't work, so I split the recovery.img added the correct module at /tmp/system/lib/modules added the necessary lines to init.recovery.qcom.rc and repackaged the kernel and new ramdisk.
I have flashed this and tested it. it works like a charm now Can you replace the version in your repo with this new one?
Click to expand...
Click to collapse
If you update your device tree, it would be even better. That way, my next updates won't be affected again

Phil3759 said:
If you update your device tree, it would be even better. That way, my next updates won't be affected again
Click to expand...
Click to collapse
I just finished updating my device tree with the necessary fixes for the vibrator to work in recovery
https://github.com/titanic-fanatic/android_device_samsung_celoxhd/commit/6f005f4045551e48adfa0ac228641bf8d6a12128
Also, not that I care, but Amarullz was able to get screenshots working in the latest AromaInstaller (Flamboyan I think). If your interested, maybe ask him what he did to get it to work. He could probably point you to the commits
Take Care

titanic_fanatic said:
I just finished updating my device tree with the necessary fixes for the vibrator to work in recovery
https://github.com/titanic-fanatic/...mmit/6f005f4045551e48adfa0ac228641bf8d6a12128
Also, not that I care, but Amarullz was able to get screenshots working in the latest AromaInstaller (Flamboyan I think). If your interested, maybe ask him what he did to get it to work. He could probably point you to the commits
Take Care
Click to expand...
Click to collapse
Looking at it quickly: why that first extra / at end of copy files?
Also, won't be cleaner to use standard path like /lib/modules?
/tmp can be wiped and modified by installers and recovery

Phil3759 said:
Looking at it quickly: why that first extra / at end of copy files?
Also, won't be cleaner to use standard path like /lib/modules?
/tmp can be wiped and modified by installers and recovery
Click to expand...
Click to collapse
The first / is because it's part of a set of chained product copy files directives:
# Ramdisk
PRODUCT_COPY_FILES += \
device/samsung/celoxhd/ramdisk/init.qcom.usb.rc:root/init.qcom.usb.rc \
# BT firmware
PRODUCT_COPY_FILES += \
device/samsung/celoxhd/firmware/bcm4330B1.hcd:system/etc/firmware/bcm4330B1.hcd \
# Needed for vibrator to work in recovery
PRODUCT_COPY_FILES += \
device/samsung/celoxhd/recovery/root/lib/modules/vibrator.ko:recovery/root/lib/modules/vibrator.ko \
device/samsung/celoxhd/recovery/root/init.recovery.qcom.rc:recovery/root/init.recovery.qcom.rc
Click to expand...
Click to collapse
I did this only to adhere to the existing pattern in my device.mk file, the one appended to the first PRODUCT_COPY_FILES was already there from when I forked the project and took that as being a set of chained commands. If this is wrong, I will change it
I definitely see your point on the /tmp dir. I here the commit that fixes that
https://github.com/titanic-fanatic/android_device_samsung_celoxhd/commit/61da6be2d60a03797ddc31c0187cc5c62bb3a97a

titanic_fanatic said:
The first / is because it's part of a set of chained product copy files directives:
I did this only to adhere to the existing pattern in my device.mk file, the one appended to the first PRODUCT_COPY_FILES was already there from when I forked the project and took that as being a set of chained commands. If this is wrong, I will change it
I definitely see your point on the /tmp dir. I here the commit that fixes that
https://github.com/titanic-fanatic/android_device_samsung_celoxhd/commit/61da6be2d60a03797ddc31c0187cc5c62bb3a97a
Click to expand...
Click to collapse
I uploaded 6.01.2 with your fixed vibrator :good:
PRODUCT_COPY_FILES:
Maybe I am wrong, but usually, in make files, only the last element has no trailing /
Code:
# Ramdisk
PRODUCT_COPY_FILES += \
device/samsung/celoxhd/ramdisk/init.qcom.usb.rc:root/init.qcom.usb.rc
xxx-yyy \
zzz-pppp\
last_one
# BT firmware
PRODUCT_COPY_FILES += \
device/samsung/celoxhd/firmware/bcm4330B1.hcd:system/etc/firmware/bcm4330B1.hcd
# Needed for vibrator to work in recovery
PRODUCT_COPY_FILES += \
device/samsung/celoxhd/recovery/root/tmp/system/lib/modules/vibrator.ko:recovery/root/tmp/system/lib/modules/vibrator.ko \
device/samsung/celoxhd/recovery/root/init.recovery.qcom.rc:recovery/root/init.recovery.qcom.rc
Also, just for info, my full gui builds need these, often in cm.mk:
Code:
TARGET_SCREEN_HEIGHT := 1280
TARGET_SCREEN_WIDTH := 720

Phil3759 said:
I uploaded 6.01.2 with your fixed vibrator :good:
PRODUCT_COPY_FILES:
Maybe I am wrong, but usually, in make files, only the last element has no trailing /
Code:
# Ramdisk
PRODUCT_COPY_FILES += \
device/samsung/celoxhd/ramdisk/init.qcom.usb.rc:root/init.qcom.usb.rc
xxx-yyy \
zzz-pppp\
last_one
# BT firmware
PRODUCT_COPY_FILES += \
device/samsung/celoxhd/firmware/bcm4330B1.hcd:system/etc/firmware/bcm4330B1.hcd
# Needed for vibrator to work in recovery
PRODUCT_COPY_FILES += \
device/samsung/celoxhd/recovery/root/tmp/system/lib/modules/vibrator.ko:recovery/root/tmp/system/lib/modules/vibrator.ko \
device/samsung/celoxhd/recovery/root/init.recovery.qcom.rc:recovery/root/init.recovery.qcom.rc
Also, just for info, my full gui builds need these, often in cm.mk:
Code:
TARGET_SCREEN_HEIGHT := 1280
TARGET_SCREEN_WIDTH := 720
Click to expand...
Click to collapse
It seems that the extra \ was introduced in our JB branch and has never been fixed. Various examples in googles repo confirm that you are correct. I have removed the extra \ and added the properties you mentioned above to the cm.mk file. Here is the relevant commit:
https://github.com/titanic-fanatic/android_device_samsung_celoxhd/commit/6ce5f482d63cd70cf64a3d1428ad2428844e23cb

Hey @Phil3759, I just downloaded and flashed the latest version. Thanks kindly for the update
I see that I made a boo boo and forgot to update the path to the vibrator in the init.recovery.qcom.rc file and so the vibrator isn't loading. I've fixed that with the following commit:
https://github.com/titanic-fanatic/android_device_samsung_celoxhd/commit/b87b3267d75a0de1bb94f68850ae6986ac4dde92
One other thing, for some reason the background is tiled 4 times as if my devices dimensions were not set correctly. I do have that set in my cm.mk file. Here was the commit for that:
https://github.com/titanic-fanatic/android_device_samsung_celoxhd/commit/6ce5f482d63cd70cf64a3d1428ad2428844e23cb
Is there somewhere else I'm supposed to specify the device screen dimensions?
Thanks again for the new version and I apologize for missing that path in the init.recovery.qcom.rc.

titanic_fanatic said:
Hey @Phil3759, I just downloaded and flashed the latest version. Thanks kindly for the update
I see that I made a boo boo and forgot to update the path to the vibrator in the init.recovery.qcom.rc file and so the vibrator isn't loading. I've fixed that with the following commit:
https://github.com/titanic-fanatic/android_device_samsung_celoxhd/commit/b87b3267d75a0de1bb94f68850ae6986ac4dde92
One other thing, for some reason the background is tiled 4 times as if my devices dimensions were not set correctly. I do have that set in my cm.mk file. Here was the commit for that:
https://github.com/titanic-fanatic/android_device_samsung_celoxhd/commit/6ce5f482d63cd70cf64a3d1428ad2428844e23cb
Is there somewhere else I'm supposed to specify the device screen dimensions?
Thanks again for the new version and I apologize for missing that path in the init.recovery.qcom.rc.
Click to expand...
Click to collapse
About background image:
I think this is the cause:
https://github.com/CyanogenMod/android_device_samsung_celox-common/blob/cm-11.0/celox-common.mk#L45
called here:
https://github.com/titanic-fanatic/...xhd/blob/philz-recovery-cm-11.0/device.mk#L37
Your cm.mk settings are overridden
Maybe just move device resolution from cm.mk to device.mk after Line 37
About the vibrator: do you need exfat through kernel modules? If yes, let me know. It is much faster than fuse. For that, you'll need to compile the kernel with samsung exfat sources. I can guide you for that
Else, link me to what exactly is needed in your kernel for the vibrator to work. If it is just a change in defconfig, I can add it and compile along exfat

Phil3759 said:
About background image:
I think this is the cause:
https://github.com/CyanogenMod/android_device_samsung_celox-common/blob/cm-11.0/celox-common.mk#L45
called here:
https://github.com/titanic-fanatic/...xhd/blob/philz-recovery-cm-11.0/device.mk#L37
Your cm.mk settings are overridden
Maybe just move device resolution from cm.mk to device.mk after Line 37
About the vibrator: do you need exfat through kernel modules? If yes, let me know. It is much faster than fuse. For that, you'll need to compile the kernel with samsung exfat sources. I can guide you for that
Else, link me to what exactly is needed in your kernel for the vibrator to work. If it is just a change in defconfig, I can add it and compile along exfat
Click to expand...
Click to collapse
I see it, and now as you've recommended I reset the values after calling celox-common.mk. The commit is here:
https://github.com/titanic-fanatic/android_device_samsung_celoxhd/commit/cd44b44b7cbb0ddb3b649ac5c4f8d5d1f51d7998
As for exfat, I will be adding this when I have some time to rebuild this kernel. We can worry about exfat for the next time you do device updates and hopefully I'll have it ready by that time. I have your main thread in my subscriptions, so I'll know when your ready to release a new version and will remind you to sync with my repo at that time
Thanks for catching that issue with screen size

titanic_fanatic said:
I see it, and now as you've recommended I reset the values after calling celox-common.mk. The commit is here:
https://github.com/titanic-fanatic/android_device_samsung_celoxhd/commit/cd44b44b7cbb0ddb3b649ac5c4f8d5d1f51d7998
As for exfat, I will be adding this when I have some time to rebuild this kernel. We can worry about exfat for the next time you do device updates and hopefully I'll have it ready by that time. I have your main thread in my subscriptions, so I'll know when your ready to release a new version and will remind you to sync with my repo at that time
Thanks for catching that issue with screen size
Click to expand...
Click to collapse
np
Let me know if you need info to add exfat
I will update with the current fixes asap

Phil3759 said:
np
Let me know if you need info to add exfat
I will update with the current fixes asap
Click to expand...
Click to collapse
Can I get a link to these fixes please when you have it ready

titanic_fanatic said:
Can I get a link to these fixes please when you have it ready
Click to expand...
Click to collapse
https://github.com/PhilZ-cwm6/GE-Ed...mmit/a8963ca853cfd88466716f8a25434d5c469a2bb9
It is just adding the exfat folder in drivers and edit the makefile with -y to have it built as static. No need to separate modules

Phil3759 said:
https://github.com/PhilZ-cwm6/GE-Ed...mmit/a8963ca853cfd88466716f8a25434d5c469a2bb9
It is just adding the exfat folder in drivers and edit the makefile with -y to have it built as static. No need to separate modules
Click to expand...
Click to collapse
Excellent. I'll add it soon, it should be a pretty quick process.
Quick question though since we are currently having some issues with random reboots in all of my latest builds of cm-11.0. My kernel was updated at some point, and that's when my builds started having random reboots. They are actually not random, but seem rather consistent.
My question is this, do you think this will affect operation in recovery? I believe the reboots are due to kernel panic from a graphics related issue but am not sure if that will only affect the rom and not recovery.
If this might affect recovery, I think I'll build it as a module so I can just add it to my device tree instead of having to update the entire zImage. This will at least give us the old working kernel with the exfat module included.
What do you think?
Sent from my SGH-I757M using XDA Premium 4 mobile app

titanic_fanatic said:
Excellent. I'll add it soon, it should be a pretty quick process.
Quick question though since we are currently having some issues with random reboots in all of my latest builds of cm-11.0. My kernel was updated at some point, and that's when my builds started having random reboots. They are actually not random, but seem rather consistent.
My question is this, do you think this will affect operation in recovery? I believe the reboots are due to kernel panic from a graphics related issue but am not sure if that will only affect the rom and not recovery.
If this might affect recovery, I think I'll build it as a module so I can just add it to my device tree instead of having to update the entire zImage. This will at least give us the old working kernel with the exfat module included.
What do you think?
Sent from my SGH-I757M using XDA Premium 4 mobile app
Click to expand...
Click to collapse
you'll end up with magic number mismatch errors
There are some hacks to force loading on mismatch, but, in my previous experience, they failed on many devices
the drivers must be compiled along the zImage
Now, why don't we drop to celox-common kernel which seems to work fine on skyrocket and other phones?

Phil3759 said:
you'll end up with magic number mismatch errors
There are some hacks to force loading on mismatch, but, in my previous experience, they failed on many devices
the drivers must be compiled along the zImage
Now, why don't we drop to celox-common kernel which seems to work fine on skyrocket and other phones?
Click to expand...
Click to collapse
It is for the most part the same kernel with the few quirks of my device. More notably is my devices display drivers are mipi s6e8aa0_720hd and had to fork the kernel to apply some fixes to that driver as it's not maintained by cm.
Hmmm. I'll be the guinea pig. I will build with the new kernel and I'll test the recovery before you upload. I just think that the issue might be a memory leak in android causing the kernel to panic (overlay issue) and might not have an effect in recovery since its graphics are very basic.
I'll let you know when it's ready
Sent from my SGH-I757M using XDA Premium 4 mobile app

Related

[TOOL] guestekrnL doItYourself STOCK KERNEL BUILDER for dummies - MAKE UR OWN KERNEL!

Ohai, everypwny!​Wanna impress your girlfriend without spending any money? Show her your love through compiling her your own O2X stock kernel! ​
Requirements: A PC capable of running a virtual Linux machine -- if your PC isn't much older than 5-6 years there shouldn't be a problem. Just make sure you have enough RAM (at least 1,5 - 2 GB recommended) -- no programming - or special linux knowledge required!
## Info: The VMWare image has been created by Jonas Hendrickx for XDA (I just altered/modified it for my needs).
5 simple steps to success: -- EVERYONE can do that!
Download and install Vmware Player (Freeware): http://www.vmware.com/go/get-player (VirtualBox will work too if you like this app better)
Download the file "guestekrnL_doItYourself_developer.rar" (http://guendhoer.com:9000/guestekrnL_doItYourself_developer.rar or https://docs.google.com/open?id=0B5HJ_FpcC9ymM3ZCS0l5RFJtZnc , 1.5GB) and unpack it (using WinRar or 7Zip or...) to any folder of your choice, and afterwards double-click the file "Android Developer.vmx" -- or alternatively open VMware Player first and then import the virtual machine located in the unpacked .rar contents
Click "I copied it" and wait until virtual machine starts up, login with password "root"
Open folder "kernel_source" (on Desktop), double-click file "buildkernel" and click "run in terminal"
Wait until terminal window closes, and start using your new kernel located in folder Desktop/kernel_source/guestekrnL_BUILDS
After this an exact copy of current guestekrnL "SR99R100.1PI.1337-GoodBye" has been built and packaged to a flashable CWM-Zip.
Possible things you can easily change yourself for making your own different/improved kernel versions:
Use a different compilation toolchain
(p.ex. http://releases.linaro.org/<choose a release version>/components/android/toolchain/<choose a gcc version>/)
download the file "android-toolchain-eabi-linaro-..." and replace the folder "android-toolchain-eabi" on Desktop of virtual machine with the unpacked content of the downloaded file
There are many different builds of linaro toolchains available, resulting in different smoothness, battery life and stability of the built kernel. Important:
[*]After toolchain change you have to edit the file "buildkernel" (rightclick -> open with gedit) and change the gcc version number to the one of your new toolchain (you find it here: Desktop/android-toolchain-eabi/lib/gcc/arm-eabi/<gcc version number>), save the file afterwards
Attention: if you switch to a toolchain newer than september 2011, you MUST change
# CONFIG_ALLOW_CPU_ALIGNMENT is not set
Click to expand...
Click to collapse
to
CONFIG_ALLOW_CPU_ALIGNMENT=y
Click to expand...
Click to collapse
in file Desktop/kernel_source/arch/arm/configs/gueste_defconfig -- otherwise kernel won't boot!
Only use toolchains with a number up to "4.6" in name, the newer ones ("4.7") are for ICS and not Gingerbread!
NOT every new toolchain will work with O2X stock kernels -> p.ex. 4.6.4 might not work while 4.6.2 works. Every toolchain older or equal to september 2011 should work BUT maybe you will have to remove some of the build flags not recognized by the older chain.
Always check Desktop/kernel_source/guestekrnL_BUILDS/build.log for errors after you made a new kernel build, especially at the bottom of the file. (Warnings don't matter.)
Use a different version-name for the built kernel
right-click file "buildkernel" in kernel_source folder -> open with gedit -> change kernelVersion there
Use a different general name for the built kernel (other than "guestekrnL")
double-click file "Makefile" in kernel_source folder -> click "Display" -> change kernel name there (change ".9-guestekrnL" to ".9-<yourKernelName>")
Attention: the Android app GuesteOC won't work if it doesn't find the String "guestekrnL" in kernel name! You then have to use the function-reduced version of the OC app by TrymHansen available for all kernels!
Use different build optimization flags
double-click file "Makefile" in kernel_source folder -> click "Display" -> search "CFLAGS_GUESTE" -> edit the build flags there
you find a good overview + explainations of available build flags here http://gcc.gnu.org/onlinedocs/gcc-4.5.3/gcc/Optimize-Options.html
and an interesting article on which flags the toolchain guys use here: http://www.linaro.org/linaro-blog/2...aro-android-2011-10-and-future-optimizations/
it is completely up to YOU which flags to use and not to use!
Stock standard would be:
CFLAGS_GUESTE = -O2
Click to expand...
Click to collapse
while the flags of current guestekrnL are:
CFLAGS_GUESTE = -O3 -ffast-math \
-mtune=cortex-a9 -march=armv7-a \
-mfloat-abi=softfp -mfpu=vfpv3-d16 \
-fsingle-precision-constant -fgraphite-identity \
-ftree-loop-distribution -ftree-loop-linear \
-floop-interchange -floop-strip-mine -floop-block \
-fmodulo-sched -fmodulo-sched-allow-regmoves \
-fno-inline-functions
Click to expand...
Click to collapse
if you have many flags like above, make line-breaks using slashes like above and only put 2-3 flags in one line!
Use different basic kernel configuration values
open folder "kernel_source", click the search-icon, search for "gueste"
edit the 2 files "guestekrnl.c" and "guestekrnl.h" of the result set according to your needs
guestekrnl.c and guestekrnl.h contain many default voltage/speed/... values, you can change them easily there
if you change MAX_OVERCLOCK to a higher value, you might need to change MAX_VOLTAGE as well and have to alter the whole cpu voltage and frequency table (see next point)
Help & explainations here: http://forum.xda-developers.com/showpost.php?p=26696158&postcount=25
Change CPU scaling voltages and speed steps
Edit the file Desktop/kernel_source/arch/arm/mach-tegra/nvrm/core/common/nvrm_clocks_limits.c and alter the two arrays "FakeShmooVoltages[]" and "FakepScaledCpuLimits"
the difference from one voltage step to another one needs to be lower or equal than 100mV;; too low voltages for a step results in freezes !!
the values for MAX_VOLTAGE and MAX_OVERCLOCK are located in file guestekrnL.h!
Help & explainations here: http://forum.xda-developers.com/showpost.php?p=26696158&postcount=25
Example of creating a kernel overclockable to 1.5 GHz: http://forum.xda-developers.com/showpost.php?p=26759653&postcount=58
Enable/Disable kernel features you want to use or don't want to use
open folder "kernel_source", click the search-icon, search for "gueste", edit the file "gueste_defconfig" according to your needs
"<featureName>=y" means the feature is enabled
"#<featureName> is not set" means the feature is disabled
Google for more information about what the different kernel features do, just past the kernel feature name in Google and you will find a description for most of them
Change the text shown to user on CWM installation of kernel
Edit the file Desktop/kernel_source/zipstructure/META-INF/com/google/android/updater-script according to your needs
If you are completely bad-ass you can also compile the compilation toolchain from the official sources yourself instead of using a prebuilt one (even if the prebuilt ones tend to be much more stable than the self-compiled ones)
Useful & important additional tipps/hints: Check this out
Info: If you ever stop the compilation progress before finishing, you have to edit the file "Makefile" in kernel folder and remove the version number from the version string (so only .9-guestekrnL should remain), otherwise you will have double version number in next kernel build.
Start being a kernel developer for XDA right now, today!
Advantages:
- U can impress many users by presenting them your hard work
- You will be acknowledged
- You will be able to easily express your creativity to the world wide web
- And much much more ,,, Sign up today! Oh, wait, no signup needed
If you think you have created an extremely good version of guestekrnL or maybe a completely new kernel, think about posting it here in the thread (I will link the posted kernels here in first posting) or open your own thread for your new kernel, it is up to you
As always I'm not responsible for any harm you might do to your system
Wanna build other stock sources than the ones of guestekrnL? Check this out
Awesome, Stefan!
Downloading...
Yeehhaawwwww!!! This is what im searching for.. thank you very very very much..
Edit: You need to edit your post.. looks unorganized.. quite difficult to read..
Sent from my LG-P990 using XDA
ghadap said:
Yeehhaawwwww!!! This is what im searching for.. thank you very very very much..
Edit: You need to edit your post.. looks unorganized.. quite difficult to read..
Sent from my LG-P990 using XDA
Click to expand...
Click to collapse
Thx I restructured a bit
Great work!
sent from my wii remote
You are great, thx!!!
Hy Stefan,
thx a lot
Herzlichen Dank
Craxx
Direct download Link from my own FTP server coming soon, because some users might have problems with download of the 1.5GB .rar from current mirror
Stefan Gündhör said:
Ohai, everypwny!​Wanna impress your girlfriend without spending money? Show her your love through compiling her your own O2X stock kernel! ​
Click to expand...
Click to collapse
LOL..! I can't think of any more evil scheme that this . Great work, Stefan..!
OH, on afterthoughts, a better thing that serves the purpose would be "How to build a theme..."
Yes Stefan, i have tried 3 times and download stops after around 300 MB, so i wait for direct download link
This is so awesome! Thanks alot!
Sent from my LG-P990 using Tapatalk
Great initiative Stefan. Download stops at ~300MB for me as well, looking forward to trying it.
Are the guestekrnl-scripts included in the finished kernel installer? (Just wondering if GuesteOC will work out of the box.)
TrymHansen said:
Great initiative Stefan. Download stops at ~300MB for me as well, looking forward to trying it.
Are the guestekrnl-scripts included in the finished kernel installer? (Just wondering if GuesteOC will work out of the box.)
Click to expand...
Click to collapse
Yeah I'm just uploading to a new FTP mirror, will take about 2 more hours I guess!
And yeah, the exact zipstructure of current guestekrnL release will be built automatically, including GuesteOC v2.1.5 + Myrt UV GUI, all working out of the box!
(In fact the most actual guestekrnL release was built exactly the way I describe it in first posting: I ran the virtual machine and double-clicked/ran the buildkernel-script. That's it.)
great tutorial Stefan...made it look very simple....NOTHING IS IMPOSSIBLE IN THIS WORLD..I am going to try doing it myself Stefan...as they say...the modern world is a place where a butcher can become a goldsmith, a carpenter can be a captain of the ship and a cleaner can be a pilot....
Thanks for the make urself tool kit mate.I am sure that we will find a lot of Kernels floating in this forum....
just a matter how many are good like urs or temaseks or vadonkas or so many others....time will tell that...have to wait to see that.
I appreciate the hard work put by you to make it so simple for starters and noobs morons like me to understand.
THANKS THANKS THANKS a million.I really mean it truthfully my friend
Stefan, will your tutorial works with original source (eg, V20q) and others (eg, spica HP)? and which file/folder to make our kernel support ext4?
My idea was using stock kernel but add ext4..
Downloading with FF stopped at 500MB, but with Free Download Manager, I could download it without problems.
The sources are very cool. Playing a bit around with them...
ghadap said:
Stefan, will your tutorial works with original source (eg, V20q) and others (eg, spica HP)? and which file/folder to make our kernel support ext4?
My idea was using stock kernel but add ext4..
Click to expand...
Click to collapse
Example of building unchanged stock kernel and only add ext4 compatibility:
start the kernelBuilder,
delete all folders located in Desktop/kernel_source except the folders "guestekrnl_BUILDS" and "zipstructure"
delete all files located in Desktop/kernel_source except the file "buildkernel"
edit the file "buildkernel" (rightClick-> open with gEdit) and change line
make ARCH=arm gueste${1}_defconfig;
Click to expand...
Click to collapse
to
make ARCH=arm star_ifx${1}_defconfig;
Click to expand...
Click to collapse
if you use v20 sources or to
make ARCH=arm star_rev_f_android${1}_defconfig;
Click to expand...
Click to collapse
if you use v10 sources
Download the official kernel sources you want from http://www.lg.com/global/support/opensource/opensource-detail.jsp?detailCustomerModelCode=LGP990
Extract the sources until you get a folder kalled "kernel"
copy the contents from inside "kernel" folder to Desktop/kernel_source
edit file Desktop/kernel_source/drivers/net/wireless/bcm4329/Makefile -> change line
-Wall -Wstrict-prototypes -Werror \
Click to expand...
Click to collapse
to
-Wall -Wstrict-prototypes \
Click to expand...
Click to collapse
edit file Desktop/kernel_source/arch/arm/configs/star_ifx_defconfig (or star_rev_f_android_defconfig): enable ext4 through replacing ext4 config (search for it in the file) with following:
CONFIG_EXT4_FS=y
CONFIG_EXT4_FS_XATTR=y
# CONFIG_EXT4_FS_POSIX_ACL is not set
# CONFIG_EXT4_FS_SECURITY is not set
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_JBD2=y
# CONFIG_JBD2_DEBUG is not set
Click to expand...
Click to collapse
run the buildkernel script, kernel will be built
Attention: don't use linaro/gcc toolchain newer than september 2011, otherwise kernel won't boot without additional modifications (the included default toolchain will work fine)
For every other stock kernel sources (in order to compile & zip-package them using kernelBuilder) the procedure should work similar!
Spica horsepower kernel however won't work that way, because spica does not upload his defconfig to his sources @GitHub (thus making rebuilding more difficult).
And default defconfig of stock kernel won't work with spica kernel. (Without the right defconfig the kernel does not boot.)
Older spica kernels (older than SR3) completely won't work and can't be rebuilt because spica never offered full sources @GitHub until SR3.
So in order to get a current spica kernel source working, you have to additionally
install the kernel you want to rebuild first on your phone and then
copy the file /proc/config.gz first to your internal SD and then to your PC,
unpack it and then rename the file you get to "spica_defconfig" and
place it in Desktop/kernel_source/arch/arm/configs/
finally edit the buildkernel file again so you have
make ARCH=arm spica${1}_defconfig;
Click to expand...
Click to collapse
in there!
In order to see the differences of guestekrnL compared to stock kernel, Download Meld Diff Viewer in App Store of virtual linux machine and make a folder-comparison of folder Desktop/kernel_source and a folder where you keep unchanged v10E kernel sources!
New direct download mirrors online! (Thx to cojo & myself ) Please report if the .rar files are error-free thx!
Additional tipps/hints:
change your keyboard layout to the one of your language/country (right-click top right most left icon and choose "change keyboard layout")
use versioning! :
double-click "Terminal" on desktop
enter "sudo apt-get install git-core git-gui" (internet connection is required)
enter the password ("root") , confirm installation, after install exit the window
enter "cd Desktop/kernel_source"
enter "git init"
enter "git add ./"
enter "git commit -a" then enter "first commit" & save & exit (the keyboard combinations for this are shown)
enter "git gui" and in first menu click "visualize master's history" -> you will see all commits and changes you made in each commit there
everytime you have made a few changes to the kernel, run "git commit -a" again (and if you add new file git add ./), so a new commit will be added to the commit history and you can see all changes there
use a diff viewer (Meld Diff Viewer of virtual machine linux software repository) for comparing guestekrnL sources with unchanged v10E stock kernel sources, so you can understand custom kernel making better! -- you can find orig sources here http://www.lg.com/global/support/opensource/opensource-detail.jsp?detailCustomerModelCode=LGP990 , download the v10E archive and unpack until you get a folder called "kernel", make a folder-comparison with Meld Diff Viewer afterwards!
Just take your time, begin with only compiling the kernel without changes (and try if it boots) and then slowly change more and more stuff, don't change too many things at once, always compile&try the kernel between more changes.
Learn by viewing the commits other developers make for their kernels, but pay attention that some commits might not be complete or incompatible with your kernel! Some commits of CM7 kernels can be useful, but not all will be compatible. When I started I learned much by just reading the commits of ironkrnL, from this commit page upwards: https://github.com/SetiroN/lge-kernel-star/commits/v2?page=5 (only the things "SetIron" directly commited) -- Please note that my own git repo is a mess, as I don't split up changes to single commits, I just make a commit for all changes a new kernel version has, so my repo won't help u much in learning
Always check Desktop/kernel_source/guestekrnL_BUILDS/build.log for errors after you made a new kernel build, especially at the bottom of the file. (Warnings don't matter.)
Stefan Gündhör said:
New direct download mirrors online! (Thx to cojo & myself ) Please report if the .rar files are error-free thx!
Click to expand...
Click to collapse
Downloaded from Google Docs and unpacked without incident. Now compiling under VirtualBox, which also worked without any modification.
...and as I was writing this it finished. Whole compilation job took less than 2 mins on a 4-core VM. ;-)

[moto_msm8960][CWM Advanced Edition] PhilZ Touch 6.xx.* and upwards.

Main thread + features + install instructions + dev support
http://forum.xda-developers.com/showthread.php?t=2201860
Click to expand...
Click to collapse
PhilZ Touch is a CWM Advanced Edition that adds all the features you could ever miss in CWM
It is a well proven recovery for many phones
It also adds a full touch interface a completely configurable GUI
Please give your feedback, what works, and any bug you could encounter
Read the features, and check if you are missing something
Also, do not forget to read about the powerful aroma file manager integration and double tap shortcut
Addendum: Unified builds, in particular this one for moto_msm8960 devices:
Supposed list of unified devices: Previous RAZR HD, Photon Q, Atrix HD, etc. : xt897, xt901, xt905, xt907, xt905, xt925, xt926, mb886 are now:
Now: moto_msm8960
I'm going to put them in a list so I can get around to checking Y on known working ones, and N on known non-working ones:
- xt926 (Y)
- xt925 (Y)
- mb886 (Y)
- xt897 (Y)
- xt901 (?)
- xt905 (?)
- xt907 (Y)​
Click to expand...
Click to collapse
Click to expand...
Click to collapse
Quick notes about unified devices:
Do they all work in this build? I have no idea, but am pretty sure that from feedback that xt926/5, xt907 and xt897 have been reported to work.
The bottom line is that I rely on anyone reading here (or who is directed here from their development pages) to let me know what works, what doesn't so please let me know.
----------------------------
Download links
Latest versions built by me can be found here: (currently 6.xx.* and up).
Note: 6.58.7 final/stable is the latest (see the main development thread if not understood)
Changelogs:
v6.58.7 - new code and fixes
Click to expand...
Click to collapse
6.43.6 (02.06.2014)
- fix recursive path creation bug for /data/media/0
- default to /data/media/0 unless we define BOARD_HAS_NO_MULTIUSER_SUPPORT
- use lstat to check if file exists
6.43.4 - Final, Stable
- fix text print color could persist after md5 check
6.42.9 - Final & Stable
- default again to libtar for backup/restore
6.42.7 - Stable
- default to busybox tar:
- use busybox tar by default as it now supports selinux context backup/restore
- unify libtar and busybox tar options (-p for selinux context)
- remove now deprecated external selinux container code
6.41.6 - Stable & perhaps Final
- update exfat to dorimanx 1.2.9 latest sources
- fix compile error when enabling BOARD_RECOVERY_USE_BBTAR
- repo sync latest sources
- Galaxy Tab Pro 8.4 WiFi SM-T320 (mondrianwifi)
- HTC M7 variants: use new cm kernel with exfat sources
- HTC M8 variants: use new unified recovery
6.41.5 - Stable
- libtouch_gui 1.21: auto detect BRIGHTNESS_SYS_FILE path if it is not set during compile
* search for the file in most common locations
* if found, save it to recovery settings ini file to be called on next recovery starts
* else, disable adjust brightness function to avoid error logs on recovery start
- fix various compiler warnings and errors
- enhance pre-compile setup
- dedupe: merge clean up code from @xiaolu
- merge: fix restorecon_from_file potential crash from @xiaolu (only for BOARD_RECOVERY_USE_BBTAR)
- fix 240x320 images
- merge "cwm: Honor recovery variant "
- merge "cwm: Remove hardcoded paths"
- merge "Keep 'show log' on screen until user dismisses it"
- create /data/media directory after internal storage is wiped
prevents denial to read/write from internal storage under some circumstances
- open source touch_gui library
- update licence files
Click to expand...
Click to collapse
- Unified msm8960: 6.58.7 (4.4.4): Image : http://d-h.st/2xD
- v6.43.6: Unified msm8960: http://d-h.st/HgH
- v6.43.4: Unified msm8960: http://d-h.st/sQQ
- v6.42.9: Unified msm8960: http://d-h.st/SjY
- v6.42.7: Unified msm8960: http://d-h.st/9pD
- v6.41.6: Unified msm8960: http://d-h.st/uq1
- v6.41.5: Unified msm8960: http://d-h.st/QiK
Click to expand...
Click to collapse
Note: tested only on my xt926. Aroma has a few little glitches but is not often maintained.
Older versions built by Phil (or his 'crew'):
http://goo.im/devs/philz_touch/CWM_Advanced_Edition/xt926 // oldest (and substitute your dev name for pre-unified builds)
http://goo.im/devs/philz_touch/CWM_Advanced_Edition/moto_msm8960 // newer, recent.
Click to expand...
Click to collapse
My github(just created/work-in-progress) for tracking changes on this: https://github.com/Hachamacha/philz.git
Click to expand...
Click to collapse
Note: My part in this is very minuscule. I just got (git) his source and stuck it into cm11 as a build base. I changed very little, only added the msm8960 build since I think phil is working on the source rather than many individual builds due to time. If you look at his github from the main page link, the only file I really changed was ./boardconfig/BoardConfig.mk under ./recovery.
Goal: Just to make this available and keep people out of the main thread that aren't developing. If I can help with the specific device I'd do it, but I'm really not an xt926/5 expert. Still, if you've got msm8960 questions (so: device-specific, not general philz touch) ask them here about the device and recovery since odds are better you'll get an answer here than in the main thread. I'll try to update this with latest builds each week.
Disclaimer: The usual stuff you read in all of these threads. If your mind turns into margarine after installation, please send a sample to the CDC labs in Virginia. I searched all over XDA for a thread for philz for the msm8960 but didn't find it. If you do, feel free to destroy this thread, call me names, threaten my relatives (please do this), etc.
Credits: I think all credit should go to Phil, @Orphee and the CM11 guys if you like this type of recovery.
Thanks for doing this bro. Otherwise AHD'd be on 6.0.7x..
EDIT: Great job, I can confirm, 6.22.1 flashes and screen touches work perfect, format, wipe clean new rom, install new rom, restore backup on the Atrix HD/mb886.
Who wouldn't like the best recovery of all? Right? Thanks a lot
Works with keys only on the 907. Thanks.
aviwdoowks said:
Works with keys only on the 907. Thanks.
Click to expand...
Click to collapse
I don't recall the xt907 being unified into the msm8960, at least not in the philz code, but I could be wrong. Could you try a recent (6.19.x) build from over here http://goo.im/devs/philz_touch/CWM_Advanced_Edition/xt907 and let me know if that works? I think the msm8960 so-called unified builds are still a bit confused. It looks to me like only xt926 and 5 are covered.
If the build I linked to works, then it's to do with the 'unified' setup and I might need to grab some vender ID's etc.
By saying "works with keys only": I assume you're saying that the touchscreen stuff is off-kilter or just off period?
Thanks and I'll look it over for that device.
Everyone else: Glad it's working out for you. I'll update as soon as there's another git update.
No touch function at all. The mb886, 'hd & photon Q (screen input works too, albeit mirrored) recoveries have always worked on the M.
Any can be used on the others for key only use.
The Q twrp works 100% on the m but mirrored input. Arrrghhh said he may port his version to the m.
Since we can have unified recoveries now, would it be possible to make TWRP and have it work for all the unified devices?
Sent from my ATRIX HD using Tapatalk
aviwdoowks said:
No touch function at all. The mb886, 'hd & photon Q (screen input works too, albeit mirrored) recoveries have always worked on the M.
Any can be used on the others for key only use.
The Q twrp works 100% on the m but mirrored input. Arrrghhh said he may port his version to the m.
Click to expand...
Click to collapse
Took a look at the cm11 base I'm using as a building platform for philz code and it appears xt907 isn't yet part of the unified group though it ought to be according to CM. I'll leave a note and see if that's in the works. I'll check if xt907 has it's own build over there. By the way, from your reply I wasn't sure if you'd tried the pre-unified version I linked to on goo.im? Also philz stuff is using his own touch library GUI these days, and there might be something about that and the 907. Got some stuff to figure out.
Looks like (Atrix HD, Electrify M, Photon Q, Razr HD, and Razr M) are supposed to be part of it but from the way the code looks, (boardconfig) , not sure I believe it's yet been worked out. Razr M has some 9xx x {?} resolution, right?
Edit: CM11 looks fine as far as unified for xt907, so it must be something in the philz code that's not yet ready for the full array of unified devices.
penser said:
Since we can have unified recoveries now, would it be possible to make TWRP and have it work for all the unified devices?
Sent from my ATRIX HD using Tapatalk
Click to expand...
Click to collapse
I've used TWRP and like it a lot, but haven't looked at the build requirements yet. It seems possible to do unified builds for anything especially if you can do something like build the cm11 default code with it's default recovery, then substitute TWRP recovery for the default CWM in the ./bootable/recovery code. TWRP would have to be setup for that which is something I don't know. CM11 is where the unified structure is coming from in the case of these recoveries.
The 6221 you posted works.
aviwdoowks said:
The 6221 you posted works.
Click to expand...
Click to collapse
Cool! Thanks for letting me know.
hachamacha said:
Cool! Thanks for letting me know.
Click to expand...
Click to collapse
Are you savvy enough to allow/provide a partition backup of /persist?
At least Philz no longer lets noobs format it. Why not back it up? As it gets clobbered often.
---------- Post added at 09:41 AM ---------- Previous post was at 09:22 AM ----------
Could it have been the previous presence/oversight of the fomat command the the cwmr base gave be used on the phones that is the sole cause of all the /persist hubub & it being only on the phone is not an issue?
---------- Post added at 10:17 AM ---------- Previous post was at 09:41 AM ----------
More on persist
http://forum.xda-developers.com/showthread.php?t=2589790
aviwdoowks said:
Are you savy enough to allow/provide a partition backup of /persist?
At least Philz no longer lets noobs format it. Why not back it up? As it gets clobbered often.
---------- Post added at 09:41 AM ---------- Previous post was at 09:22 AM ----------
Could it have been the previous presence/oversight of the fomat command the the cwmr base gave be used on the phones that is the sole cause of all the /persist hubub & it being only on the phone is not an issue?
Click to expand...
Click to collapse
savvy: I don't know the answer to that yet
I just took a look at a) the main thread, noticed this (http://forum.xda-developers.com/showthread.php?p=48940651&highlight=persist#post48940651) and b) the code. What I come up with is that while in recovery, I can go to 'mounts' and mounting "persist" is an option which works for me. It's not on the backup list, mounted or not, but shows up in aroma FM when it's mounted. That link I put there claims there is allowed 5 "extra" partitions for backup/restore, so I might be able to set up /persist as one of them. I'm still new to this recovery code for android so don't expect too much. Looks like if I can get it to work on mine, then it ought to on yours.
As a workaround (if ADB is working to your box in recovery) , you could yank (pull) that /persist stuff yourself, but I think a new version is coming along pretty soon and I'll try to see if I can get it to work. (Time permitting etc etc)
edit: I realized that /persist is in the recovery.fstab file when I build which is why it's a mount choice in that menu. The other stuff (make it a backup choice) appears to be hard-coded in one of the .c files so it could be added, but there's a fair amount of stuff to do to add it. Yeah, it could be modified, but I'd want to ask Phil about it before messing with it. I suspect he had some reason since I noticed you and he talked about this in the main thread. Did he ever get back to you?
Mount is ok. When I posted the now unavailable format was there.
aviwdoowks said:
Mount is ok. When I posted the now unavailable format was there.
Click to expand...
Click to collapse
I'm trying to reopen the discussion in the main thread so we'll see how that goes.
Edit: General build update.
There's a new build, same version but some fixes that I'll put up eventually here. CM11 probably has the newest API and I'm restructuring my environment, so need to sync and clobber repo, include philz as a localrepo. Might take .. all day for the syncing and building to complete. Doing this in a VM today
Fixed: Aroma now works with screen input when booted from the msm version while key only from philz.
Translation: aroma works fully while using this on a 907.
hachamacha said:
savvy: I don't know the answer to that yet
I just took a look at a) the main thread, noticed this (http://forum.xda-developers.com/showthread.php?p=48940651&highlight=persist#post48940651) and b) the code. What I come up with is that while in recovery, I can go to 'mounts' and mounting "persist" is an option which works for me. It's not on the backup list, mounted or not, but shows up in aroma FM when it's mounted. That link I put there claims there is allowed 5 "extra" partitions for backup/restore, so I might be able to set up /persist as one of them. I'm still new to this recovery code for android so don't expect too much. Looks like if I can get it to work on mine, then it ought to on yours.
As a workaround (if ADB is working to your box in recovery) , you could yank (pull) that /persist stuff yourself, but I think a new version is coming along pretty soon and I'll try to see if I can get it to work. (Time permitting etc etc)
edit: I realized that /persist is in the recovery.fstab file when I build which is why it's a mount choice in that menu. The other stuff (make it a backup choice) appears to be hard-coded in one of the .c files so it could be added, but there's a fair amount of stuff to do to add it. Yeah, it could be modified, but I'd want to ask Phil about it before messing with it. I suspect he had some reason since I noticed you and he talked about this in the main thread. Did he ever get back to you?
Click to expand...
Click to collapse
Currently, recovery doesn't allow backup/restore of all what's in fstab
It would be dangerous in my opinion as you sometimes have the bootloader there
try to edit this line:
Code:
/dev/block/platform/msm_sdcc.1/by-name/persist /preload ext4 rw,nosuid,nodev,noatime,nodiratime,barrier=1
setting the mountpoint to preload will add it to my mod as it supports that partition
However, restoring could fail if you do not add the selinux needed permissions
Also, you can follow my guide here to add extra partitions using this flag: EXTRA_PARTITIONS_PATH
Actually, without adding the flag or recompiling, you can just edit recovery.fstab to:
Code:
/dev/block/platform/msm_sdcc.1/by-name/persist /extra_part1 ext4 rw,nosuid,nodev,noatime,nodiratime,barrier=1
by default, it is enabled when you name it extra_part1 to extra_part5
That way, you can easily add support to 5 extra partitions to nandroid menu with just a repack, no recompile needed
Phil3759 said:
Currently, recovery doesn't allow backup/restore of all what's in fstab
It would be dangerous in my opinion as you sometimes have the bootloader there
try to edit this line:
Code:
/dev/block/platform/msm_sdcc.1/by-name/persist /preload ext4 rw,nosuid,nodev,noatime,nodiratime,barrier=1
setting the mountpoint to preload will add it to my mod as it supports that partition
However, restoring could fail if you do not add the selinux needed permissions
Also, you can follow my guide here to add extra partitions using this flag: EXTRA_PARTITIONS_PATH
Actually, without adding the flag or recompiling, you can just edit recovery.fstab to:
Code:
/dev/block/platform/msm_sdcc.1/by-name/persist /extra_part1 ext4 rw,nosuid,nodev,noatime,nodiratime,barrier=1
by default, it is enabled when you name it extra_part1 to extra_part5
That way, you can easily add support to 5 extra partitions to nandroid menu with just a repack, no recompile needed
Click to expand...
Click to collapse
Thanks for the tips. After I test the next version (6.23.x) I'll try these techniques out, see how it goes on mine.
hachamacha said:
Thanks for the tips. After I test the next version (6.23.x) I'll try these techniques out, see how it goes on mine.
Click to expand...
Click to collapse
also, take a look here, at the highlighted line:
https://github.com/CyanogenMod/andr...8960/blob/cm-11.0/device_moto_msm8960.mk#L121
You have also a ro property to forbid mount:
Code:
ro.cwm.forbid_mount
Both these properties affect the format/mount options in "Mounts and Storage" menu
As far as screen input for the 907 goes, are you not almost there if aroma works?
---------- Post added at 08:12 AM ---------- Previous post was at 08:10 AM ----------
It works on 6227.

[DEVS ONLY][BCM21553] Samsung Galaxy Pocket GT-S5300 (Cori) Development Discussion

General informations:
This thread's aim is only to represent a central meeting and discussion point for BCM21553 developers and, in particular, for the open Kernel/ROM sources development for the Samsung Galaxy Pocket GT-S5300 (codenamed Cori).
Information for common users:
As already described in the previous section, if you are not a developer, please restrict your posts to the general discussion thread so that developers can maintain good communication. Every post that is not strictly respecting these rules will be reported to the forum moderators. Thanks for your understanding.
For any other BCM21553 device related question or information, please, use this thread as a reference point, instead:
[DEVS ONLY][BCM21553 series] CyanogenMod 11 for BCM21553 Development Discussion
As someone already might know, I'm streambinder, from MoltenMotherBoard team.
I have already followed some projects for the GT-S5300, but especially kept in contact
with some of the events related to the porting of ROM and Kernel sources for BCM21553 chipset based devices.
In this precise moment, the sources in my possession allow you to be able to compile
a bugfree CWM 5.0.2.8 (based on CyanogenMod 7 code) with a kernel based on the Samsung stock one.
The only - fundamental - problem was due to the fact that unless I hadn't used the prebuilt INIT binary
token in the Samsung stock firmware boot.img, the phone would not work - or, better, boot up.
This means that until the situation - regarding this issue - doesn't change, our access to the porting of custom ROM
would be barred.
Recently, I decided to give Cori another chance and rework my sources, looking at the wonderful work brought
by the BroadcomCM team on CyanogenMod 9 (in particular, thanks to @bieltv.3 and @Alberto96) and @psyke83 on CyanogenMod 11.
They've not only been able to run these two ROMs in a more or less crude way, but this developer has been able to write
the necessary strings to make the INIT binary of some of these BCM21553 devices opensource.
Strong of this informations, I readjusted some of the sources of BroadcomCM's CyangenMod 9, which includes
all the progress carried out by both the team and psyke83, in order to make them work even on Cori,
and am now next to the first test of the CWM 6.X.X.X, based on IceCreamSandwich code.
At the same time, @akhbh is working on the KitKat code based CWM.
I hope I can give more information about any progress as soon as possible.
The General Discussion thread for non-development issues is here:
*.[DISCUSSION] CyanogenMod 11 For Galaxy Pocket GT-S5300 Discussion Thread
Made a first test of CWM based on CyanogenMod 9 code.
It seems it cannot flash it as it weighs so much compared to its partition configuration value: in fact, the maximum boot partition size is set up to 5.0MB, but the compiled boot.img weighs 5.3MB.
Will have to resize its weight in order to make it fill into the partition.
@akhbh, have you had any complication in these terms, with CyanogenMod 11 sources?
@psyke83, what do you suggest to do? Do you think an increasement of boot partition would be a better idea?
streambinder said:
Made a first test of CWM based on CyanogenMod 9 code.
It seems it cannot flash it as it weighs so much compared to its partition configuration value: in fact, the maximum boot partition size is set up to 5.0MB, but the compiled boot.img weighs 5.3MB.
Will have to resize its weight in order to make it fill into the partition.
@akhbh, have you had any complication in these terms, with CyanogenMod 11 sources?
@psyke83, what do you suggest to do? Do you think an increasement of boot partition would be a better idea?
Click to expand...
Click to collapse
No, I didn't faced those complications. My boot.img weighted around 4.5 MB in lzma compression mode. In gzip, it increased to more than 5 mb.
akhbh said:
No, I didn't faced those complications. My boot.img weighted around 4.5 MB in lzma compression mode. In gzip, it increased to more than 5 mb.
Click to expand...
Click to collapse
Perfect.
Which kernel have you based your build on?
streambinder said:
Perfect.
Which kernel have you based your build on?
Click to expand...
Click to collapse
Well, I took the GeTux kernel for cori, had to change the board name though and then compile it. CWM was booting even before changing the board name but there was no reaction from the phone on trying to boot cm9/cm11
And after changing board name, a black screen on trying to boot
Another info: When tried to merge cori source into the bcm21553 common one, it did compile but gave bootloop of GT-S5300 logo on trying to boot as well as when trying to go in CWM.
Bieltv.3 recommended to use cori source instead of the bcm21553 common one so we used cori sources
akhbh said:
Well, I took the GeTux kernel for cori, had to change the board name though and then compile it. CWM was booting even before changing the board name but there was no reaction from the phone on trying to boot cm9/cm11
And after changing board name, a black screen on trying to boot
Another info: When tried to merge cori source into the bcm21553 common one, it did compile but gave bootloop of GT-S5300 logo on trying to boot as well as when trying to go in CWM.
Bieltv.3 recommended to use cori source instead of the bcm21553 common one so we used cori sources
Click to expand...
Click to collapse
I suggest to use our Kernel sources for now, too: it will automatically bypass few errors/issues/bootloops that we cannot now fight with.
The most important thing is to make INIT working from sources (hope it will be working
on my CM9 sources, too) and check that every our configuration is correctly working and
making Cori boot into recovery.
Once we'll make it perfectly working without any kind of issue, will be the right time to try
to make Cori supported with the BC21553-common kernel.
streambinder said:
I suggest to use our Kernel sources for now, too: it will automatically bypass few errors/issues/bootloops that we cannot now fight with.
The most important thing is to make INIT working from sources (hope it will be working
on my CM9 sources, too) and check that every our configuration is correctly working and
making Cori boot into recovery.
Once we'll make it perfectly working without any kind of issue, will be the right time to try
to make Cori supported with the BC21553-common kernel.
Click to expand...
Click to collapse
Okay, I will use your kernel sources and try if something is changed once I reach home. For now, I neither have this device nor a PC, as I'm in another city.
Will be keenly watching your work. Will start after reaching home around the end of September
akhbh said:
Okay, I will use your kernel sources and try if something is changed once I reach home. For now, I neither have this device nor a PC, as I'm in another city.
Will be keenly watching your work. Will start after reaching home around the end of September
Click to expand...
Click to collapse
No problem, mate.
Here you have every source in my possession:
platform_kernel_samsung_cori
platform_device_samsung_cori
Keep in contact with me, as I will need some informations by you.
Anyway I'm now making another build, keeping some not so much important binaries excluded, so that I can make the compiled boot.img fill into our little Cori's boot partition. I know it's a dirty workaround, but if it works, I'll use it untill @psyke83 will suggest me a better way to do.
streambinder said:
No problem, mate.
Here you have every source in my possession:
platform_kernel_samsung_cori | github.com
platform_device_samsung_cori
Keep in contact with me, as I will need some informations by you.
Anyway I'm now making another build, keeping some not so much important binaries excluded, so that I can make the compiled boot.img fill into our little Cori's boot partition. I know it's a dirty workaround, but if it works, I'll use it untill @psyke83 will suggest me a better way to do.
Click to expand...
Click to collapse
have u tried to build cwm v6 from cm9 source ??
cleverior.ipul said:
have u tried to build cwm v6 from cm9 source ??
Click to expand...
Click to collapse
Of course, mate. I'm working on it, right now.
It doesn't seem to boot, strange if the same INIT binary sources are working for @akhbh.
#UPDATE
In order to troubleshoot, I'll give you some info.
For his build I used these sources:
platform_kernel_samsung_cori
platform_device_samsung_cori
android_device_samsung_bcm21553-common
Applied some lines on our bcm21553-bootimg.mk, too, in order to exclude parted and mke2fs and make the compiled boot.img weigh less.
@cleverior.ipul, can you link me your kernel sources, as akhbh said he used your ones for CM11.
@akhbh, which modifies have you applied in order to compile CWM based on CM11 code? Which device tree?
#UPDATE 2
Attached my compiled boot.img.
If anyone of you would extract it (you can easily use this tool: bootimgtools - read how to use it in the README) and make a diff with the CM11 one (just extract the ramdisk of both boot.imgs and - in the terminal - use this command: diff -urN /path/to/cm9/ramdisk /path/to/cm11/ramdisk > diff.patch), would make to me a huge favour.
Let me know.
streambinder said:
Of course, mate. I'm working on it, right now.
It doesn't seem to boot, strange if the same INIT binary sources are working for @akhbh.
#UPDATE
In order to troubleshoot, I'll give you some info.
For his build I used these sources:
platform_kernel_samsung_cori
platform_device_samsung_cori
android_device_samsung_bcm21553-common
Applied some lines on our bcm21553-bootimg.mk, too, in order to exclude parted and mke2fs and make the compiled boot.img weigh less.
@cleverior.ipul, can you link me your kernel sources, as akhbh said he used your ones for CM11.
@akhbh, which modifies have you applied in order to compile CWM based on CM11 code? Which device tree?
#UPDATE 2
Attached my compiled boot.img.
If anyone of you would extract it (you can easily use this tool: bootimgtools - read how to use it in the README) and make a diff with the CM11 one (just extract the ramdisk of both boot.imgs and - in the terminal - use this command: diff -urN /path/to/cm9/ramdisk /path/to/cm11/ramdisk > diff.patch), would make to me a huge favour.
Let me know.
Click to expand...
Click to collapse
I think we didn't had significant changes. Perhaps the same as totoro. But, that resulted in the internal_sd not mounting error in cwm.
Sadly, as said before, I am away from my home city and can't provide the files to you and can't do the boot.img diffs as well
Try to ask psyke83, he might have a solution for that
akhbh said:
I think we didn't had significant changes. Perhaps the same as totoro. But, that resulted in the internal_sd not mounting error in cwm.
Sadly, as said before, I am away from my home city and can't provide the files to you and can't do the boot.img diffs as well
Try to ask psyke83, he might have a solution for that
Click to expand...
Click to collapse
Then, if you didn't make any massive change upon the sources, then I'll only try using your kernel.
Can you give me your kernel sources, mate, please?
streambinder said:
Then, if you didn't make any massive change upon the sources, then I'll only try using your kernel.
Can you give me your kernel sources, mate, please?
Click to expand...
Click to collapse
Currently, I can provide you the boot.img only. For the sources, @cleverior.ipul can provide the kernel sources coz as said earlier, his kernel is used. Well, we were working together to bring cm11 but weren't successful
akhbh said:
Currently, I can provide you the boot.img only. For the sources, @cleverior.ipul can provide the kernel sources.
Click to expand...
Click to collapse
Ok, please send it to me, will compare it with my package.
streambinder said:
Ok, please send it to me, will compare it with my package.
Click to expand...
Click to collapse
Here it is:
http://www.4shared.com/zip/1nKFbOJ2ba/ccccGetux_CM11.html
streambinder said:
Of course, mate. I'm working on it, right now.
It doesn't seem to boot, strange if the same INIT binary sources are working for @akhbh.
#UPDATE
In order to troubleshoot, I'll give you some info.
For his build I used these sources:
platform_kernel_samsung_cori
platform_device_samsung_cori
android_device_samsung_bcm21553-common
Applied some lines on our bcm21553-bootimg.mk, too, in order to exclude parted and mke2fs and make the compiled boot.img weigh less.
@cleverior.ipul, can you link me your kernel sources, as akhbh said he used your ones for CM11.
@akhbh, which modifies have you applied in order to compile CWM based on CM11 code? Which device tree?
#UPDATE 2
Attached my compiled boot.img.
If anyone of you would extract it (you can easily use this tool: bootimgtools - read how to use it in the README) and make a diff with the CM11 one (just extract the ramdisk of both boot.imgs and - in the terminal - use this command: diff -urN /path/to/cm9/ramdisk /path/to/cm11/ramdisk > diff.patch), would make to me a huge favour.
Let me know.
Click to expand...
Click to collapse
here the link source https://github.com/cleverior/android_kernel_samsung_cori
i've changed the board name. If your device can not boot after using the zImage from this source, then rename init.bcm21553.rc to init.gt-s5300.rc.
@streambinder, what is grom? As bieltv.3 said that init built grom for cori is required to fix adb over cwm recovery. If adb gets working, then possibly the black screen while booting cm11 might get fixed
akhbh said:
@streambinder, what is grom? As bieltv.3 said that init built grom for cori is required to fix adb over cwm recovery. If adb gets working, then possibly the black screen while booting cm11 might get fixed
Click to expand...
Click to collapse
Sincerely don't what are you talking about.
Anyway, have to try to understand where's the problem with the not-booting CWM.
Will try with your sources and let you know.

[PATCH] Kexec-hardboot patch

In this post, I would like to explain what kexec-hardboot patch is.
@kernel developers: I would like to ask you to merge this patch to your kernels, because it is essential part of MultiROM - it allows to boot any kernel without changing the boot partition. I realize that it is no small request, but the patch is not big, touches relatively stable parts of kernel and should not cause any problems. Thank you.
What is kexec?
It is syscall of Linux kernel, which allows you to boot another Linux kernel without restarting the device - "Linux boots itself". The functionality is equivalent to fastboot -c *cmdline* boot zImage initrd.img, but without PC and fastboot. It is fairly known thing, so more info at wikipedia and man kexec.
What is the difference between normal and hardboot exec?
Kexec-hardboot patch adds a real device restart to that process, so that all the drivers can be properly reinitialized. It stores new kernel to RAM, reboots the device as usual, and kernel from boot partition immediately jumps to the one which was stored to RAM before reboot.
Unlike grouper's kexec-hardboot patch, this one only requires the host kernel to be patched. This is one of the improvements Tasssadar made, and I think it is pretty significant.
To sumarize the process:
kexec --load-hardboot.... is called and kernel it loaded into RAM.
kexec -e is called. Special info is written to memory (to area which is not overwritten on reboot) and the device is rebooted.
After reboot, very early in the boot process, kernel checks if that special info is present in RAM and if so, it loads new kernel from RAM and jumps to it.
Kexecd' kernel starts and boots.
For more info, read the original thread.
Patches:
Kernel patch: https://gist.github.com/PatrikKT/50faf32e8931d51c0c9a,
This is the kernel patch. Only the host kernel needs to be patched.
Related CONFIG options:
CONFIG_KEXEC=y
CONFIG_KEXEC_HARDBOOT=y
CONFIG_PROC_DEVICETREE=y
CONFIG_ATAGS_PROC=n # This one is turned on automatically, but it is not needed, so you can disable it.
All these options must be enabled.​
Userspace kexec binary: https://github.com/Tasssadar/kexec-tools
I had to change some things in kexec userspace binary because of some kernel bugs, complete description is in that repository. You can get statically built binary at https://github.com/Tasssadar/multirom/blob/master/install_zip/prebuilt-installer/multirom/kexec​
Usage:
Once you have the kernel patches and kexec userspace binary in place, just run following command to boot into new kernel:
Code:
kexec --load-hardboot zImage --initrd=initrd.img --mem-min=0x20000000 --command-line="$(cat /proc/cmdline)" --dtb
kexec -e
Note the command line parameter - cmdline from bootloader is not added automatically, you have to put it there by yourself.
Authors:
This patch was made by Mike Kasick for Samsung Epic 4G. Since that, it was ported to several devices, one of them is Asus Transformer TF201 - he used patch from TF201 and modified it a bit (basically just changed few SoC specific constants). People at #ubuntu-arm helped him out with that, thanks.
For hammerhead, he has improved the patch a bit - only the host needs to be patched now and he has added support for DTB.
This thread was used as a template Credits to @Tasssadar for his Nexus 5 patch
Awesome people helping with our G2's development. Thank YOU!
patrik.KT said:
I would like to ask you to merge this patch to your kernels, because it is essential part of MultiROM - it allows to boot any kernel without changing the boot partition.
Click to expand...
Click to collapse
What benefit would there be to non-MultiROM users? (Just curious.)
blastagator said:
What benefit would there be to non-MultiROM users? (Just curious.)
Click to expand...
Click to collapse
Any. Just any.
Actually I can't think of anything. It's only to bring the device to a full reboot to load a new kernel.
Odoslané z môjho HTC Desire 601
blastagator said:
What benefit would there be to non-MultiROM users? (Just curious.)
Click to expand...
Click to collapse
Not for common user, in epic4g kexec used by kernel devs to test a new kernel build without replace the existing kernel.
They just load a temporary kernel to test. Then that kernel will gone after a reboot.
Hope to see new kernels that support MultiRom! Great work man!
Would this allow a multiboot with AOSP and Stock roms?
AbdulrahmanAmir said:
it doesnt work while i have stock and the secondary is aosp (dU-dirty.unicorn) when i boot the secondary it works sound only but no display just black screen plzz help
Click to expand...
Click to collapse
The patch is not necessary at the moment, because of the locked bootloader. It's just for devs to be prepared with their kernel when we can unlock the bootloader, so that multirom will work as it should.
Odoslané z môjho HTC Desire 601
Thanks for your great thread. But there is no instruction about how we can add that patch to kernel source. Could you write more details about implanting this patch?
No response??
mohamaadhosein said:
No response??
Click to expand...
Click to collapse
Download the patch file from first post and place it in the kernel root directory. Then you should use this command to check if there are any conflicts: git apply --check <path_to>.patch
If there are no errors, use this to apply: git apply <path_to>.patch
Sorry for the late response but I checked xda when I wasn't home and I forgot to reply when I got home
Odoslané z môjho HTC Desire 601
Hey, some changes need to be made to the patch.
On line 353, change the number from 22 to 21. Also, it has some errors when modifying head.S, which I had to fix manually..
But guys, my kernel is building with the latest multirom. This **** is going to maybe work soon!
I'll keep you all posted.
Thank you man
Guys, I think I've done it. Kexec hardboot patched kernel for 5.1.1 and thus multirom compliant, which I am preparing to build with twrp. this is very exciting.
When will it be ready?
Are you kidding me? No ETAs. I literally haven't even announce it yet and somebody asks for an ETA.... It will be ready once I test everything to boot well on my device.
patrik.KT said:
Download the patch file from first post and place it in the kernel root directory. Then you should use this command to check if there are any conflicts: git apply --check <path_to>.patch
If there are no errors, use this to apply: git apply <path_to>.patch
Sorry for the late response but I checked xda when I wasn't home and I forgot to reply when I got home
Odoslané z môjho HTC Desire 601
Click to expand...
Click to collapse
It says the patch is corrupted on the line 375

CM12 - building, optimising, fixing, having fun

Hi all o/
To celebrate two weeks of my successful CM12 building and hacking, I'm starting this thread. Its purpose is to discuss general CM12 building steps for beginners like myself, bugs and fixes, applying @JustArchi's optimisation flags, solving the resulting build failures.... and all the other CM12/S4Mini-related questions that don't belong to F4k's [ROM] thread but end up there (I was guilty of that).
First of all, my thanks go to:
@arco68 for making it possible to build ROMs for our S4mini
CyanogenMod team for the ROM itself
@F4k for his kernel and all the other excellent contributions to this forum
@JustArchi for finding what he found
In this first post I will outline the steps needed to build a vanilla unofficial CM12 for serranoltexx. serranoltexx is the only device I have so this is what I'll introduce. I suspect building serrano3gxx is just as simple (just replace the device name in all the relevant steps). I don't know what to do to build for i9192, if you do please contribute
Building your own CM12 ROM
Main article: http://wiki.cyanogenmod.org/w/Build_for_serranoltexx
The article above tells you how to build CM11, but CM12 builds just as well with minor modifications I'll outline here. To follow those steps you need a Linux installation. I will write how you can make an example Lubuntu-based virtual machine on your Windows box in a post below.
Modifications to the build steps:
"Install the SDK" -- you can skip that, because in the end we will not use any SDK tools.
"Install the Build Packages" - replace jdk6 with jdk7 everywhere, as Java 7 is needed to build Lollipop.
"Create the directories" - I will assume you've followed those steps and everything is under ~/android/system/
"Initialize the CyanogenMod source repository" replace "cm-11.0" with "cm-12.0" of course
"Extract proprietary blobs" we will do this completely differently. If you try to use extract-files.sh, the script will fail, and when I finally fixed the script my camera didn't work...
So, do this instead (credit to @F4k and @kyrillos13 for answering my question on page 90 of F4k's ROM thread)
* Go to https://github.com/TheMuppets/proprietary_vendor_samsung
* Switch branch to cm-12.0
* Use the "Download ZIP" button to get the copy of the entire thing. The zip is big (500 MB? ish) and 95% of it useless for us, so if you're trying to save some bandwidth you can try to do this trick to get only the "serrano-common" folder. If you do, make a post here with exact steps for others
* Copy the "serrano-common" folder to ~/android/system/vendor/samsung/ (to clarify, final directory structure should include ~/android/system/vendor/samsung/serrano-common/proprietary/app/ folder among others)
"Turn on caching to speed up build" - sounds like a good idea but we're going to be playing with compiler options, which diminishes its usefulness. It also uses a lot of disk space. Only follow it if you want your daily increments to build fast, and you don't expect to be doing global changes such as optimisation flag changes often. I didn't do this step.
This concludes my first post in this thread. I personally have never had problems with building after this part (except when I had not enough space or memory) and the resulting vanilla builds always worked for me fine. Feel encouraged!
Next post: some tricks and useful commands
A random selection of interesting things:
What recovery is good for applying my builds
Well they're all good, and they all work I bet. What I use is Phil's Touch and I'm on version 6.48.4 and it's worked perfectly.
How do I dirty flash my build on top of another CM12 build
I keep doing that since early F4k's builds and have no problems (yet!!). The trick is to only keep /data, while wiping everything else:
* Copy your newly build .zip file to your sdcard (you'll want to have a large enough sd card, I think)
* (if you want to) copy F4k's kernel and/or gapps too.
* Reboot your phone, go to recovery
* Backup your current phone. Seriously, never miss that step.
* Format /system (in Phil's Touch that's under "mounts and storage")
* Format /cache (as above)
* Select "install zip from sd card" and choose your ROM
* (if you want to) repeat "install zip from sd card" for F4k's kernel and/or gapps.
* Reboot your phone. It will take ~5 minutes or so for ART to re-compile all your apps
Soo my build didn't work. Wat do??
* Reboot to Recovery
* What I do is another backup. This gives me a nice archive containing my broken build, which I can later investigate
* Use recovery to restore the backup you've made before applying your build
* Reboot. You're back on a build that worked. Phew~
* (if you want to investigate) copy both backups (one that works and one that doesn't) to your PC. Uncompress the contents of /system for both, see if they obviously differ (such as one having binary blobs and one not lol).
Use F4k's kernel if you want to
Up to you, but here it is: https://s.basketbuild.com/devs/F4k/kernel_f4k-lp
I use it and as a result, I don't bother to optimise/improve CM12 kernel. I also don't care if I ever mis-compile CM12 kernel (not that it ever happens).
Gapps location
I use "mini" from here: https://s.basketbuild.com/devs/TKruzze/Android 5.0.1 GApps and all I can say is that it worked for me so far.
I made some changes and I forgot what I did
Command "repo status" will give you a list of all the files you've modified across all the git repositories.
I made some changes to a file and I forgot how it looked before
Go to that file's directory (or at least its git repository, but it's somewhat hard to figure out what is the repository structure in your workspace) and issue "git diff" command. It will produce a diff file with all your changes.
I made some changes to a file and I want to undo that
Go to that file's directory and issue "git checkout [filename]" command. It will drop your changes and replace the file with original.
My build finished and I want to make a new, fresh, one
You want to say "make clean" before you do "brunch serranoltexx" again.
Coming up: Basic JustArchi-inspired optimisations
Main article: http://forum.xda-developers.com/showthread.php?t=2754997
In the mid of 2014, @JustArchi recognised that all of Android has always been built with -Os option - meaning that the binaries are optimised for small size and not for execution speed. -Os is sometimes necessary (as it was on very early Android devices), but the "usual" build optimisation has always been -O2 meaning optimise for speed. Or -O3, which runs even more optimisations for speed (which might or might not help relative to O2 and will always make compilation slower).
Applying those optimisations has never been easier, because Lollipop is already built with GCC 4.8 (which was very highly recommended, but not in default toolchain, before). So all we need to do is activate -O3 by modifying some makefiles.
Does it do anything
In 0xbenchmark, several graphics-related tests (draw-arc, draw-circle) are up to six times faster. Does it matter? Dunno! But it's fun to see such a thing anyway!
What is THE most important file to modify?
Here: ~/android/system/build/core/combo/TARGET_linux-arm.mk
Line 70 defines "TARGET_arm_CFLAGS", this is the base compiler flags for *kernel* and starts with -O2. You can change that -O2 to -O3 if you want, but if you use F4k's kernel then it will do nothing in practice.
Line 77 defines TARGET_thumb_CFLAGS, this is the base compiler flags for android binaries. It clearly has -Os staring you in the face. Aha!! Change that to -O3 (or -O2) and you've just applied 90% of all compiler optimisations you can make. Build again. Your zip will be larger, this means it worked.
So I did that and it didn't finish building
Heh you're right, I lied. Unfortunately GCC is not as perfect as we'd wish and it will produce new errors or warnings with -O3 flag. Some of them make sense, some baffle me... Here's a list of what I had to change:
Error building android/system/frameworks//media/libstagefright/codecs/amrwbenc/src/isp_az.c, compiler detects array index out of bounds
It doesn't make any sense if you ask me (and I stared at the code a lot). There are two arrays f1 and f2. f1 has size [NC16k + 1] and f2 has size [NC16k], and if f1 is big enough then f2 should be big enough, but GCC disagrees.
For an off chance that GCC is right, I made f2 bigger [NC16k + 1]. Since nobody does sizeof(f2) it causes no change in logic, it marely allocates one extra (unused) word on stack. Made GCC happy.
[edit] this fix is unnecessary on gcc 4.8.5; see "Using SaberMod toolchain to build your CM12" on page 3 for how to use updated gcc[/edit]
Error building android/system/frameworks/av/media/libstagefright/codecs/m4v_h263/dec/src/deringing_[chroma|luma].cpp, cryptic "assuming when assuming" message
Another weird one. It *seems* to me that GCC unrolled a loop, and then looked at the unrolled loop index condition and concluded it's dumb after the unrolling, and complains. Modify:
android/system/frameworks/media/libstagefright/codecs/m4v_h263/dec/Android.mk
Find line: Local_CFLAGS += -Werror
Replace with: Local_CFLAGS += -Werror -Wno-error=strict-overflow
Error linking libhwcomposer, symbols "configRotator", "configMdp" and "updateSource" not found
Those three functions are defined with |inline| in the cpp files, while a compiler option tells gcc that inline implies static (dunno why it works with -Os, it really should never work). Open:
~/android/system/hardware/qcom/display-caf/msm8960/libhwcomposer/hwc_utils.cpp
Line 1238, remove "inline"
Line 1309, remove "inline"
Line 1335, remove "inline"
That is all, should build now!
Anything else uses -Os?
Yes, there's a bunch of Android.mk files that locally override the -O3 flag we just set with -Os (or -O2). You can make a global search, but here's a list of some important ones:
* every makefile under external/chromium_org/. This is the built-in web browser and unfortunately every single makefile does the override, and there's over9000 of them. If you want to change them all, you probably want to write a script of some sort. If you do, share one here lol.
* third_party/android_crazy_linker/src/Android.mk, adds -Os to LOCAL_CFLAGS. I do not know what crazy linker is, but if you want that to be bigger and faster, change that to -O3.
* third_party/zlib/zlib.target.linux-arm.mk, adds -Os to MY_CFLAGS_Release. Zlib sounds like something that should be fast, change that to -O3.
* modules/audio_processing/ lots of .mk files use -Os. How weird. You're only interested in *.target.linux-arm.mk, other targets do not apply to us.
* external/... some of the Android.mk files there use -Os. Some seem to matter.
Phew ~ next up: some more interesting optimisations that worked for me.
Compile for cortex-a15 target
The CPU in our S4mini is called Krait. It's neither Cortex-A9 nor Cortex-A15, but it's supposed to be similar to A15. However, the CM12 build system does not have an appropriate entry for Krait and defaults to generic A7+Neon, a choice that is not VERY bad but presumably not optimal either.
Go to file: ~/android/system/build/core/combo/arch/arm/armv7-a-neon.mk
Find the line that detects a15-compatible architectures (cortex-a15 and denver):
ifneq (,$(filter cortex-a15 denver,$(TARGET_$(combo_2nd_arch_prefix)CPU_VARIANT)))
add krait to the list:
ifneq (,$(filter krait cortex-a15 denver,$(TARGET_$(combo_2nd_arch_prefix)CPU_VARIANT)))
Activate neon vector extensions
[edit] see "Activate neon vector extensions, for real this time" on page 3 for a working, but hacky, solution[/edit]
Activate linker optimisations
In the in file: build/core/combo/select.mk there's room for some linker parameters.
Find the line that says:
$(combo_var_prefix)GLOBAL_LDFLAGS :=
and change it to:
$(combo_var_prefix)GLOBAL_LDFLAGS := -Wl,-O1
(that's: dash whiskey lima comma dash oscar one, no spaces, in case it's not readable)
I do not know what kind of optimisations linker makes, but this parameter asks it to make them.
Thanks a lot for this helpful and informative how-to. This is really appreciated if one likes to build the rom on his own.
Regards!
where can i download YOUR build of cm12?
well done!
This is a great write up. Anybody contributing for necessary mods required for duos will value add
I'm glad you guys like it I'll post some more tomorrow.
Howdareme said:
where can i download YOUR build of cm12?
Click to expand...
Click to collapse
Mine? I don't upload them anywhere because I don't see much point, making a near-identical copy of F4k's rom. Plus I am very lazy ;ppp
Now, to say something useful: if you're building any time soon, you might want to include this patch: http://review.cyanogenmod.org/#/c/82572/
It seems like there's a serious resource leak any time you switch your screen off.
Thanks for sharing this wonderful information!
sysKin said:
* Go to https://github.com/TheMuppets/proprietary_vendor_samsung
* Switch branch to cm-12.0
* Use the "Download ZIP" button to get the copy of the entire thing.
Click to expand...
Click to collapse
You might wanna consider adding that repo to a local manifest instead. See also @k2wls excellent guide: How to make your own CM-11.0 for your S4 mini
you can save the 500mb download by just adding this to .repo/local_manifests/roomservice.xml
Code:
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" />
although perhaps we should be using arco's repo instead of the muppets?
https://github.com/arco/proprietary_vendor_samsung
also we should make a list of recommend patches from gerrit.
arco doesn't seem to be doing anything s4mini-specific at the moment, tonnes of work on bluetooth it seems:
http://review.cyanogenmod.org/#/q/owner:"Arne+Coucheron"+branch:"cm-12.0",n,z
sej7278 said:
you can save the 500mb download by just adding this to .repo/local_manifests/roomservice.xml
Code:
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" />
although perhaps we should be using arco's repo instead of the muppets?
https://github.com/arco/proprietary_vendor_samsung
Click to expand...
Click to collapse
Wooo thanks, this is exactly the kind of knowledge I'm hoping we can put in one place, and I'm a noob when it comes to android build system (and |repo| script).
also we should make a list of recommend patches from gerrit.
Click to expand...
Click to collapse
Yup!
sysKin said:
Wooo thanks, this is exactly the kind of knowledge I'm hoping we can put in one place, and I'm a noob when it comes to android build system (and |repo| script).
Click to expand...
Click to collapse
well it won't actually save you a 500mb download, it'll just download it using repo, but at least it'll keep it up-to-date this way (as i recall there is a way to just checkout the directories you want, but i can't remember it, think you have to list every directory you don't want and remove it).
you can also add revision="cm-12.0" to the end of the tag, but cm-12.0 is the default now anyway.
i'd say USE_CCACHE=1 is worth doing, unless you're making major changes for every build, it defaults to only using 1Gb these days.
also if like me you've already checked out the cm-11.0 branch, you can switch to cm12 using:
Code:
repo init -b cm-12.0
repo sync -j16
built ok after a second repo sync (think i was in the middle of a merge window) and it turns out you don't need to get the prebuilts anymore, the terminal app is part of the source now.
oh and the screen off memory leak patch has been merged now.
it did take my 3.2ghz core-i5 with ccache on an ssd and 12gb ram about 2.5 hours to build, so a lot longer than cm7/9/10 (30-45mins) and a bit longer than cm11 (1.5-2 hours)
edit: actually a warm ccache only saved 5-10mins it seems, much more java than c/c++ in android these days i guess.
stop "settings > device > buttons" from crashing: http://review.cyanogenmod.org/#/c/83030/ (merged)
still looking for how to:
1. enable editting quick settings tiles
2. unmount usb mass storage,
3. take a screenshot from reboot menu / edit the reboot menu
4. edit the lockscreen settings
For those of us suffering from network-derived timezone resetting to GMT+0 (not a fun thing to happen overnight when you need your alarm clock!), there is this possible solution:
http://review.cyanogenmod.org/#/c/83219/
Love this thread.......
Thanks @sysKin., have you try diffrenent toolchain ?
happyta5 said:
have you try diffrenent toolchain ?
Click to expand...
Click to collapse
Not yet, not on this build. I did use a different toolchain when I compiled CM 10.2 but without any knowledge about how repo works it was just one huge mess. Many guides here only deepened my misunderstandings by showing me how to replace kernel toolchain (ie what builds the kernel) saying nothing about rest-of-android toolchain (and I don't even remember some details of that anymore...).
Also, I never managed to successfully compile CM 10.2 with contemporary GCC 4.9 - too many weird internal compiler errors and other strangeness. Do you have any information about successes with current tools? There wouldn't be much point using different toolchains if GCC/clang/etc remain the same (well, GCC 4.8.4 was released on 19th of December, might be worth trying).
With some pointers from this thread, I'm able to build CM12 using ArchiDroid linaro 4.8 and 4.9 ToolChain with -O3 Optimized. CM seems run faster. I'm using @F4k kernel for the moment since I like the undervolt alot. May be I'll try SaberMod ToolChain later .....
Cheers ...
happyta5 said:
With some pointers from this thread, I'm able to build CM12 using ArchiDroid linaro 4.8 and 4.9 ToolChain with -O3 Optimized. CM seems run faster.
Click to expand...
Click to collapse
Could you share more about what you did? In particular, did you change the "android-eabi" toolchain or the "arm-eabi" toolchain?
The only instructions I've seen which explain how to use linaro toolchain refer to the "android-eabi" one, and if my understanding is correct, that's used only for building the kernel...

Categories

Resources