Welcome to XDA

Search to go directly to your device's forum

Register an account

Unlock full posting privileges

Ask a question

No registration required
Post Reply

[GUIDE]Overclocking NAND Devices with PLL2

OP cute_prince

25th June 2013, 11:10 AM   |  #1  
cute_prince's Avatar
OP Recognized Developer
Flag Trivandrum
Thanks Meter: 4,027
 
673 posts
Join Date:Joined: May 2012
More
/**** THIS GUIDE IS ONLY FOR ADVANCED USERS, WHO KNOW HOW TO COMPILE AND MAKE MODIFICATIONS TO KERNEL AND MODIFYING VARIOUS PARAMETERS IN RAMDISK ****/

Hello guys, here I am giving you a detailed tutorial for Overclocking devices that comes with NAND and having only PLL2 support.
Although this guide is written for HTC Explorer, the method can also be applied on similar devices.
So, before we begin you should understand the difference between OCing with PLL4 and OCing with PLL2.

XDA user @rootdefyxt320 has written an excellent post that tells the exact difference between PLL4 OC and PLL2 OC. I am quoting it:


Quote:


PLL2 overclock can be compared to FSB overclocking in computers i.e locked multiplier overclocking in the BIOS. FSB overclocking involves overclocking of the PC buses such as the Memory Bus, PCI/ PCI-Express bus and AGP buses (older computers) and the CPU. It works out by XXXXMHz multiplied by X multiplier and that will give the CPU speed. PLL2 overclock does the same thing because PLL2 controls the bus speeds (exists in the SOC). It overclocks the memory buses, SOC clock, internal storage (database IO) speed and of course the CPU. It works out by XX multiplied by 19/2 and that gives the CPU speed. That's why PLL2 on 800MHz is faster in performance than PLL4 on 800MHz . Therefore that's the reason why people complain of burnt NANDs on HTC Explorer and Motorola Defy Mini XT320/321.

PLL4 overclock can be compared to unlocked multiplier overclocking where you adjust the multiplier in the BIOS and it will automatically adjust the clock speed depending on the multiplier of the CPU. Therefore this only overclocks the CPU. PLL4 overclock only overclocks the CPU and NOT the buses so it can go at much higher frequencies than PLL2 overclock. PLL4 overclock does NOT adjust bus speeds so therefore it is much safer to overclock and it doesn't burn out your SOC.

In case of HTC Explorer, it uses Qualcomm MSM7225A chipset. This chipset does not have PLL4 support. So the only way to overclock is by OC'ing PLL2. But OC'ing PLL2 causes not only the CPU but also everything connected to the board to OC as well. This includes the External Bus Interface (EBI). Our NAND is connected to EBI and when OC happens the Write access through NAND becomes so high causing every block in those partitions which are mounted as RW to become Bad. This is what we call "NAND BURN".

The partitions in NAND that are affected by OC are /data and /cache. This is because only these two partitons are mounted with RW access. As I mentioned above the increased Write access during OC is what causing the blocks to corrupt. All other partitions including /misc, /devlog, /boot, /system and /recovery are mounted as Read-Only and therefore are not affected.

The Workaround for this dilemma is to disable both /data and /cache partitions ( By disable, I mean not even mounting them ) in NAND and use a portion of your SDcard to act as /data and /cache. This is what we are going to do.


/* FOLLOWING PROCEDURE IS FOR AOSP ROMS ONLY */


THE PROCEDURE
================


The procedure consists of four parts. They are listed below:
  • Preparing The SDcard
  • Kernel Level Changes
  • Setting Up RamDisk
  • Removing Memory Increasing Script

Detailed description of each part is given below:


PART 1 : Preparing The SDcard
==========================


********YOU MUST USE CLASS 10 OR ATLEAST CLASS 6 SDCARD WITH MINIMUM 8GB CAPACITY*******

CLASS 4 and CLASS 2 SDcards will definitely cause slow responsiveness because /data/data is on SDcard. Furthermore these SDcards can't handle OC at high frequencies and will die out quickly.

SO PROCEED ONLY IF YOU ARE HAVING CLASS 6 OR CLASS 10 SDCARD. YOU CAN TRY CLASS 4 SDCARD BUT YOU CAN'T OVERCLOCK ABOVE A CERTAIN LIMIT AND NO GUARANTEE ABOUT HOW LONG THE CARD WILL LAST.

