Today's guide is aimed at owners of the HTC Touch and the T-Mobile Wing, as they are 2 devices that seem to have particular problems with device memory, but the same techniques can probably be applied to other devices (untested by myself).
HTC Touch and T-Mobile Wing owners will know that these two devices suffer somewhat from low memory problems. Users need to be careful with what they have running at any one time, particularly if launching memory hungry applications such as the Camera.
Deep in the depths of the operating system of your device, there is something called the 'PagePool'. Without going into too much detail (and as I understand it!), the PagePool is a special area of memory reserved for loading apps into from ROM. This PagePool is a lot faster than ROM, so when things are executed from this 'cache' instead, the performance of a device will be quicker. On the flipside, if you have a 8MB pagepool (HTC Touch) and you're using, say, 4MB of the pagepool, then 4MB of space is wasted that could be program memory. Similarly if you have a 12MB pagepool (!) (T-Mobile Wing) in this instance you would we wasting 8MB of space!
The key is striking the balance...
On both my Touch and my Wing, i've been experimenting with the PagePool, and have personally settled on 4MB. I've tried 2MB (bad), 4MB, 6MB and 8MB, and I think I can happily use 4MB without noticing a performance decrease. I'm tempted to try 6MB out for a bit longer, particularly on the Wing (which has a generally better state of affairs than the Touch it seems), but this guide will let you choose your own.
Sadly, these PagePool settings are in an area that cannot be easily changed, hence this is a ROM guide.[/teaser]
Firstly, a disclaimer.
This guide involves downloading, editing and flashing of your device ROM.
This is dangerous, very dangerous. In a worst case scenario using these techniques, your device will become unusable, with a corrupted 'OS area'. While your bootloader will (should) still be accessible, your device will be a paperweight until such time as a RUU (Rom Update Utility) becomes available for your device with the shipping ROM. We won't be able to help you, and your operator / manufacturers won't either. It's quite possible your warranty will be invalidated by editing your ROM.
If you follow this guide, you take full responsibility for what could happen. I have of course successfully been through this guide myself, but be aware that I TAKE NO RESPONSIBILITY SHOULD SOMETHING GO WRONG.
You've read the disclaimer and you want to have a play, now what do you need to do? Here's the guide... enjoy
Step 1: Install the permissions CAB to your device
In order to be able to do the read / write operations on your ROM, the security on your device needs to be set up in a certain way. Download this CAB file, and run it on your device.
ITSUTILS_Preperation.CAB 29.09K 5218 downloads
Step 2: Create a directory and download itsutils
Now we need to create a working directory. I suggest creating a directory called 'pagepool' on your desktop. When you've done this, download this ZIP file, and extract it to the new directory.
http://nah6.com/~its...in-20070323.zip (Kudos to Willem Jan Hengeveld (aka itsme) for this excellent toolkit!)
Step 3: Extract the ROM from your device
We're now going to extract the ROM from your device. This is a completely safe operation, so don't panic yet Take the following steps...
- Ensure device is connected to PC and Activesync'd / WMDC'd
- Open a command prompt at your new directory
- Type 'pdocread -l' (minus the quotes of course)
You will then be presented with something that looks like this:
70.95M (0x46f2000) TrueFFS | 3.06M (0x30fc00) Part00 | 3.06M (0x310000) Part01 | 64.82M (0x40d2000) Part02We want to read the Part02 area (the bottom line above), so...
- Type 'pdocread 0 0x40d2000 Part02.dump' substituting 0x40d2000 with the appropriate value from your 'pdocread -l' output
You will see something like 'CopyTFFSToFile(0x0, 0x40d2000, Part02.dump)' appear, and after a wait of a few minutes (it is dumping a lot of data!), you'll be returned to the command prompt. During the operation you can open Windows Explorer to your working directory and see the file growing.
Step 4: Use a hex editor to modify the pagepool size
To edit your Part02.dump ROM image, you'll need to use a Hex Editor. The instructions below assume use of the excellent, free HxD application.
After installing and launching HxD, do the following...
- Open your new 'Part02.dump' file
- Click 'Search'
- Enter 'NKKD8'
- Press F3 to find the second instance
- Click 'Search' again
- Change 'Data Type' to 'Hex Values'
- Enter 'FF FF FF FF FF FF FF FF 9B 4F FF FF 64 B0 00 00' and hit search
You will then be presented with the search results as shown below.
After 8 more values, you'll see your pagepool setting. In the screenshot aobve, it is set to '00 00 40 00', which means 4MB. The possible values are as follows:
4MB = 00 00 40 00
6MB = 00 00 60 00
8MB = 00 00 80 00 (HTC Touch default)
12MB = 00 00 C0 00 (HTC Wing Default)
(for reference, on both my Touch and my Wing the offset location is 37B558... you can go straight to this location be selecting 'Search -> Goto').
So, to change your pagepool size...
- After locating your current pagepool value, update it to one of those shown above by selecting the value and overtyping
- Select File -> Save As, and enter a new name (e.g. Part02.4MB.dump)
- Exit the hex editor
You have now edited your ROM dump, and are ready to flash it back to the device!
Step 5: Flashing your edited dump back to the device
So this is where it gets dangerous. If you've done something wrong with your dump, then nasty things could (probably will) happen. If the flashing process goes wrong, then nasty things could happen. One final warning - you undertake this step at your own risk! Ready to continue? OK then...
- Ensure device is connected to PC and Activesync'd / WMDC'd
- Put the device in flight mode. This is for safety reasons... receiving a call during the flash would probably be bad
- Open a command prompt to your working directory (or use the one you already have open)
- Type 'pdocwrite Part02.4MB.dump' (or whichever name you used in the step above)
You will see something like 'CopyFileToTFFS(part02.4mb.dump:0, 0, 040d2000)' appear, and after a wait of a few minutes (it is writing a lot of data!), you'll be returned to the command prompt. DO NOT USE THE DEVICE DURING THIS OPERATION!
Step 6: Soft reset, cross fingers
Has that command finished (i.e. you have control again at the command prompt)? Then you're done! Simply press the soft reset pin on your device, and when it comes back up, you should see you the amount of program memory in the Settings -> Memory applet has changed. Good job! You can breathe easy again