[G1 Android Development] wrb123:
Note: This guide is for beginners who might have barely been able to get a custom rom running on their phone, who might not know how to unzip a file on their android phone, and who are not comfortable navigating a linux file system, but who are daring enough to try a simple hack to get significantly more speed out of their phone. Before reading this, please read the thread in the first reply below this post, and if that works for you - use it! If you want to know more, find out what its doing, or if the other Jit hack technique does not work, you can try this. Or you can tell me I fail. Maybe a moderator could move this thread to the basic G1 subforum?

Hello,

I really enjoy both Super D rom and the Jit hack posted by xda member licknuts in the post called [HACK] JIT enabled Dalvik VM on Android 1.6 (Dusted Donuts) [Hack] - the link to this post can be found in the first reply here, if you scroll down.

So, I thought id post a guide on how to accomplish this hack using Amon_Ra's recovery, Super D or Cyanogen rom (probably works on other roms listed in first post of above thread), and a couple apps available from the android market. I'm not trying to take any credit for this hack - I'm just trying to explain it step-by-step for people who have barely managed to get a rom running on their phone but can't get the hack working using the instructions in the above thread and might not be very experienced with navigating around a linux filesystem.

Please read all of this before beginning - you'll need to write some of it down for when you're in the recovery console doing some file copying/moving/renaming. Especially take note of the instructions at the end for restoring in case of a disaster, although if you're really afraid even after following these instructions, you probably shouldn't try this.

1. Download and install AndroZip File Manager app from android market.

(this is so we can un-zip or decompress a .zip file we will download later containing a modified libdvm.so file, which we will use to replace the original libdvm.so file, enabling Jit)

2. Download and install Linpack For Android app from android market.

(this is so we can benchmark or test our phone to make sure this hack actually works. we can measure the MFLOPS score, or basically how many calculations the cpu is able to perform in a set amount of time)

3. Run Linpack For Android and press "Run Benchmark" - remember the MFLOPS value.

(it should be around 2.5 or so - when we enable Jit, we should get more like 3.5 MFLOPS which means more speed)

4. Download a specific file from the original thread listed above, BUT get the file from alldroid by t3hsteve... its in the first post of the above-mentioned thread about halfway down.

(if this link goes down, the point is that you need to obtain the new modified jit-enabled libdvm.so file from somewhere, either in a zip file or by itself, and download it to your phone so you can use it to replace the original libdvm.so - the instructions that follow apply only to the specific file above. If you get a different file you'll have to navigate through the unzipping process differently based on where the libdvm.so file is inside the zip file, and the result being the modified libdvm.so file in the root directory of your sdcard (/sdcard) - if you download the correct file from that post you can follow the instructions below exactly. I would post the link but I'm not allowed to post outside links.)

5. Run AndroZip app, and navigate to your download folder. This should just require clicking the "download" folder, since you should already be in the ./sdcard folder which will be listed as your current directory when you start AndroZip.