We are going to create two EXT4 partitions ( First one for replacing /data and second one for replacing /cache in NAND ) on the SDcard, in addition to the normal FAT32 partition.

Using MiniTool Partition Wizard, create two EXT4 partitions as shown in following figure:




For SD-DATA, you can give whatever size you want. This where the user applications are installed.
For SD-CACHE, around 65MB is enough.

You should keep the order in which partitions are created. Partition Type for both SD-DATA and SD-CACHE should be Primary.

Assuming you have successfully prepared SDcard, lets go the second part:


PART 2 : Kernel Level Changes
==========================


First, you need to replace arch/arm/mach-msm/acpuclock-7201 with this one: https://dl.dropboxusercontent.com/u/...puclock-7201.c
This contains the overclocked frequencies and logic to dynamically calculate PLL2 values according to different frequencies.

When you look through the overclocked frequencies, you can see I have disabled 900MHz. This is because Class 4 SDcards can't handle data rate at this frequency. Those who have Class 10 SDcards can enable and try whether it is stable for them.

**** DO NOT OC GPU. ITS FAKE AND ACTUALLY DEGRADES PERFORMANCE. REVERT GPU OC IF YOU HAVE ENABLED IT ****

Next, you need to edit the configuration file ( pico_defconfig in my case ) and enable the following option. Its disabled by default so you have to enable it:

Code:
CONFIG_LBDAF=y
That's all. Now compile your kernel.


PART 3 : Setting Up RamDisk
========================


Since, we are not using /data and /cache in NAND anymore, the changes must be made in RamDisk.
All modifications are performed on init.rc file.

Open init.rc and perform the following modifications:

1. Find the following line:

Code:
mount yaffs2 mtd@userdata /data nosuid nodev
Replace the above line with following:

Code:
# Mount SD-DATA
    wait /dev/block/mmcblk0p2
    wait /dev/block/mmcblk0p2
    wait /dev/block/mmcblk0p2
    wait /dev/block/mmcblk0p2
    mount ext4 /dev/block/mmcblk0p2 /data nosuid nodev noatime nodiratime barrier=0 data=ordered commit=15 noauto_da_alloc nouser_xattr errors=continue
2. Now find the following line:

Code:
mount yaffs2 mtd@cache /cache nosuid nodev
Replace the above line with following:

Code:
# Mount SD-CACHE
    wait /dev/block/mmcblk0p3
    wait /dev/block/mmcblk0p3
    wait /dev/block/mmcblk0p3
    wait /dev/block/mmcblk0p3
    mount ext4 /dev/block/mmcblk0p3 /cache nosuid nodev noatime nodiratime barrier=0 data=ordered commit=15 noauto_da_alloc nouser_xattr errors=continue
3. Since we are extensively using SDcard, we should adjust the read_ahead_kb parameter for maximum performance:
Add the following lines after the line: mount ext4 /dev/block/mmcblk0p3 /cache nosuid nodev noatime nodiratime barrier=0 data=ordered commit=15 noauto_da_alloc nouser_xattr errors=continue

Code:
# SDcard read speed boost
    write /sys/block/mmcblk0/bdi/read_ahead_kb 2048

PART 4 : Removing Memory Increasing Script
=====================================


*** This is very important. You should remove any memory increasing script that you were using. Because /data partition is now on SDcard, using memory increasing script will cause conflict and makes ROM unbootable. ***

That's all, now you can flash your favourite ROM with the new OCed boot image and enjoy overclocking.

NOTE: A new Recovery must be made to support the new /SD-CACHE partition.
Last edited by cute_prince; 27th June 2013 at 04:03 PM.
The Following 70 Users Say Thank You to cute_prince For This Useful Post: [ View ]
25th June 2013, 11:11 AM   |  #2  
cute_prince's Avatar
OP Recognized Developer
Flag Trivandrum
Thanks Meter: 4,027
 
673 posts
Join Date:Joined: May 2012
More
/* FOLLOWING PROCEDURE IS FOR SENSE 4.1 ROM ONLY */


THE PROCEDURE
================


