[Miscellaneous Android Development] th3f33:
rk3188[x7010] - Performance Tweaks, Test Journals, Learning diary, and custom ROM nV 1.03 for x7010

First of all, I wanted to say thanks to LEOLAS of FREAKTAB for all the knowledge I've learned and also for OMA for making his roms PUBLICLY ACCESSIBLE AND FREE!!

PLEASE DO NOT COPY/PAST MY/THIS ARTICLE/POST Without Giving the right credit/Link to this post and XDA Forum too!!!!

I'm A WRITER AND I Dont like PLAGIARISM !!!

although It is fine for me if you will rewrite it in your own words :P

Oh I will introduce my self first, I am From the Country of [>--] Philippines, though very few developer came from our country, this is because of the LACK of INTEREST / PASSION of most of my countrymen.

I am th3f33, Pronounced as DAFFY or read as The Fee, ayt? xD The real name is Demi francisco, I am a Professional DESKTOP and Laptop Tech, and was used to be my previous work / job. Now I am currently focused on Web Developing and Programming (HTML,CSS,PHP,MySQL,JAVASCRIPT,ETC) that's why I am pretty familiar in the way the ANDROID Language goes (C+,Perl,PHyton,java Ayt?). I AM THE MAD PROGRAMMER!! lol XD (Just like hohouin kyouma).

For the sample/preview of my first cooked rom performance, Here is a YOUTUBE Video for it, stress test in HD Games.... http://www.youtube.com/watch?v=mm1ewtDljuk&feature=youtu.be

Vid is 14 minutes long, it would be better to check this first at least the first 5 minutes, and if you are interested, then you can continue to read.

So the device is:

SKYWORTH SKYPAD X7010

(quickly phased out on Skyworth MAIN Upon the release of x7011)

Full SPECS: (Stock)

Rockchip 3188 Quad Core Processore (28nm, 512kb l2 cache, 1.6ghz)

2GB Hynix DDR3 SDRAM 1600(h5tq4g8) Clocked @ 300mhz idle, 400mhz 1.2v

Hynix 8GB Internal Nand FLASH h27ucg8t2atr

Mali 400MP4 GPU @ 600mhz

Wifi and BT By mediatek (MT5931 and MT6622BT)

UP TO 64GB micro sd support

USB OTG

NTFS SUPPORT

HDMI SOCKET

7", 1280 x800 resolution

Audio is Realtek RT3261

NO GPS, No other sensor except accelerometer

Stock OS JB 4.1.1 (Ported/unperfected rom, missing libs, cannot run NBA2k13 on stock rom 4.1 due to the missing lib)

Facebook Group for my Custom Rom with Links to Download - please join my group, im CREATING an Army XD

https://www.facebook.com/groups/187854081403188/

NV v1.03 Custom rom By: Th3f33 (yey its me!~)

Features:

Rooted

Tweaked for MAXIMUM Performance for the price of a little battery timespan.

ANDROID SDK 2.0 4.2.2 (4.3) Based

Incomplete UI (Kitkat Based/Transparency), Not calibrated very well...

Internal storage(system) increased from 1GB to 2GB while internal SD decreased to 4.4gb

Anti-Aliasing x4 Unlocked on Developer Options

Comes with the CWM Recovery (Thanks again to LEOLAS!!! YOU ROCK!! HAPPY NEW YEAR)

Faster Reading And Writing Speed

Nand Flash and RAM Tweaks

GPU Tweaks!

99.7% Fully Functional and Error Free (As far as I tested, until Nov 2013, Im not sure right now, but may not have any problems updating google apps at all)

Bloatware Removed / Reduced

Added Apps:

Root Explorer

Jota+

Android Kitkat 4.4's Office

Android Kitkat 4.4's Google Launcher

Chrome

Rebooter App

PPSSPP (PSP Emulator)

Viper4Android Sound Effects

DOWNLOAD LINK IS SOMEWHERE IN THE MIDDLE of the whole article...

if there are some that i had forgot to mention, please do remind me XD

Instructions.

1.Install Adb Drivers after downloading the zip,

2.enable usb debugging or enter the bootloader mode by turning off the device, then holding both the volume button and power.