(If you're not in this directory, navigate back as far as you can by scrollng up in the app and tapping the blue/left arrow to go "up" or back a direcory. You aren't done with this step until you see ./sdcard/download/ at the top of AndroZip and you can scroll down to see the file "dusted-donuts.zip" - this is the .zip dile we downloaded that contains the libdvm.so (and some other files). If you downloaded a jit-enabled/hacked/modified libdvm.so from a different source, you don't need to be doing any of these unzipping steps.)

6. In AndroZip, click "dusted-donuts.zip" and click "extract to." Then click the back arrow in AndroZip, which should take you to the ./sdcard directory. Click "extract here."

(you will see ./sdcard at the top of AndroZip indicating this is the directory you changed to. When the "successfully unzipped file" message has appeared, you have extracted the libdvm.so and possibly some other harmless files which can't do any damage since they're just in your download folder and not one of your android system folders.)

7. In AndroZip, click the "dusted-donuts" folder, which will have appeared after you extracted the above zip file, and then click the "lib" folder (this is all part of the zip file you extrated) - this is where the modified libdvm.so file is. Click AND HOLD the libdvm.so file, and a menu will appear. Click "copy." Click the back arrow (scroll up in the AndroZip app if you can't see it) until you have reached ./sdcard again (you will have to click it twice, once to go from /sdcard/dusted-donuts/lib/ to /sdcard/dusted-donuts/, and a second time to go from /sdcard/dusted-donuts/ to /sdcard, which is where we want to paste the libdvm.so file. Click "copy here" in the upper right - the "copy action successful" message should appear. If you scroll down, you should see libdvm.so and at the top of AndroZip you should see that you're in the ./sdcard folder.

8. Reboot into recovery console.

(the place you go to flash a custom rom and do other low-level operations, by rebooting your phone, or powering it off and then starting it back up and holding Home key and Power key at the same time. Don't hold them when your phone is still shutting down or rebooting, wait until the screen has turned black. You only need to hold them until the G1 screen shows up with white text and the phone vibrates briefly. Then you can let go and you will enter recovery. If the system boots normally, pull the battery and try again.

9. Click "go to console"

(Slide your screen so you can use your hardware keyboard if you haven't opened it already. At the console you might see the message "press enter" - if you do, press enter to get a command prompt. Pressing enter even if you don't see this message won't hurt anything. You should see a command prompt, which is a character or set of characters at the start of a line prompting you for or waiting for a command to be entered. It should look like / or # or # / or > or anything like that. It might also have a flashing cursor, or underscore character that looks like _ or something similar.)

Now we are going to back up the old libdvm.so file and put the new modified one in its place, enabling Jit for a speed improvement.

10. Type these commands, pressing enter after each line:

mount /sdcard

mount /system

(You have now enabled access to or "mounted" your sdcard directory (where the new libdvm.so file is) and your system directory (where the current libdvm.so is) so you can do file operations on them such as copying/pasting and moving/renaming.)

11. Type these commands, pressing enter after each line:

cd /system

cd lib

(You have changed directory (cd command) to the system folder you have just mounted in step 11, and then you have changed directory again to the lib subfolder of the system folder which contains various library files like libdvm.so - optionally, you could just type cd /system/lib and press enter.)

12. Type the following command, and press enter:

mv libdvm.so libdvm.old

(You have used the mv command (move) to rename a file, by "moving" it from one file name to another. This command can also be used in linux to move a file to a new directory sort of like cut and paste. Instead, you could choose a different extension at the end of that command, maybe .bak or something (mv libdvm.so libdvm.bak) - the point is you're renaming this file so its still available if you ever need to restore it (if this process doesn't work or you just want to go back to the way it was).)

13. Type the following command, and then press enter:

cd /sdcard

(This changes directory (cd) to the sdcard folder, where your libdvm.so file should be if you followed the steps above. We have to use a leading slash / before sdcard because we are telling linux or the terminal to change to a new main directory and not a subdirecory in the /system/lib directory, because that doesn't (well, shouldn't...) exist.)

14. Type the following command, and press enter (note that the first letter is lower case L):

ls libd*

(This will list (ls) all files (or folders too i think) that start with libd, such as libdvm.so file. I if there are no results, or you just see another command prompt, try typing ls by itself and pressing enter. This will show you all files and folders. Hopefully you see the libdvm.so file as a result of doing this ls command. If not, and you're scared and want to go back to the way things were, type: cd /system/lib ...then type: mv libdvm.old libdvm.so - Do Not do that if you are continuing on, it basically undoes what we did in step 13.)

15. Type the following, then press enter:

cp libdvm.so /system/lib/libdvm.so

(This will copy (cp) the modified/hacked/jit-enabled libdvm.so from the current directory (/sdcard) to /system/lib/ so it is in the correct system folder so Android can see it.

You might also try cp /sdcard/dusted-donuts/lib/libdvm.so /system/lib/libdvm.so if you extracted the zip file correctly in one of the steps above but did not move it to the proper place, if the above command doesn't work.)

16. Type the following, and press enter after each line (note that in the 2nd line, the first character is a lower-case L):

cd /system/lib

ls libdv*

(This will change directory (cd) to /system/lib, the libdvm.so folder which will now contain the libdvm.so file you copied there in the last step as well as the libdvm.old file which is the original libdvm in case you need to remove this hack and restore it. The ls command lists files starting with the letters libdv...)

Now you have finished, you can type reboot and press enter. This time, don't worry about holding home and power, because we just want Android to boot normally. This might take a while, but don't worry. Worst case scenario you can pull the battery and reboot into recovery (hold home + power) after you put the battery back in. Then you could do something like this to restore your original backed-up libdvm.so:

ONLY DO THE FOLLOWING IF... you want to restore your system back to normal and remove the modified libdvm.so file:

mount /system

cd /system/lib

ls libd* (confirm you have both libdvm.so and libdvm.old)

rm libdvm.so (removes libdvm.so, like delete command)

mv libdvm.old libdvm.so (moves libdvm.old to libdvm.so, like rename command)

If this doesn't work to restore, I'm sorry but you'll have to re-flash your custom rom from recovery.

You can check that this hack is working by using Linpack app and clicking the Run Test button, you should see approximately 3.5 MFLOPS. Click Run Test a few times and that number might grow a little if it is less than 3.5.

Thanks to the original poster licknuts mentioned above - all credit goes to him and the original people who figured out this hack in the first place.