The procedure consists of four parts. They are listed below:
  • Preparing The SDcard
  • Kernel Level Changes
  • Setting Up RamDisk
  • Removing Memory Increasing Script

Detailed description of each part is given below:


PART 1 : Preparing The SDcard
==========================


********YOU MUST USE CLASS 10 OR ATLEAST CLASS 6 SDCARD WITH MINIMUM 8GB CAPACITY*******

CLASS 4 and CLASS 2 SDcards will definitely cause slow responsiveness because /data/data is on SDcard. Furthermore these SDcards can't handle OC at high frequencies and will die out quickly.

SO PROCEED ONLY IF YOU ARE HAVING CLASS 6 OR CLASS 10 SDCARD. YOU CAN TRY CLASS 4 SDCARD BUT YOU CAN'T OVERCLOCK ABOVE A CERTAIN LIMIT AND NO GUARANTEE ABOUT HOW LONG THE CARD WILL LAST.

We are going to create three EXT4 partitions ( First one for /sd-ext, second one for replacing /data and third one for replacing /cache in NAND ) on the SDcard, in addition to the normal FAT32 partition.

Using MiniTool Partition Wizard, create three EXT4 partitions as shown in following figure:




For SD-EXT, around 512MB is enough. It contains only system files.
For SD-DATA, you can give whatever size you want. This where the user applications are installed.
For SD-CACHE, around 65MB is enough.

You should keep the order in which partitions are created. Partition Type for SD-EXT, SD-DATA and SD-CACHE should be Primary.

Assuming you have successfully prepared SDcard, lets go the second part:


PART 2 : Kernel Level Changes
==========================


First, you need to replace arch/arm/mach-msm/acpuclock-7201 with this one: https://dl.dropboxusercontent.com/u/...puclock-7201.c
This contains the overclocked frequencies and logic to dynamically calculate PLL2 values according to different frequencies.

When you look through the overclocked frequencies, you can see I have disabled 900MHz. This is because Class 4 SDcards can't handle data rate at this frequency. Those who have Class 10 SDcards can enable and try whether it is stable for them.

**** DO NOT OC GPU. ITS FAKE AND ACTUALLY DEGRADES PERFORMANCE. REVERT GPU OC IF YOU HAVE ENABLED IT ****

Next, you need to edit the configuration file ( pico_defconfig in my case ) and enable the following option. Its disabled by default so you have to enable it:

Code:
CONFIG_LBDAF=y
That's all. Now compile your kernel.


PART 3 : Setting Up RamDisk
========================


Since, we are not using /data and /cache in NAND anymore, the changes must be made in RamDisk.
All modifications are performed on init.rc file.

Open init.rc and perform the following modifications:

1. Find the following line:

Code:
mount yaffs2 mtd@userdata /data nosuid nodev
Replace the above line with following:

Code:

# Mount SD-EXT
    wait /dev/block/mmcblk0p2
    wait /dev/block/mmcblk0p2
    wait /dev/block/mmcblk0p2
    wait /dev/block/mmcblk0p2
    mount ext4 /dev/block/mmcblk0p2 /sd-ext nosuid nodev noatime nodiratime barrier=0 data=ordered commit=15 noauto_da_alloc nouser_xattr errors=continue

# Mount SD-DATA
    wait /dev/block/mmcblk0p3
    wait /dev/block/mmcblk0p3
    wait /dev/block/mmcblk0p3
    wait /dev/block/mmcblk0p3
    mount ext4 /dev/block/mmcblk0p3 /data nosuid nodev noatime nodiratime barrier=0 data=ordered commit=15 noauto_da_alloc nouser_xattr errors=continue
2. Now find the following line:

Code:
mount yaffs2 mtd@cache /cache nosuid nodev
Replace the above line with following:

Code:
# Mount SD-CACHE
    wait /dev/block/mmcblk0p4
    wait /dev/block/mmcblk0p4
    wait /dev/block/mmcblk0p4
    wait /dev/block/mmcblk0p4
    mount ext4 /dev/block/mmcblk0p4 /cache nosuid nodev noatime nodiratime barrier=0 data=ordered commit=15 noauto_da_alloc nouser_xattr errors=continue