3.run the nV flasher, install drivers, if not yet in bootloader mode, reboot now by pressing the reboot on the flasher.

4.clear nandb then flash!

I AM NOT HELD RESPONSIBILITY IF IN ANY CASE YOUR DEVICE GETS BRICKED!

EXCLUSIVELY FOR Skyworth's Skypad x7010 only, but may also work on chuwi v88 [not tested]

I do provide unbricking service for a fee, but if you will read thoroughly this whole post, you will see the keywords to search for to unbrick rockchip rk30 devices!

DETAILS

I do believe that these tweaks / Performance increase / Speedup can be applied to all RK3188 devices, with the same logic / techniques can also be applied to rk3066 to maximize the performance. BUT BEWARE ON THE RAM(MEMORY) CHIP!!!!

Now here are the information on What i Modded and how to Improve the Performance

NOTE: (If the performance of my tablet on the video on youtube is the same as the performance of stock rockchip rk3188 tablets/devices, please do say it to me so that I will be able to change some Description on all of my posts across the INTERNET!! Thank you!)

so.... here is the learning diary and test journal

CHAPTER 1. Full brick at 1st week

The x7010 did not had any kind of update OTA from skyworth, and was replaced quickly by x7011. Since skyworth is a chinese company, i am not really expecting anything from them. but the sad part for me was when i bought the tablet, (About $150 converted currency) and then looked over the internet for supports such as CWM Recovery, CROM, Cyanogenmod or anything else, I FOUND NONE! Great! Not even a Copy of STOCK ROM! Which give me the idea of studying/learning the developing since i had already interested in doing so, and will also make me one of the pioneer custom developer/cooker for our device.... YEY!!... but it was not easy, IT WAS A HARSH PATH....

After my 1st week of trying, I already got a FULL BRICK ON MY DEVICE, But lucky me, im a great actor, so it ended up replaced from the store since it was still covered in the 1week replace 1 year service warranty. (I had softbricked the device by trying to flash Finless rom 1st try, then glassrom 2nd try, then i fully bricked it by flashing with no bootloader & parameter, erase nand db so that the store wont find out that it had been rooted and flashed!)

Chapter 2: Unbricking Success!

So on my 2nd chance, First thing i did was to do a ROMDUMP for backup (NO CWM YET), then I tried to create another CWM Again BUT I FAILED, Where i left it as is with no recovery but working system.... then i posted my 1st post here and in freaktab WHERE I stated that I want to learn and dont want to be spoonfed... Then after a few days, leolas tried to make the CWM!!! but I cant seem to flash it via flash_image, so I used a 1.37 rk tool, to flash the recovery, (Now i know that i messed up the partition offset of the recovery before so it doesnt really boot to recovery!). but by testing out what i understand from the forums, researched alot regarding parameter, mtd partition, the way android system boots and operates, i finally flashed the CWM Successfully on my device! so i backed up trice the device, and since i was so excited, i tried to flash a new rom again, but the excitement and an old mouse that double/triple clicks BRICKED my device by flashing it with NO PARAMETER AND BOOTLOADER, and all other are checked and the flash are already being erased.

No more bootloader mode, no more adb, not detected in PC In any way. then i found out the pin 8& 9 shorting for the nandflash unbrick method, tried it, stripped down my tablet, but i was so sleepy so it resulted in a failure. I dreamed that i will be able to revive the device by retrying it so when i woke up, the first thing i did was to do the PIN SHORTING then i plugged the usb cord, then poof,! Success! MASK ROM MODE FOUND!! then flash my romdump (Backup from cwm with tar and tar.a cannot be flashed ). Although i have one problem, the dump have the system in .tar and i need a .img, so once again, GOOGLE! kept on searching till i stumbled on a forum where an instruction of how to make a System.img flashable from update.zip. Using a Linux mint VM then plus learning basic syntax of linux, got it working ! .

Chapter 3 - BRAVERY!

