Related
One of the biggest complaints with Microsoft's Compact Framework 2 (CF2 for short) (and, consequently, with programs relying on it - Hitchhiker, SMS Notifier, Webby, IBE Mail etc.) has always been its storage needs, which, by default, is some 5.4 Mbytes. See for example this thread for users' opinions on the memory consumption on CF2 and their subsequent not wanting to install it.
I've always tried to reduce the main memory load on Pocket PC - with great success. Just search for the word-start "relocat" in the Pocket PC Magazine Expert Blog and on my old homepage for some examples of them. No wonder I've also decided to look into this, so far, unsolved problem to greatly help my fellow Pocket PC users. And, after a day's work and testing, I can present you a 100% working solution, which has been thoroughly tested on four of my WM2003+ PDA's, all with success. This IS a big thing, considering that internal memory is still precious, even with most Windows Mobile 5 (WM5) Pocket PC's. (For example, most WM5 PPC's are shipped with 128M of ROM, of which in general 40-45 Mbytes is free.) The situation is even worse with pre-WM5 Pocket PC's, where the available RAM is very rarely (only with devices shipped with 128 Mbytes of RAM) over 50 Mbytes, from which CF2 takes away 5.4 Mbytes.
Note that this will work on all Pocket PC and Pocket PC Phone Edition devices that are able to run CF2 (that is, all WM2003+ devices, including WM5).
The complete tutorial
* create a directory on your storage card or, if you have, in the built-in File Store. (Note that the files, as they are surely not needed at boot time (unlike some Today plug-in DLL's), may also be relocated to a storage card. That is, they don't need to be stored in the more scarce File Store - if it's available at all; that is, if you have a pre-WM5 device). Let's assume you give this directory the name "DLLs".
* move the following files from \Windows to this directory:
cgacutil.exe
MSCOREE2_0.dll
netcfagl2_0.dll
netcfd3dm2_0.dll
GAC_CustomMarshalers_v2_0_0_0_cneutral_1.dll
GAC_Microsoft.VisualBasic_v8_0_0_0_cneutral_1.dll
GAC_Microsoft.WindowsCE.Forms_v2_0_0_0_cneutral_1.dll
GAC_Microsoft.WindowsMobile.DirectX_v2_0_0_0_cneutral_1.dll
GAC_mscorlib_v2_0_0_0_cneutral_1.dll
GAC_System.Data_v2_0_0_0_cneutral_1.dll
GAC_System.Drawing_v2_0_0_0_cneutral_1.dll
GAC_System.Messaging_v2_0_0_0_cneutral_1.dll
GAC_System.Net.IrDA_v2_0_0_0_cneutral_1.dll
GAC_System.Web.Services_v2_0_0_0_cneutral_1.dll
GAC_System.Windows.Forms.DataGrid_v2_0_0_0_cneutral_1.dll
GAC_System.Windows.Forms_v2_0_0_0_cneutral_1.dll
GAC_System.Xml_v2_0_0_0_cneutral_1.dll
GAC_System_v2_0_0_0_cneutral_1.dll
(netcf2_0license.txt can also be copied here - or just deleted.)
This means only Microsoft .NET CF 2.0.GAC and mscoree.dll needs to stay in \Windows. Never ever try to touch the former (Microsoft .NET CF 2.0.GAC). Even if you copy it back to \Windows (after starting any CF2-dependent app), CF2 won't work again until you reinstall it.
Copying the files can be done in several ways, of which I show the one way that requires no third-party apps, that is, without having to resort to, for example, the WindowsCE File System plug-in of the desktop-based Total Commander.
Start the built-in (Pocket) File Explorer and navigate to \Windows. Tap and hold an empty (not highlighting any file or directory) region anywhere (for example, the end of the list) and enable "View All files" in the context menu:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Now, click the "Name" drop-down menu in the upper right corner; a "Sort By" list will be displayed, defaulting to "Name". Switch it to "Date":
Scroll to the region with filedates of Aug 26 and, with cgacutil.exe, 27, 2005 (this is the easiest way to find the files) and mass-highlight all files that are listed in the above list. Note that mscoree.dll should not be highlighted (as has been pointed out, it should be left in \Windows). Also note that the filedates of the current, 2.0 version of CF2 are all dated at Aug 26/27 last year. They will only have a different filedate if you've restored them from a backup. Then, they will have the timestamp of the restoration and you'll may end up having to hunting for them one-by-one, based on their name.
Now tap-and-hold the selection somewhere so that the context menu comes up. Choose Cut:
Go to the target directory (in this case, DLLs on your storage card); tap-and-hold an empty area and choose Paste:
The transfer of the files will start:
Note that you can also use other file handler tools on the Pocket PC; for example Resco File Explorer or Total Commander. In Resco, go to File/Options/Browser and make sure "Show all files" is chosen (instead of the default "Hide hidden files and files...") as can be seen in this screenshot.
* get a registry editor that is able to (flawlessly (!)) edit multiline strings (that is, all known, up-to-date registry editors except PHM Registry Editor and Total Commander; please check out The Ultimate Roundup of Registry Editors for the Pocket PC for a thorough explanation of why I don't recommend these two applications if interested). In this tutorial, I use Resco Registry Editor (Resco for short). It's commercial, but the 14-day, unrestricted trial version is fully sufficient for our purposes. Start it.
* First, we'll modify the so-called "System Path" (which is a bit similar to the PATH in traditional operating systems) so that it includes our new directory. To do this, go to HKEY_LOCAL_MACHINE\Loader:
Note that, in here, I've switched to "Tree Mode" in View/Show Tree View as can be seen in here.
Now, click SystemPath (highlighted in this screenshot); you'll be presented the following dialog:
Note that there may be some values already in the text input area in here. For example, if you've ever had SKTools or MemMaid relocate DLL's for you, the target directory will be in here. Also, by default (if you haven't ever touched the System Path), there may be a \Release\ or \windows\oem\ in here. These can be safely deleted as they're not used. You can, naturally, leave them in there; of course, then, you must make sure the new path is entered in a new row as can be seen in this x51v or this HTC Wizard (latest Qtek ROM) screenshot. Once again: you can safely delete them.
All you have to do is entering the full path of your new DLL directory in here. For example, if you've moved the CF2 files to a directory named DLLs on your storage card named CF-Card (Storage Card, CF Card, SD Card, SD-MMCard are also widely used), enter
\CF-Card\DLLs\
in here, as can also be seen in here:
Don't forget to add the leading and the trailing backslash characters (\)!
Now, click OK in the upper right corner and answer Yes:
In the list view, the new, just-entered value should be shown as can be seen in here:
Note that, again, if you want to keep the previous values of System Path, then, the new entry should be put in a separate row. For example, if the previous value of HKEY_LOCAL_MACHINE\Loader has been
\SD-MMCard\Programs\CrEme\bin\
\LOOXstore\DLLs\
then, you need to add the new value in a new row as can be seen in here:
* now comes a bit more complicated part. First, go to HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ .NETCompactFramework\ Installer\ Assemblies\ Global.
Note that, on some devices, in the above path, SOFTWARE may not (all) be uppercase. This varies from model to model and shouldn't be paid attention to. (Also note that I’ve added spaces after every backslash characters (\) in the above registry path so that the blog engine nicely renders it. In the reality, it should not contain any spaces!)
Here, look for names (on the left) that have 2.0 in them. Note that almost all values (except for CustomMarshalers, Microsoft.WindowsMobile.DirectX and Microsoft.WindowsMobile.DirectX, which have all been introduced in CF2 and didn't exist in CF 1.x) seem to be duplicated and their name will start with the same (Microsoft.*, mscorlib.*, System* etc.); it's only after this that they start to be different. One set of them will continue in Version=1.0, the other set will continue in Version=2.0. The only exception from this "must contain Version=2.0" law is the value starting with "Microsoft.VisualBasic, Version=8.0.0.0" (that is, 8.0 instead of 2.0).
In all these Version=2.0 values, you'll need to modify the original path referring to \Windows to the new home of the relocated files - for example, in our case, \CF-Card\DLLs.
In order to be able to see this as easily as possible, enabling Show Header in the View menu is highly recommended, as can be seen in here. Then, you'll be able to greatly increase the displayed length of the value names if you drag the header to the right. Of course, switching to Landscape and/or VGA mode (if possible) is highly recommended. Then, you'll be able to see the version number in all the values. For example, this screenshot shows a QVGA WM5 device in Landscape - here, it's also possible to increase the width of the "Name" column so that the version number can also be seen without having to click every value.
All you need to do is just click all the values that have Version=2.0 in their name (except, as has already been pointed out, the 8.0 Microsoft.VisualBasic) and just change \Windows to the new value in the first row. An example of this:
before:
after:
Another example of a changed value (WM5, QVGA device, with files relocated to \Storage Card\_):
and with the VGA x51v in standard VGA mode:
Note that, much as it refers to the main storage (\Program Files\.NET CF 2.0\), you don't need to pay attention to the second row in all these values. Just leave them there.
Consider using a PC-based Pocket PC controller tool to do this (please read this article for more info on them if not sure). Using them, you can speed up the registry modification by orders of magnitude, particularly if you use copy/paste to insert the new directory path.
After you've modified all the affected values, check once more if it was successful. Fortunately, you'll see all the names (showing that a given value is 2.0-specific) and values (showing whether it refers to the original \Windows directory in the main storage or somewhere else) on the same screen as in this screenshot.
You may also want to export the just-modified branch to a registry (.reg) file. Then, in case you reinstall CF2 and want to avoid hand-editing the entire stuff, you'll only need to reimport this file. To do this, tap-and-hold Globals in the upper, tree pane and choose Export:
On WM5 devices, you will also want to make sure the changes are flushed back to the ROM (as the Registry is kept in RAM and changes are rarely flushed back to ROM, which will result in a simple soft reset getting rid of all changes and, therefore, CF2 not working after the relocation). To do this, on many WM5 devices (like the HTC Wizard), just long-press the Power button. On some other devices, you must explicitly configure the device to shut the PDA completely down upon a long-press (instead of just dimming the screen). For example, on the x51v, you must go to Settings/System/Power/Power Button and enable "Full power off" instead of the default "Dim/light the display" as can be seen in this screenshot. You'll only need to power off your PDA for some seconds because it's before shutting it down that the Registry is flushed back to the ROM; that is, you can safely switch it back on instantly.
Congratulations! Now, the relocated CF2 will be working! If you've modified the System Path, you'll need to reboot; otherwise, you can start your CF2 apps right away.
Advanced remarks for geeks/advanced hackers
* Exporting, editing and re-importing the contents of HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ .NETCompactFramework\ Installer\ Assemblies\ Global (so that you can much easier change all occurrences of \Windows to the new path) just won't work because the values in here are multiline strings, which are exported as hexadecimal values by all export-capable Pocket PC-based registry editors (I've checked this!) like in here:
* The \Windows paths in HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ .NETCompactFramework\ Installer\ Assemblies\ Reference (note that the last word is Reference, not Global!) don't need to be modified. Actually, you can even get rid of the entire subkey because it's not used at all.
* Technically, the GAC*.dll files don't need to be in the System Path; it's only with the other files (cgacutil.exe, MSCOREE2_0.dll, netcfagl2_0.dll and netcfd3dm2_0.dll) that must be. That if, you have already set up a relocated DLL directory somewhere in the System Path, you can safely move the files to there. It's in order to be as easy as possible for a novice user that I've instructed copying all relocated files to the same directory in the System Path.
one better make damm sure that one dont have any .net programs running when the pda is off too
because then the SD interface get shutdown to save power
and then programs which are running which depend on the framework crash and burn
Rudegar said:
one better make damm sure that one dont have any .net programs running when the pda is off too
because then the SD interface get shutdown to save power
and then programs which are running which depend on the framework crash and burn
Click to expand...
Click to collapse
Yup, but you can also play with PNPUnloadDelay to avoid problems because of this (see http://www.pocketpcthoughts.com/forums/viewtopic.php?t=44488 for more info).
how does this method compare to the way the new beta allows GAC to be installed to the storage card?
http://www.microsoft.com/downloads/...53-a418-42d9-a481-19ba3ceca1a6&displaylang=en
from what another user told me, the beta allows you to install about 80% of the framework to the storage card.
-jeff
jeffreii said:
how does this method compare to the way the new beta allows GAC to be installed to the storage card?
http://www.microsoft.com/downloads/...53-a418-42d9-a481-19ba3ceca1a6&displaylang=en
from what another user told me, the beta allows you to install about 80% of the framework to the storage card.
-jeff
Click to expand...
Click to collapse
Yes !!! Thanks for the council.
Before with the previous version of net framework 2 my free memory was of 25,80 Mb.
After to have installed the Sp1 new beta on the Storage Card is of 29,78 Mb.
Hi Menneisyys. Would MUCH appreciate your guidance;
I'm using a ROM image that works great - except that the CF 2.0 SP1 installation is buggy. I can't de-install it as it's not in my installed apps. Any idea what files I need to delete so the install proggie thinks it's gone and does a reasonable re-install? Currently the install proggie says "you already have this verison installed".
craigiecraigie4 said:
Hi Menneisyys. Would MUCH appreciate your guidance;
I'm using a ROM image that works great - except that the CF 2.0 SP1 installation is buggy. I can't de-install it as it's not in my installed apps. Any idea what files I need to delete so the install proggie thinks it's gone and does a reasonable re-install? Currently the install proggie says "you already have this verison installed".
Click to expand...
Click to collapse
Unfortunately, it's not only files but also registry entries. Try deleting all the above-listed, 2.0-only (don't touch the CF1-specific ones!) registry entries.
Do you have WM5 or a previous OS? If you have the latter, I can send over an .unload file and a registry import so that you can directly delete these without any manual registry editing.
Menneisyys said:
Unfortunately, it's not only files but also registry entries. Try deleting all the above-listed, 2.0-only (don't touch the CF1-specific ones!) registry entries.
Do you have WM5 or a previous OS? If you have the latter, I can send over an .unload file and a registry import so that you can directly delete these without any manual registry editing.
Click to expand...
Click to collapse
Hi Mennei, I'm on WM5 and would TRLUY appreciate a .unload file! Thanks a stack.
craigiecraigie4 said:
Hi Mennei, I'm on WM5 and would TRLUY appreciate a .unload file! Thanks a stack.
Click to expand...
Click to collapse
Unfortunately, you can't easily hack WM5 (as opposed to pre-WM5 OS'es) to think it has a program installed - you don't have write rights on \Windows\AppMgr and, tehrefore, can't copy the (un)install DLL there. That is, with WM5, it's, to my knowledge, not possible to automatically remove stuff.
Menneisyys said:
Unfortunately, you can't easily hack WM5 (as opposed to pre-WM5 OS'es) to think it has a program installed - you don't have write rights on \Windows\AppMgr and, tehrefore, can't copy the (un)install DLL there. That is, with WM5, it's, to my knowledge, not possible to automatically remove stuff.
Click to expand...
Click to collapse
hmmm.....
maybe if you installed a "dummy" program that would reference the appropriate uninstall file for CF2.0?
just an uneducated noob suggestion. (feel free to educate me! i'm always eager to learn)
blazoner said:
hmmm.....
maybe if you installed a "dummy" program that would reference the appropriate uninstall file for CF2.0?
just an uneducated noob suggestion. (feel free to educate me! i'm always eager to learn)
Click to expand...
Click to collapse
It might work.
CF2 late question
I know there has been no action on this thread but as a late commer I was wondering if the CF files can be copied and included into the extended ROM (instead of the storage card) and then flashed onto the device?
mnazmi said:
I know there has been no action on this thread but as a late commer I was wondering if the CF files can be copied and included into the extended ROM (instead of the storage card) and then flashed onto the device?
Click to expand...
Click to collapse
Yup, I think so - after all, when unlocked, the extended ROM is just another drive in the file system. WHEN unlocked, I think.
FYI
i downloaded the .Net CF2.0 SP1 fr http://www.microsoft.com/downloads/...88-59e2-4eba-a70e-4cd851c5fcc4&DisplayLang=en
i selected Storage Card during the installation. all GAC* files are installed automatically\directly onto my Storage Card\Windows folder. when i checked on HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ .NETCompactFramework\ Installer\ Assemblies\ Global, all 14 2.0 and 8.0 entries are already with the correct folder path (\Storage Card\Windows). therefore, i only needed to move 4 files below onto the \Storage Card\Windows folder, and added value Storage Card\Windows\ into the SystemPath in HKEY_LOCAL_MACHINE\Loader
cgacutil.exe
MSCOREE2_0.dll
netcfagl2_0.dll
netcfd3dm2_0.dll
thanks for the tips!
Most of the recent WM6 rom chefs have been advocating making NO performance tweaks, in favor of keeping as large a RAM pool as possible. As I rarely need 30mb to run a program, I am happy to give up what I don't need if it will help get data back and forth to the SD card and so on faster. Has anyone got thoughts or data about this? I don't own a benchmarking program so I can't check it out directly. I have been making all the tweaks anyway, but does it matter?
Thanks for your thoughts!
Ed
X-Plore 1.1
IPL/SPL 3.08
GSM 2.69.11
edhaas said:
Most of the recent WM6 rom chefs have been advocating making NO performance tweaks, in favor of keeping as large a RAM pool as possible. As I rarely need 30mb to run a program, I am happy to give up what I don't need if it will help get data back and forth to the SD card and so on faster. Has anyone got thoughts or data about this? I don't own a benchmarking program so I can't check it out directly. I have been making all the tweaks anyway, but does it matter?
Thanks for your thoughts!
Click to expand...
Click to collapse
I agree completely! I'd like to see a WM6 ROM with all the performance tweaks and 8 MB page pool. I know jwzg is working on an 8MB pp ROM based on Faria's up coming Vanilla WM6 ROM.
Check out this thread for more info http://forum.xda-developers.com/showthread.php?t=299584&page=10
Thanks for the link. I really don't understand the drive for smaller and smaller page pools either...
Some Answers!
OK, here is my contribution to the WM6 literature...
I am running battery status 1.04 beta 3 with the following settings in all tests: cpu speed 247, cpu scalar min 143, boost 278. set on wakeup, remember last speed. My base setup is as per my signature. I ran SK Tools v 3.1.1.0 in demo mode. I also removed the HKLM\init launch100 key in both cases.
All tweaks, No tweaks
Integer (moves/25us) 134.0864, 134.4001
Floating point MWIPS 3.490, 3.489
RAM Access speed index 345, 328
Draw bitmaps speed index 503, 522
Main storage (w) KB/sec 607.78, 612.14
Main storage (r) KB/sec 3670.25, 3469.23
Storage card (w) KB/sec 412.76, 423.11
Storage card (r) KB/sec 3353.71, ! 1119.13
As you can see, the major difference is in the storage card read speed. This led me to retest using only the SD card speed tweak, and no others. Surprisingly, the result was unchanged from using no tweaks! So, likely there is some interaction with the other file system tweaks that is involved. (See the wiki-WM5 performance tweaks). At some point maybe I'll try to pin it down further.
Regards,
Ed
BTW: Sorry for the poor formatting, for some reason the extra white space between columns is being suppressed in the post.
When I was using NotTooSmart's ROM, it had some performance tweaks. I don't have a benchmark prog but it was definitely much faster. I would say it's comparable to when I had it overclocked to 234-247MHz...
I believe what made the most difference was the System Cache... I lost ~10MB of RAM but the ROM was flying... Start up was scary though... I think it went <2MB w/ the progs I had...
edhaas said:
Thanks for the link. I really don't understand the drive for smaller and smaller page pools either...
Click to expand...
Click to collapse
A lot of people tend to be RAM fanatics... that's probably what drove cooks to have smaller and smaller page pools... Another thing is people and numbers.. many tend to feel the bigger, the better.. High IPL/SPL, High Radio, High OS, High Storage, High RAM.. I think you get the picture.. =P
Update on tweaks
I think I'm near the max. I maxed out the file cache, and filter cache, kept the SD cache at 256 and re-ran the benchmarks. Slightly higher numbers all round, but a dramatic increase in SD card read rate, now up to 6.5 mb/sec! I would expect this would speed loading those big programs and files from the SD card, and is 6 times the "stock" speed!.
Regards,
There was a post a few weeks ago (I think) where someone did comparisons with playing with PagePools and the performance. They compared 4MB, 6MB, 8MB, and 12MB pagepools. As I recall there was very little difference between 12MB and 8MB performance. I think 6MB was the worst of the 4.
Again this was all from memory, but I just remember after reading that, I no longer was that concerned about the differenence in performance over the added extra memory available by dropping to 8MB.
Performance tweaks
Actually, in thinking about the issue, it occurs to me that the standard benchmarks we are using (SPB Tools) don't measure things that would likely be changed by a change in page pool. CPU calculations, memory access speeds, would not change by changing the page pool or buffer sizes. The only measurement which would change would be the speed of swapping programs and data in and out of memory (by suppressing the actual need to do so) or accessing the memory card. However, these things *would* impact on "real life" apparent speed of the device in activation of programs and quick response times.
Thoughts?
Forgive my obvious ignorance... This is the closest thread I have found for my search, "SD card speed tweak" so can you please help me? point me to the tweak to speed up my SD card?
thanx in advance!
Re: Speed tweaks
Sure, If you want awesome numbers on SK Tools SD read benchmark, (particularly when combined with overclocking) make these registry changes:
HKLM>Drivers>SDCARD>ClientDrivers>Class>MMC_Class:
Change BlockTransferSize to 256 decimal
HKLM>Drivers>SDCARD>ClientDrivers>Class>SDMemory_Class:
Change BlockTransferSize to 256 decimal
HKLM>System>StorageManager>FATFS:
Change CacheSize to 4096, 8192, or 16384 decimal
HKLM>System>StorageManager>Filters>freplxfilt:
Change ReplStoreCacheSize to 4096, 8192, or 16384 decimal
The larger the numbers the faster the benchmark. However, some of the other benchmarks run slighly slower, and I'm not sure I see significant "real life" improvements in responsiveness. I'd be interested in your impressions. One thing to watch out for, particularly when using the 16384 settings, is that available memory can drop to "dangerously" low levels on start up from soft reboot. If you're using batterystatus you can monitor this. As long as you stay above 2mg or so at the minimum you're ok, as the situation resolves after the start up routines finish. If you do go below, I've had the screen blank temporarily and hang for a moment, but it eventually booted fine anyway.
Have fun!
Thank you for your prompt and courteous answer!! I am still learning this PocketPC stuff. Someday I hope to be able to contribute. It already seems faster!
email tweaks
is there anyway to make my pics in emails auto download?
(instead of having to click "download pics" every time...)
and to create shortcuts to my text messages and other applications, how can i do that?
b.mann said:
is there anyway to make my pics in emails auto download?
(instead of having to click "download pics" every time...)
and to create shortcuts to my text messages and other applications, how can i do that?
Click to expand...
Click to collapse
This question is slightly offtopic, but I'll answer you anyways.
Go to the email account you want to change:
Menu/Tools/Options/Choose The Account (it will take you into email setup):
Next/Next/Next/Options/Next/Next/Download size limit (drop down menu - choose what you want)/Finish
Hi,
I saw the benchmarking results that you guys posted and the difference between "with tweaks" and "without tweaks". The numbers sure show a difference with the benchmarking results but what i'd like to ask and what i'd really like to know is - have you noticed a significant difference in actual/real life performance on ur wizard? Was it obviously faster?
I mean, for me and IMHO, i'm not much of a fan of "benchmark" results and all that unless I actually see a "real" difference in speed when i use my PPC. I don't think i'll go for the performance tweaks if i'll loose 10+MB of RAM and am only able to see "benchmark" results being better instead of overall actual performance. That's why i'd like to get ur inputs on this whole performance tweaks thing...is there a noticeable difference in speed? (not just benchmark data)
WM 6.1 Tweaks
Hi,
Even the thread is quite old,
after some time of using WM6 and 6.1 and test meny mor etweaks, there I post some of them who i found usefull.
TKS to all contributors form xda or another.
1. Stop 3G services: settings\phone\ HSDPA must be disabled; RAT set to GSM; the internt still accesible trought GPRS for the most operators
Result in: less batery consumption 1-2 days stdby increase to 3-4 days
reduce blockings and wake-up problems
2. Disable Power management for SD card: use poket toolman or others and uncheck Enable Power Mgmt for SD card; or use regedit and change to
[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory_Class]
“DisablePowerManagement“=dword:00000001
Other option:
Change reg into
[HKLM\System\StorageManager]
“PNPUnloadDelay“=dword:8196
[HKLM\System\StorageManager]
“PNPWaitIODelay“=dword:8196
Note that the 8196 should be entered as a DECIMAL value. The HEXADECIMAL (HEX) equivalent is 0×00002004.
Result in: Less blocking and sd diseaparing fix or slow upload sd when wake-up
More consumption on batery, about 10% more, but with tweak 1 still OK
3. Uncheck today timeout: settings\items\ uncheck Today timeout
Result in: less delay when a phone call income o r standby resume
4. Try to instal the alarm programs and sounds files direct into main memory instead of SD; to avoid sd blocking when standby resume
5. Install .NET Compact Framework 3.5 (last vers) to your device, as:
1. Download .NET Compact Framework 3.5 from Microsoft and save it on your PC.
2. Run the downloaded MSI file and let it install.
3. Connect your device to Activesync/Windows Mobile Device Center and finish the automatically launched installation on your device.
4. Soft reset your device.
5. Open a Registry editor and navigate to HKLM\Software\Microsoft\.NETCompactFramework where you will see two entries for the (now two) existing version references: the old one, which came with your device and the new one you just installed.
6. Change the DWord value of 3.5.7283.00 from 0 to 1 (thus enabling it) and all the other values (i.e.: 2.0.7045.00) from 1 to 0 (thus disabling it/them).
7. Soft reset your device.
Result in: shorter time (gain 0.5 sec) to navigate trough windows menus and buttons actions.
6. Activate lock applet on today menu; Without this function when the phone is in stand-by and a call income the phone delay has about 8-10s to wake-up.
Result in: the wake-up on call is shorter (gain 4-5 sec) than without this lock checked in today settings; somehow WM use this library to pass trowght to wake up.
7. Speed-up the SD card read; tks to edhaas contributor from xda-developers.
Action: increase some SD cache into registry:
a) HKLM>Drivers>SDCARD>ClientDrivers>Class>MMC_Class:
Change BlockTransferSize to 256 decimal
b) HKLM>Drivers>SDCARD>ClientDrivers>Class>SDMemory_Class:
Change BlockTransferSize to 256 decimal
c) HKLM>System>StorageManager>FATFS:
Change CacheSize to 4096, 8192, or 16384 decimal
d) HKLM>System>StorageManager>Filters>freplxfilt:
Change ReplStoreCacheSize to 4096, 8192, or 16384 decimal (16384 is dangeours high, some blank screen at startup)
a), b) settings are regulary set by default to 256; c), d) is by default to 0, so change-it and see if gain some perf.
All of them has tested and works fine.
Apply and now I found my i-mate ultimate 6150 OK, instead of first phone impression when I blame-it.
So with all the excitement going on in the page pool thread I was doing some external reading. One topic that caught my interest is NAND and NOR ROM.
I got a nice summary from here:
http://blogs.msdn.com/windowsmobile/archive/2005/08/19/453784.aspx
Basically, the synopsis is:
NOR: Faster to read, slower to write.
NAND: Slower to read, faster to write.
But, more importantly, NOR ROM let's you perform XIP operations. Now i remember seeing this XIP acronym before...in a directory when I extracted a ROM. This leads me to believe that at least part of the ROM in the Kaiser is NOR ROM.
XIP means eXecute In Place. It basically allows code to be executed directly from the ROM without first being copied into the RAM. This means less RAM utilization. As the article states i works for programs only, not user data files.
If we look in the XIP directory of an extracted ROM we see subdirectories like:
busenum.dll
diskcache.dll
imgfs.dll
These are things like low level bus, disk, and file system drivers. These things make perfect sense to XIP.
My question then is... if indeed we do have NOR ROM that can do XIP operations, how much is free on a typical ROM? AND can we cook in other applications into this XIP NOR location instead of into the NAND ROM and thus have those eXecute in Place and free up additional RAM?
It would be nice to get the 3% of my RAM back from Voice Command, or the 1% from PocketCM, etc, etc...
Could it be as easy as moving .dll files from \SYS to \ROM\XIP before cooking the ROM? I doubt it, but is it possible?
I'm just throwing a concept out there and asking about it's feasability. I'm not really a developer so I don't know how much further I can take this.
Thoughts?
bengalih said:
My question then is... if indeed we do have NOR ROM that can do XIP operations, how much is free on a typical ROM? AND can we cook in other applications into this XIP NOR location instead of into the NAND ROM and thus have those eXecute in Place and free up additional RAM?
It would be nice to get the 3% of my RAM back from Voice Command, or the 1% from PocketCM, etc, etc...
Could it be as easy as moving .dll files from \SYS to \ROM\XIP before cooking the ROM? I doubt it, but is it possible?
I'm just throwing a concept out there and asking about it's feasability. I'm not really a developer so I don't know how much further I can take this.
Click to expand...
Click to collapse
I don't think that blog applies to the Kaiser-like devices anymore. We already use all the ROM space we get. The partitioning between XIP and storage is out of the same space and controlled by how the ROM image is built and whatever they set the pagepool to.
Did you run out of space of the 100MB+ internal storage we all get?
I don't know why it wouldn't apply...it's not a WM5 vs WM6 issue.
Based on the only specs I have seen it lists the Kaiser with 256 ROM and 128 RAM.
The question is what type of ROM is it? Devices can mix NOR and NAND ROM. And based on what I see on the extracted ROM, at least some of it must be NOR (because of the existence of the XIP directories).
And this isn't a question of storage space. I am not trying to get more usable storage...I have a 8GB SDHC card for that. I am trying to maximize my available application space.
The point of my post is... can an application, let's say like Voice Command be moved from what might be the NAND portion of the ROM into the NOR portion of the RAM (from \SYS to \ROM\XIP). It would take up the same space of the TOTAL ROM, but when it executed it DOES NOT NEED BE LOADED INTO RAM and thus your available application space is not decreased.
Again, I am not a developer, so I may be way off in asking if this can be done. However your response is one that doesn't speak to the theory I am proposing.
if I remember right this was talked about before but on a different device I think the hermes. I am not sure of the reason it couldnt be done but I just remember it couldnt lol. Something about allocated memory maps
Some interesting things
I found this wile reading the link you posted. Some great information in there.
By the way, every SD and CF card is made out of NAND flash. So, no, you can't XIP programs stored on a storage card.
Click to expand...
Click to collapse
So am I reading this right. That any program we have stored on our Storage Card won't utilize the XIP
I've been working on & subsequently screwing up, page pool alteraitions for awhile. Because I'm messing with a Kaiser(CE5) & a UMPC (CE6) based device, I can tell you that while the pagepool will save you some seconds, mostly with the loading of contacts, your inbox, & the boot to os speed of the device, for the most part you're right, you won't see much difference.
However, with CE6, that will change. With CE 6 based devices you will be able to completely comtrol paging, be it XIP or Data (Read Only) paging. Maybe wm7 will introduce CE6 to PDA devices. With CE6, formerly & frequently confused with WM6, you will have 2 page pools & several controls over them including compaction.
The effectiveness of page pool sizes can vary widely depending on the types of processes & programs you use, but suffice to say, the average user will take little to no benefit from a larger paging file.
For all of you truly interested, there is a PB process file called DevHealth.exe, that can be used via SD card to report the actual status of the paging pool. Google it, you will find it. Kind of interesting to see what your device is actually doing before & after the changes.
AllTheWay said:
I found this wile reading the link you posted. Some great information in there.
So am I reading this right. That any program we have stored on our Storage Card won't utilize the XIP
Click to expand...
Click to collapse
No but what the OP is asking is if we can take apps and put them in the XIP section and run them from there. I think someone should try it out just cook up a rom with a complete app cooked in the XIP and see what happens. the worst is bad blocks i would guess but maybe POF or OLI should chime in on this one.
I do believe you can XIP from an SD card, I believe MS has done this with a few test devices that utilize under battery sd cards. I think it's not something they've done mostly because of problems in system stability when the SD is removed.
austinsnyc said:
No but what the OP is asking is if we can take apps and put them in the XIP section and run them from there. I think someone should try it out just cook up a rom with a complete app cooked in the XIP and see what happens. the worst is bad blocks i would guess but maybe POF or OLI should chime in on this one.
Click to expand...
Click to collapse
THANK YOU AUSTIN!
Yes, this is what I am saying. Forget about SD cards (which, according to what I have read are all NAND and thus can't XIP).
I am just asking if some of the applications that we are cooking into the flash (the things that extract to \SYS) like MS Voice Command, CM Contacts, QuickGPS, etc... if instead those things can be places in XIP.
Again, this is under the assumption (which is a big assumption) that what is in \XIP gets placed in the NOR ROM and what is in \SYS gets placed in the NAND.
What this would mean is that when you execute any of the programs I mention, like say Quick GPS you won't see the RAM utilization on your device go up, meaning you will have the same amount of available free memory. This is because of the XIP (based on the description I have read) it can be executed from the ROM without being copied into RAM.
Now, my guess is that even though the NOR has faster reads than NAND, it still might be slower than RAM. So, it might take another second to open Quick GPS. However for some apps I think I would prefer the slight delay in order for my available memory to be increased.
GSLEON3 said:
I've been working on & subsequently screwing up, page pool alteraitions for awhile. Because I'm messing with a Kaiser(CE5) & a UMPC (CE6) based device, I can tell you that while the pagepool will save you some seconds, mostly with the loading of contacts, your inbox, & the boot to os speed of the device, for the most part you're right, you won't see much difference....
For all of you truly interested, there is a PB process file called DevHealth.exe, that can be used via SD card to report the actual status of the paging pool. Google it, you will find it. Kind of interesting to see what your device is actually doing before & after the changes.
Click to expand...
Click to collapse
Good info Leon...but better to put this in the pagepool thread so we can discuss it there (and please do). What I'm trying to get at here is not directly related to pagepool sizes and speeds.
austinsnyc said:
if I remember right this was talked about before but on a different device I think the hermes. I am not sure of the reason it couldnt be done but I just remember it couldnt lol. Something about allocated memory maps
Click to expand...
Click to collapse
That's entirely possible. Again, I'm being the "idea guy" as I'm trying to synthesize some info I have absorbed. The most programming I do is high level scripting and VB so I don't know details about how this stuff would actually work down at the memory map level. There may be some other issues as well. I was hoping there was someone in these forums who actually had the knowledge (and wasn't just following cooking tutorials like most of us) of how this stuff truly interacts.
Also please reference my post in the pagepool thread, has some good thoughts (I think!):
http://forum.xda-developers.com/showpost.php?p=2101324&postcount=99
bengalih said:
http://forum.xda-developers.com/showpost.php?p=2101324&postcount=99
Click to expand...
Click to collapse
In addition to the above, I have found some more info which may partially defeat my reasoning:
XIPKernel
There are portions of the deepest parts of the OS that have to XIP. If you're on NOR, that code just XIPs like everything else. Not so on NAND. For a NAND system to boot, it needs to load this code into RAM first and then run it from there. When the system is running, it can't really tell if it's running from RAM or ROM, so it assumes it's running from ROM and doesn't count this space.
The XIPKernel region tends to be between 1.5 and 2M.
Click to expand...
Click to collapse
So it seems that just because we have a \XIP directory doesn't mean we have NOR ROM. It could just be the area the ROM places data that in NEEDS to XIP, and therefore means that it will get copied to RAM on boot (instead of just XIPing from where it is in ROM). This could also account for the additional "missing" RAM up to 128MB.
Therefore moving an application to this \XIP pre-cook doesn't mean that it will save us any RAM (again, assuming we DON'T have NOR ROM). It could however speed up that application since we are basically "pre-loading" it into RAM instead of waiting for the load to be user initiated.
I guess a question now is does all XIPed code run at the same time and is that all at boot? It does us no good to try and load up voice command (or QuickGPS, etc.) before the supporting code from the OS has loaded.
So, this may all be a wash, but it does help explain some of the interaction better and even if it leads no where, at least we will better understand how the devices memory system works.
I'm also a newbie and visited xda-developers to find solutions for my phone needs (lack of memory, useful tricks and enhanced apps). I must thank all you your good job (and when possible I'll donate to the developers, too).
I tried to find some answers to my problems, and sometimes I didn't find them, so, here are some of them. I assume only newbies try to find these answers and experienced people have them in their genes.
Battery: when taking the battery out of the device, or by making a hard reset and them some soft resets without having it totally charged makes the phone to "believe" the battery is full-charged in the level it's when beginning to work. So the device ssems to spend more battery because it is not full at all, even when appearing as charged in the screen.
Low volume of ringtones: I presume our devices have a battery saving system that decreases the maximum loudness when the battery begins to be at criticall levels.
Increase programs memory (WM6) : This appears in lots of threads. I tried every solutions and now I'm enjoying more programs memory:
Installing (or moving -editing Registry when needed) all the apps in the storage card is a good thing. But I "bricked" my storage card (I was afraid of bricking my phone) because of abuse of storaging/reading/moving, so I had to reformat it. Better if you can have a backup in some PC folder !
\Windows\Appmgr contains uninstalling info. Moving its folders to storage card (and moving again needed folders to promgrams memory when you need to uninstall/modify some app) saves some space in programs memory.
Today plugins and start menu can not be moved to storage card
Help files (those htm ones) may be moven to storage card but sometimes you must modify the links.
For all those tricks there are lots of threads in xda-developers. I suggest all the newbies like me to make a search, read all the threads and take some notes (in paper), organize the notes and make a small strategy. Sometimes some links take to apps designed to help to free space or move applications or modify the registry.
Now I'll begin the path to cook my own ROM, following all the steps: learning to create a .cab, learning to flash, learning to cook ..... but what I'd like is to learn to understand the whole registry.
(My specialities are not related either to electronics nor telecommunications but to city planning and building). I'll post some questions/suggestions about storaging (ROM, ExtROM, ProgramsMemory, StorageCard) to expand space.
look at this thread:
http://forum.xda-developers.com/showthread.php?t=575526
The link to the cab file first doesn't work. go to this page:
http://cotulla.pp.ru/StarTrek.html
and download the cabfile. enjoy!
None for WM5?
didn't test it. i don't know. (why use wm5)
oh well, just tell me if MINI SDHC Works? not the mini SDHC adapter thingi for MICRO SDHC
i want a MINI SDHC working on tornado naoooo
i don't think there is any difference between a "mini sdhc" and a "micro sdhc" with adapter to mini. The pinout should be the same and there is no "intelligence" in the adapter part. correct me if I'm wrong.
i don't have a mini sdhc card to test, but maybe someone else has.
Here are some pictures of the adapter/converters. maybe this will help:
http://www.camerahacker.com/Digital/Inside_miniSD_Adapter.shtml
walram said:
i don't think there is any difference between a "mini sdhc" and a "micro sdhc" with adapter to mini. The pinout should be the same and there is no "intelligence" in the adapter part. correct me if I'm wrong.
i don't have a mini sdhc card to test, but maybe someone else has.
Here are some pictures of the adapter/converters. maybe this will help:
http://www.camerahacker.com/Digital/Inside_miniSD_Adapter.shtml
Click to expand...
Click to collapse
for micro sd or micro sdhc, the transfer rate is drastically low compared to a mini SDHC. and when u use a mini sd adapter for it, it will be uber slow. I would rather stick to my 2 Gig minisd card. (there are non SDHC 4 Gig ones too)
hi well im new but i test this patch and finally works im using kamikase rc7 wm6.1prof and load 8gb microsd with adapter and isnt slow have a good performance
Have something important to add! With these drivers SD performance doesnt degradate! Hence You get SDHC support and normal SD-card read/write speed. Check it out! I've uploaded it to FileFactory. Great thanks to comrad llnhhy (the developer)!
http://www.filefactory.com/file/a093fdb/n/llnhhy_SDHC_For_Tornado_20090726_CAB
PS
Cotulla's drives and certs arent needed anymore...Only install the software mentioned above.
myzhLAN said:
Have something important to add! With these drivers SD performance doesnt degradate! Hence You get SDHC support and normal SD-card read/write speed. Check it out! I've uploaded it to FileFactory. Great thanks to comrad llnhhy (the developer)!
http://www.filefactory.com/file/a093fdb/n/llnhhy_SDHC_For_Tornado_20090726_CAB
PS
Cotulla's drives and certs arent needed anymore...Only install the software mentioned above.
Click to expand...
Click to collapse
Big thanks,super work! My test two card Tornado WM 6.1 Standard works OK.
myzhLAN said:
Have something important to add! With these drivers SD performance doesnt degradate! Hence You get SDHC support and normal SD-card read/write speed. Check it out! I've uploaded it to FileFactory. Great thanks to comrad llnhhy (the developer)!
Click to expand...
Click to collapse
Not working here with Gregory's 6.5 ROM. I had previously installed Cotulla's, but I did uninstall that first.
Edit: redoing the install seems to have fixed it. And I (and CardSpeed) agree - much less stuttery and faster than Cotulla's, this with a Transcend 8GB class 6 micro-SDHC with Kingston Micro->Mini adaptor. So many thanks from here to the developer.
Thanks for confirmation of working state! Perhaps, i should consider purchasing larger-sized SD (currently only 128Mb).
Next card test OK WM6.1
Awssommeee!!!! i'm gonna try too!!!
Are there any results on the performance of the SD Card?
Check out the SKTools standard from http://www.s-k-tools.com/index.html?sktools/m_standard.html and look at the benchmark section for the SD card.
Using standard Cachesize (Auto) on the device the sk tools benchmark delivers a WRITE of ~450kB/s and a READ of ~880kB/s. I used a 16GB SanDisk Ultra class4 for this test. This is as good as it can get on the device
It does not work with WM5 though - so you have to use a cooked rom from WM6 onwards. I tested it with the Nitrogen WM6
The driver cab file inserts invalid data to the key
HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory_Class\High_Capacity value "IClass" which should be identical to
HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory_Class value "IClass"
as it is also for other sdhc aware drivers. It seems that the setting of the <parm name="IClass" value="<some-value>" datatype="multiplestring" /> requires special attention in separating the strings. I found a hint in a German forum :
<parm name="SomeTestString2"
value="string1string2string3ༀ 0;" datatype="multiplestring" />
<!-- multi strings separation with -->
<!-- multi strings ending with -->
After altering the _setup.xml in the cab file and re-creating it (otherwise identical) the values inserted in the registry for the value above is correct.
I suspect that the invalid setting is excluding the driver from handling the class "{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}" which is found at HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power\Interfaces value "{8DD679CE-8AB4-43c8-A14A-EA4963FAA715}" set to "Power-manageable block devices".
This could have resulted in not (properly?) doing power management, but this was demanded anyhow by another value set as
<parm name="DisablePowerManagement" value="1" datatype="integer" /> in the _setup.xml
Consequently the net-result of the fixed cab may just be the same as the orginal but for different resons. For those who want it, I have attached the fixed cab file below. You may want to play with enabling power management possibly?
I have further debugged the two SDHC cab files that are available (llnhhy_ and Cotulla_ ) for the StarTrek and the Tornado and the core function is de-facto identical.
The only file you need for the Tornado is the OMAP850_SDHC.dll which is (apart from the two different certificates they are signed with in either cab archive) identical. This also means that all the credits of making the SDHC work on the Tornado goes to Cotulla.
The other 2 files packed into the llnhhy_SDHC_For_Tornado... cab are the identical files that are in your cooked WM6 ROMs anyway (again signed differently only).
Also the fuzz about adding an own sub-key below
HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory_Class
named
\High_Capacity
is useless on the Tornado, simply as the relevant dll (sdbus.dll) will not read this from the registry. The sdbus.dll from the StarTrek (Cotulla's cab) should read it there - and it also works on the Tornado without decreasing performance.
So why not using the Cotulla cab right away? Well, the 3.rd file contained - sdmemory.dll creates the big slowdown and should not be installed on the Tornado - and the Registry Key that the driver needs to work is not set in the installation cab.
So what?
The supplied file from llnhhy works as is and should not do any harm to the device. It unnecessarily installs two dlls and creates a reg-key that is never read.
The Cotulla cab is usable on the Tornado as well if you delete the non suitable sdmemory.dll after installation and add the registry key (see below).
Smallest footprint: just copy OMAP850_SDHC.dll to your \Windows directory and add one value to the registry: HKLM\Platform\ColdBootConfig = dword:1
I have added a simple cab to install this file - credits go to Cotulla for the OMAP850_SDHC.dll and to llnhhy to discover the one registry setting that makes the driver actually work.
And why all this?
It has given me back my Tornado - the best ever Windows Mobile Smartphone. Nothing that came after it could ever match the composition of features (WiFi) and form-factor (candybar).
I am currently cooking my own WM6 ROM on base of the Nitrogens Kitchen - no need for WM6.1 or 6.5 from my point of view. All my Homescreen Plugins already worked on WM5 and all the new nice sliding and animated stuff is not for me...
Have an eye on the latest HP Ipaq Voice Messenger already, but after my odyssee with the Benq E72 and the LG KS20 I am happy to be back to known grounds.
You can cook the driver into your ROM - its easy!
Now that I stepped in all traps, the final result is truely simple:
The registry key HKLM\Platform\ value (dword) ColdBootConfig=1 is mandatory or the driver will not operate.
I suspect (don't have a StrTrk) that the StrTrk has this value permanently set at ColdBoot and so also the altered driver for SDHC requires this setting. Logically the setting of this value is not present in the StrTrk relevant CAB from Cotulla.
So llnhhy seems to be the one who found out that this did the trick for the Tornado as well, packing just the same two related files (plus the surplus Reg Settings - see previous post) into an own cab for distribution.
So my thanks go to both of them finally
I have cooked it succesfully in my private cooked ROM (using Nitrogens kitchen) as a module:
1.) create a module from the OMAP850_SDHC.dll using reversmode (look up the G'Reloc thread)
2.) replace the created folder with the one in the Work\SYS\OEMDrivers\
3.) run G'Reloc, accepting the valules it presents (the come from the .VM folder as I understand) to realign the modules in the first VM slot without gaps or overlap. A little more insight on the VM is found here: http://www.codeproject.com/KB/mobile/VirtualMemory.aspx
4.) IMPORTANT: Add one line to the relevant *.rgu file of your directory (mine is 173a9ae3-aea7-4dda-a089-433f33821a1a.rgu) where the path HKLM\Platform\ is filled, in mine the section there now looks like:
[HKEY_LOCAL_MACHINE\Platform]
"Name"="Hornet Reference Platform"
"Type"=dword:2
"ColdBootConfig"=dword:1 ;required for OMAP850_SDHC.dll
5.) build your ROM.
One advantage of the module approach is that you do not have to care about certificates (and its the smallest as well).
Enjoy!
Take care about the microSD to miniSD adapter!
If you noticed intermittent problems with your microSD card (especially after inserting it new), take care that the adapter and both connections (card <--> adapter <--> device) are stable and clean.
I have set an adhesive tape around the miniSD fixing the microSD inside and additionally flapped the tape around for easier removal in case I have to remove the microSD. This is giving it an extra pressure to the connection inside the adapter from the battery above.
No problems observed since then any longer
Another thing to notice: If you have the problem that "suddenly" the card is no more detected, check if device settings have created a directory "Storage Card" - even if the card was not present once. This happens if you set system directories (like for IE cache) to the card.
The next time that the card is present it will be mounted as "Storage Card2" but all your links and settings will not point to it. So from first glance (looking at the startmenu) it seems that the card is not mounted still.
This will never cleanup automatically - so you may think microSD card support is broken suddenly, but it is not
To clean up:
rename the false "Storage Card" directory to another name
reboot
the card is mounted with the right name and all your links are back
look if anything was stored in the renamed directory, copy it to the card if needed and finally delete it.