3. Since we are extensively using SDcard, we should adjust the read_ahead_kb parameter for maximum performance:
Add the following lines after this line: mount yaffs2 mtd@persist /persist nosuid nodev

Code:
# SDcard read speed boost
    write /sys/block/mmcblk0/bdi/read_ahead_kb 2048

PART 4 : Removing Memory Increasing Script
=====================================


*** This is very important. You should remove any memory increasing script that you were using. Because /data partition is now on SDcard, using memory increasing script will cause conflict and makes ROM unbootable. ***

That's all, now you can flash your favourite ROM with the new OCed boot image and enjoy overclocking.

NOTE: A new Recovery must be made to support the new /SD-DATA and /SD-CACHE partitions.
Last edited by cute_prince; 27th June 2013 at 08:03 AM.
The Following 34 Users Say Thank You to cute_prince For This Useful Post: [ View ]
25th June 2013, 11:19 AM   |  #3  
Member
Thanks Meter: 19
 
68 posts
Join Date:Joined: May 2013
Our devices need new recovery that can make multiples partition :thumbup:
25th June 2013, 11:24 AM   |  #4  
abhinavthms's Avatar
Senior Member
Flag Kanhangad
Thanks Meter: 258
 
372 posts
Join Date:Joined: Aug 2012
More
/* FOLLOWING PROCEDURE IS FOR SENSE 4.0a AND DERIVED ROMS ONLY */


THE PROCEDURE
================


The procedure consists of four parts. They are listed below:
  • Preparing The SDcard
  • Kernel Level Changes
  • Setting Up RamDisk
  • Removing Memory Increasing Script

Detailed description of each part is given below:


PART 1 : Preparing The SDcard
==========================


********YOU MUST USE CLASS 10 OR ATLEAST CLASS 6 SDCARD WITH MINIMUM 8GB CAPACITY*******

CLASS 4 and CLASS 2 SDcards will definitely cause slow responsiveness because /data/data is on SDcard. Furthermore these SDcards can't handle OC at high frequencies and will die out quickly.

SO PROCEED ONLY IF YOU ARE HAVING CLASS 6 OR CLASS 10 SDCARD. YOU CAN TRY CLASS 4 SDCARD BUT YOU CAN'T OVERCLOCK ABOVE A CERTAIN LIMIT AND NO GUARANTEE ABOUT HOW LONG THE CARD WILL LAST.

We are going to create three ext2 partitions ( First one for /sd-ext, second one for replacing /data and third one for replacing /cache in NAND ) on the SDcard, in addition to the normal FAT32 partition.

Using MiniTool Partition Wizard, create three ext2 partitions as shown in following figure:




For SD-EXT, around 512MB is enough. It contains only system files.
For SD-DATA, you can give whatever size you want. This where the user applications are installed.
For SD-CACHE, around 65MB is enough.

You should keep the order in which partitions are created. Partition Type for SD-EXT, SD-DATA and SD-CACHE should be Primary.

Assuming you have successfully prepared SDcard, lets go the second part:


PART 2 : Kernel Level Changes
==========================


First, you need to replace arch/arm/mach-msm/acpuclock-7201 with this one: https://dl.dropboxusercontent.com/u/...puclock-7201.c
This contains the overclocked frequencies and logic to dynamically calculate PLL2 values according to different frequencies.

When you look through the overclocked frequencies, you can see I have disabled 900MHz. This is because Class 4 SDcards can't handle data rate at this frequency. Those who have Class 10 SDcards can enable and try whether it is stable for them.

**** DO NOT OC GPU. ITS FAKE AND ACTUALLY DEGRADES PERFORMANCE. REVERT GPU OC IF YOU HAVE ENABLED IT ****

Next, you need to edit the configuration file ( pico_defconfig in my case ) and enable the following option. Its disabled by default so you have to enable it:

Code:
CONFIG_LBDAF=y
That's all. Now compile your kernel.


PART 3 : Setting Up RamDisk
========================


Since, we are not using /data and /cache in NAND anymore, the changes must be made in RamDisk.
All modifications are performed on init.rc file.

Open init.rc and perform the following modifications:

1. Find the following line:

Code:
mount yaffs2 mtd@userdata /data nosuid nodev
Replace the above line with following:

Code:

# Mount SD-EXT
    wait /dev/block/mmcblk0p2
    wait /dev/block/mmcblk0p2
    wait /dev/block/mmcblk0p2
    wait /dev/block/mmcblk0p2
    mount ext2 /dev/block/mmcblk0p2 /sd-ext nosuid nodev noatime nodiratime barrier=0 data=ordered commit=15 noauto_da_alloc nouser_xattr errors=continue

# Mount SD-DATA
    wait /dev/block/mmcblk0p3
    wait /dev/block/mmcblk0p3
    wait /dev/block/mmcblk0p3
    wait /dev/block/mmcblk0p3
    mount ext2 /dev/block/mmcblk0p3 /data nosuid nodev noatime nodiratime barrier=0 data=ordered commit=15 noauto_da_alloc nouser_xattr errors=continue
2. Now find the following line:

Code:
mount yaffs2 mtd@cache /cache nosuid nodev
Replace the above line with following:

Code:
# Mount SD-CACHE
    wait /dev/block/mmcblk0p4
    wait /dev/block/mmcblk0p4
    wait /dev/block/mmcblk0p4
    wait /dev/block/mmcblk0p4
    mount ext2 /dev/block/mmcblk0p4 /cache nosuid nodev noatime nodiratime barrier=0 data=ordered commit=15 noauto_da_alloc nouser_xattr errors=continue
3. Since we are extensively using SDcard, we should adjust the read_ahead_kb parameter for maximum performance:
Add the following lines after this line: mount yaffs2 mtd@persist /persist nosuid nodev

Code:
# SDcard read speed boost
    write /sys/block/mmcblk0/bdi/read_ahead_kb 2048

PART 4 : Removing Memory Increasing Script
=====================================


We are going to remove the memory scripts in the rom.But sense 4 roms have some of their system folder mounted to sd-ext.So to remove it we have to make some changes to the updater script

1.Find and remove all lines in the updater script with sd-ext in them.

2.Next paste the following lines just after the line "package_extract_dir("system", "/system");"

Code:

	ui_print("Mounting sd-ext");
	ui_print("------------------");
	run_program("/sbin/mkdir", "/sd-ext");
	run_program("/sbin/busybox", "mount", "-t", "auto", "/dev/block/mmcblk0p2", "/sd-ext");

	ui_print("Preparing sd-ext for flashing");
	ui_print("------------------");
 
	run_program("/sbin/mkdir","/sd-ext/app_s");

	set_progress(0.25);
 
	ui_print("Flashing stuff to sd-ext");
	ui_print("------------------");
 
	package_extract_dir("sd-ext/app_s", "/sd-ext/app_s");
	set_perm_recursive(0, 0, 0755, 0644, "/sd-ext/app_s");
	
	ui_print("Linking /sd-ext contents to /system");
	ui_print("-----------------------------------");

	symlink("/sd-ext/app_s", "/system/app");
3.(Rom dependend):Some Sense 4 roms have more folders in sd-ext.To know that just check in the sd-ext folder of your rom.zip.Then add the required lines under right sections.

Code:

	ui_print("Preparing sd-ext for flashing");
	ui_print("------------------");
 
	run_program("/sbin/mkdir","/sd-ext/system_s");
	run_program("/sbin/mkdir","/sd-ext/usr_s");
	run_program("/sbin/mkdir","/sd-ext/media_s");
	
	ui_print("Flashing stuff to sd-ext");
	ui_print("------------------");
 
	package_extract_dir("sd-ext/media_s", "/sd-ext/media_s");
	package_extract_dir("sd-ext/usr_s", "/sd-ext/usr_s");
	package_extract_dir("sd-ext/system_s", "/sd-ext/system_s");
	set_perm_recursive(0, 0, 0755, 0644, "/sd-ext/media_s");
	set_perm_recursive(0, 0, 0755, 0644, "/sd-ext/usr_s");
	set_perm_recursive(0, 0, 0755, 0644, "/sd-ext/system_s");
	package_extract_dir("bootanimation", "/sd-ext/media_s");
	
	ui_print("Linking /sd-ext contents to /system");
	ui_print("-----------------------------------");
	symlink("/sd-ext/usr_s", "/system/usr");
	symlink("/sd-ext/system_s", "/system/app");
	symlink("/sd-ext/media_s", "/system/media");