This scenario made me think that NOTHING CAN STOP ME NOW! since it was the most difficult part for me, especially the unbricking part. so ill make it a little bit short, i flashed many roms, and recorded the differences for every rom,(ALL ROM ARE FOR RK3188, m9, u8gt,mk908, t428, glassrom, m9, etc), some rom displays, some don't, some boots, some doesn't. I also learned to logcat, read logcats, read and debug using dmesg. the rom that had been most compatible for my device is the chuwi rom v88 by oma (Yeah it rocks!) with working wifi, bluetooth, and everything else except for 3 problems, Inverted Camera, Accelerometer not working and NO SOUND! NO AUDIO! WAAAAA but was able to use it still, and checked the performance. run some benchmarks, played some games, although no sound, it was fine, with a few random lagging.... still, i continued to study it and modifying.

Next part was the System UI - framework.res and baksmaling and modfying apks, mostly for the User interface, and those were pretty easy since you can use the TRIAL AND ERROR Technique!. I have already the idea for the configs in build.prop, and just did some trial and error. By doing all of this, continuously, i am learning different syntax & commands too using adb and terminal emulator. so in the end, i maximized the performance of the rom, without touching the kernel. But i still notices the lag, one scenario is this, Fresh boot, Playing NBA2k14, then by some reason, after the camera zoom, the game slows down or get a little lag, about 22 - 28 fps, in order to get back to the max fps gaming, sometime i touch the notification area, sometime pause - resume. and when i am on max fps on any game, then accidentally touched the home / recent button, when i return to the app, it gets so lag! and when playing simultaneous game, it gets really lag.

Start the tweaking

I know this symptom, Applying my knowledge & experience in desktops. I had declared to myself that THIS IS THE EFFECT OF A BOTTLENECK! (Unbalanced specs & performance) or Memory bus width too low therefore bandwidth limits the overall performance so i checked the OC of the device, then found out that it was not overclockable thru software.

Google is my friend, and found out that i need to compile my own kernel that enables the Clock adjustment of the device to exceed the 1.6ghz. I was too naive that I Underestimated RK3188's Power. my initial goal was to OC the CPU itself, but after googling hours and hours, asking my mentor on how to compile a kernel, looking for sources which was the same for our device, eventually i found none xD, then, I stumbled upon.... OVERCLOCKOMATIC / Patchomatic!! a linux app that enables patching kernel's clock settings. And i found out that it can patch ram / gpu / cpu!

Since i was An Experienced Overlclocker (Overclocking on desktop, e5400 (2.7ghz Raised to 3.15ghz), On AIR / STOCK FAN + Exhaust & intake circulation). First i did was a hand made heat spreader (To make this, you need an aluminum foil, fold it into three, with the width of about 1-1.5 inch, then cover most of it with any tape except for the part that will be connected to the target(my target is the cpu), and the other end for the receiver/outer/safe place to transfer heat.) first, my target is my procie and spread it through the sd card slot, and another one from the procie to the aluminum case on the wifi & bt (it was covered!) i moved the 1st end from the sdcard slot to the back cover later on when i realized that i might damage the sd card or the socket itself .

Then I tweaked it and tweaked it for days, checked stability, compared results.

our kernel is 3.0.36 compiled on ubuntu! Yey! at first i was running the device on 1.8ghz, then later on i reverted it back to 1.6ghz, due to heat issues that may damage the device with prolonged use and to save battery spantime too.

But not everything is about the clockspeed, especially when i checked the GPU CLOCK IS ALREADY MAXED, So what would be the cure or solution for the bottleneck....

of course, the logics of tweaking a processor or ram or gpu are the same for the desktop. SO HERE ARE THE MOST IMPORTANT THINGS THAT I LEARNED AND WILL SHARE FOR EVERYONE EVEN IF THEY ALREADY KNEW IT OR HAD IT ON THEIR DEVICE ALREADY OR DOESNT hAVE A CLUE!

Chapter 5: OVERCLOCKING? the correct term to it for me was clock correcting / clock tweaking.

This is the EXACT modification of the kernel clock and stepping on both cpu & gpu and ram on my kernel which IS INCLUDED IN MY CROM Where everyone in our country(philippines) with x7010 tried and was satisfied of the great improvement of performance. and last week, some russian had already visited our facebook group and was testing my rom already . they also shared some roms of their own, although i think they are ported too.

nV 1.03 [first Edition] by th3f33 Download Link:

http://bagongpleion.net/th3f33/nv103.rar

RAM

modifying the RAM (2g DDR3 sdram 1600mhz) to be run @800mhz like a ddr2 instead of the stock @400mhz like ddr1 thus increasing the bandwidth have a huge impact on MALI-400mp4 gpu since the Quad Core Rockchip Processor were fast enough to make up for the lost clock cycle but lacks bandwidth because of the 32 bit bus width. BEWARE! Our ram is 2gb ddr3-1600mhz, which have a normal voltage of 1.5v. Low profile sdram modules have only 1.2 / 1.3v normal running voltage. YOU WILL NEED TO MANUALLY CHECK THE SDRAM MODULES ON THE DEVICE ITSELF TO IDENTIFY What type of ram it is, is it a ddr3 sdram? ddr2? a low profile? and clock timings? Ive used google to fully identify my hynix ram specs and even tried running the RAM @ 800mhz 1.5v and no restarting / corruption issues! it just that it drains the battery really fast. for our device, the exact and sufficient Voltage for the ram to perform well @ 800mhz is around 1.3v - 1.35v although im using 1.3v only. THIS IS NOT APPLICABLE TO ALL RAM and WILL REQUIRE MOST OF THE ATTENTION, EFFORT AND TIME TO APPLY CORRECTLY AND SAFELY!

I cannot guarantee your life or you freedom !

Some Info on ram: Lower clock speed of ram have faster clock cycle (on default clocks of actual ram sticks) Higher Clock Speed of ram have slower clock cycle BUT Bigger Bandwidth.

Low Profile RAMS Uses less energy(VOLTAGE), expect a slight decrease in overall performance....

Some Rams have lower clock cycle and latency in their stock settings compared to other. This are the high profile / OC'ed version of rams..

Anonymous asked: "Why did you use ddr800 against ddr400 config for our ram?"

RK3188 is a quad core processor with 512kb (L2 cache per core i believe) running @ 1.6ghz which are ULTRA FAST and can be compared to an AMD athlon Mobile processor ! it was so fast that before that RAM Cycles to refresh, all the data have been stored in the ram had been processed already, so there was really no need for the quick cycle, PLUS The GPU Is an Onboard/SOC/bundled along with the CPU (like intel's I series and AMD A Series). Now They will need a Bigger bandwidth so the power of the cpu can be utilized more since more data (RAM IS 2gb, can store a lot of data! Really...) can be passed as the bandwidth is higher. therfore GPU have a wider data path for transferring the rendered graphics data to the cpu to process then pass back to the GPU or ram, dpending on situation, without clogging up the I/O Path.

Short Answer: Faster GPU and Read/Write speed at no cost (aside from a little energy drain for the increased voltage of ram, since the cpu can handle that load!)

Chapter 6: Cpu and GPU

CPU

Kernel patched, using rkpatchomatic / overclockomatic! (linux)

I also reduced the Clock stepping and adjust the voltage of the cpu from:

312mhz @ .9v

504mhz @ .925v

816mhz @ 1v

1008mhz @ 1.075v

1200mhz @ 1.150v

1416mhz @ 1.250v

1608mhz @ 1.350v (this may not be right, if i am not mistaken it was only 1.3v @ 1.6ghz on stock)

(6steppings)

to

504mhz @ 1v

1008mhz @ 1.115v

1416mhz @ 1.250v

1608mhz @ 1.350v

(4steppings)

AND the GPU speed increase by loading the driver module with:

insmod /system/lib/modules/mali.ko (removed mali_dvfs & mali_init_clock=133)

and also changing the GPU voltage and stepping FROM:

133mhz @ .975v

200mhz @ 1v

266mhz @ 1.025v

300mhz @ 1.050v

400mhz @ 1.100v

600mhz @ 1.250v

(6 Steppings)

To

200mhz @ 1.05v

400mhz @ 1.15v

533mhz @ 1.2v

600mhz @ 1.35v /1.3v

(4 steppings)

OR

266mhz @ 1.05v

400mhz @ 1.175v

600mhz @ 1.35v

(3 steppings)

The Steppings Reductions Resulted in a VERY VERY Fast Application Switching (Not using a multiwin rom, but able to run about 6-7 HD games with seemingly no lags on switching). BUT Additional battery power may be consumed because of higher idle values for each settings.

My theory, explanation, and strategy was.....

GPU & CPU Steppings logic are the same, while for the GPU the clock increases, so as their texture and pixel fillrate. But gpu power may not be nough @ 1.25v during heavy loads, that is why i've used the maximum allowed voltage for the gpu, and adjust most of the voltages so that the system will never be short on current especially when switching state.

Wanderer asked: "why did you reduced the steppings and what exactly is that?"

Stepping is the term I used for the clock settings / stop point, It came from intel, they use Speedstep and steppings. as you can see, Most of the time, when not playing hd games or not running so many many apps, The cpu (based on my new config) will either run fine at 500mhz, - 1ghz only. (large bandwidth maximizes the power of the quad core of rockchip). so it wont need to adjust itself to 1.4ghz unless it really needs it, and it will not revert back to 500mhz unless all apps and memory are cleared and closed. (Even if you press the recent apps, it will stay @ 1ghz and will not drop to 500mhz). When running a solo HD game, except for 2013 Q4 HD games like CoD & GTA SA, cpu will be fine @ 1ghz, when running other apps, like browser, music player, etc etc, it will be kept in memory, and the cpu will have to speed up itself so it will be stable @ 1.4ghz, when running multiple hd games, it will run @ max 1.6ghz.

The stepping settings helped the cpu to be STABLE @ certain clock during prolonged usage.

Plus, rk3188 is not a very good at clock switching / stepping adjustment. Some users of rk3188 uses a cpu tweaker and set their clock permanently to 1.6ghz right? but it consumes battery faster. I tried different numbers of steppings and clock config and this was the best result for performance. Well in reality, if you are going to overclock a desktop processor, you will disable the speedstep or clock switching feature because it consume power and energy. imagine that the processor needs to consistently monitor the cpu load and adjust it according to its needs. even a human will have a delay of a few seconds during the adjustment and calibration of the strength, the same logic applies to the processors too, plus if you will add the stress of the switching of the GPU, bugs and lags are generated, sometimes, it takes quite a while for the gpu to adjust its clock, from 133, to 200, then lags a little, adjust cpu, then gpu from 200 - 400, then suddenly you pressed the home button while playing, gpu reverts back to 133mhz which is far from the max, ew, where in my config, you start at 233, making everything seems to be so smooooooth, even if you enable AAx4 in the developer options you wouldnt notice the impact of it in performance, then you can disable hw overlay and enable gpu rendering too to maximize performance! if you want to save battery, then choose the 4 steppings on gpu, if you are a hardcore gamer on tablet, then use the 3 steppings on gpu, if you want more, replace the 400mhz config in the 3steppings with the 533 from the 4steppings.

STORAGE

I have Also increased the Speed if reading / writing in the nand flash by mounting mtd partitions with:

ro noatime nodiratime noauto_da_alloc data=writeback barrier=0 nobh

TIP {

instead of using an app to mount the android folder in external sd, you can use a terminal emulator, then this command to mount the folder from exterlan sd - internal, so you can play more games! (Note: please do create the /Android/data and /Android/obb on both internal and external SD

$ su mount -o bind /mnt/external_sd/Android /mnt/sdcard/Android

or

# mount -o bind /mnt/external_sd/Android /mnt/sdcard/Android

to remove the mount/bind

$su umount /mnt/sdcard/Android

or

# umount /mnt/sdcard/Android

The mount / bind is not permanent though, and you will need to enter the command every restart of the device.

}

end of message...

Elp Psy Congroo

XDA:DevDB Information

nV v1.03 [1st revision], a ROM for the Android General

Contributors

th3f33, th3f33

ROM OS Version: 4.2.x Jelly Bean

ROM Kernel: Linux 3.0.x

ROM Firmware Required: ANY x7010 firmware / softbricked

Based On: AOSP

Version Information

Status: Stable

Current Stable Version: v1.03

Stable Release Date: 2013-11-14

Current Beta Version: v1.00

Beta Release Date: 2013-09-09

Created 2014-01-07

Last Updated 2014-01-07