4.Now remove the memory script. Try to find the name of the memory script as it is different for different roms.

*** This is very important. You should remove any memory increasing script that you were using. Because /data partition is now on SDcard, using memory increasing script will cause conflict and makes ROM unbootable. ***



NOTE: A new Recovery must be made to support the new /SD-DATA and /SD-CACHE partitions.[COLOR="Silver"]
Last edited by abhinavthms; 27th June 2013 at 09:20 AM.
The Following 3 Users Say Thank You to abhinavthms For This Useful Post: [ View ]
25th June 2013, 11:36 AM   |  #5  
cute_prince's Avatar
OP Recognized Developer
Flag Trivandrum
Thanks Meter: 4,027
 
673 posts
Join Date:Joined: May 2012
More
Quote:
Originally Posted by abhinavthms

Trying now....

This method is only for Cyanogenmod ROMs. Dont try with Sense ROMs. For Sense ROMs, some modifications are required in the procedure.
The Following 7 Users Say Thank You to cute_prince For This Useful Post: [ View ]
25th June 2013, 11:41 AM   |  #6  
Member
Thanks Meter: 19
 
68 posts
Join Date:Joined: May 2013
Quote:
Originally Posted by cute_prince

This method is only for Cyanogenmod ROMs. Dont try with Sense ROMs. For Sense ROMs, some modifications are required in the procedure.

Wht if carbon, jellybeer etc, ??

Sent from my HTC Explorer A310e using xda app-developers app
25th June 2013, 11:48 AM   |  #7  
Sachin Thomas's Avatar
Senior Member
Flag Calicut
Thanks Meter: 566
 
549 posts
Join Date:Joined: Aug 2012
More
Quote:
Originally Posted by sanpedro_bonita

Wht if carbon, jellybeer etc, ??

Sent from my HTC Explorer A310e using xda app-developers app

Should work on all aosp based ROMs
25th June 2013, 12:17 PM   |  #8  
satiz's Avatar
Member
Flag Bangalore
Thanks Meter: 37
 
31 posts
Join Date:Joined: Jul 2012
Donate to Me
More
If I understand you correctly ,
Will overclocking Burn NAND if I mount /system as RW with Root explorer or adb remount ??
25th June 2013, 12:27 PM   |  #9  
<JohnCarter>'s Avatar
Recognized Contributor
Thanks Meter: 1,678
 
752 posts
Join Date:Joined: Jun 2012
Donate to Me
Thanks a ton man !!!

btw i tried it on aokp JB and it DOES WORK

i even uploaded a boot.img for the masses to try out... here : http://forum.xda-developers.com/show...&postcount=282

but one thing i've noticed that if we mount the whole data.. but still wouldn't it affect nand some where.. ?
@cute_prince did you try dsmeg ? did it show any bad blocks ?
The Following User Says Thank You to <JohnCarter> For This Useful Post: [ View ]
25th June 2013, 12:32 PM   |  #10  
cute_prince's Avatar
OP Recognized Developer
Flag Trivandrum
Thanks Meter: 4,027
 
673 posts
Join Date:Joined: May 2012
More
Quote:
Originally Posted by ayushrox

Thanks a ton man !!!

btw i tried it on aokp JB and it DOES WORK

i even uploaded a boot.img for the masses to try out... here : http://forum.xda-developers.com/show...&postcount=282

but one thing i've noticed that if we mount the whole data.. but still wouldn't it affect nand some where.. ?
@cute_prince did you try dsmeg ? did it show any bad blocks ?

No it wont affect any Read-Only portions of NAND. I have already told the reason in OP. Seems like you didnt read it
Yes, I regularly checked dmesg and there is no Bad Block.

Quote:

The partitions in NAND that are affected by OC are /data and /cache. This is because only these two partitons are mounted with RW access. As I mentioned above the increased Write access during OC is what causing the blocks to corrupt. All other partitions including /misc, /devlog, /boot, /system and /recovery are mounted as Read-Only and therefore are not affected.


The Following User Says Thank You to cute_prince For This Useful Post: [ View ]
Post Reply Subscribe to Thread
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes