[MDA III, XDA III, PDA2k, 9090 Software Upgrading] TheLastOne:
I was getting frustrated with the problems I was facing with GPRS in i-mate's new rom. Some people couldn't connect and disconnect properly, I personally was suffering from having my Red Phone button disconnect GPRS when I merely pressed it, not held it, every time.

I got pissed off with it last night, and decided to find the problem once and for all.

First, I cleared my extended rom, and did a hard-reset. I then noted that the red phone button sound reverted to normal, and that the GPRS didn't disconnect unless I held the red phone button. In other words, I discovered my problem lied within the extended rom.

So, then I went through cab by cab and tried to find out exactly which one caused the problem. All the obvious choices did not. I then stumbled upon the problem cab; the I-Mate customization cab (Default_ImateV112.002.cab). This little 74kb cab was causing my GPRS to disconnect whenever I pressed the Red Phone button. So, I recooked my extended rom without that cab, then hard reset. Voila, GPRS was working properly.

My comparison of the new I-mate customization cab with the older one, brought up one small difference in CM_Entries.xml, and it was exactly this small change that resulting in GPRS disconnecting when the Red phone button is pressed instead of held.

The lines that cause the problem are:

<characteristic type="Registry">

<characteristic type="HKLM\ControlPanel\Phone">

<parm name="Flags2" value="8" datatype="integer" />

</characteristic>

</characteristic>

The section of code that I identified to be causing the problem creates a key named "Flag2" within HKLM\ControlPanel\Phone. What this does is actually creates the Disconnect button we now see in the Connectivity bubble. It seems that enabling this button is the root of my (and perhaps other people's) GPRS problems.

Here is the information on this code:

To get just the disconnect/time online in your bubble, Tweak the following key:

[HKEY_LOCAL_MACHINE\ControlPanel\Phone]

"Flags2"=dword:00000000 = no button disconect in buble con.

"Flags2"=dword:00000008 = button disconect on buble con.

"Flags2"=dword:00000010 = button disconect and time con. on buble conection (hex)

Removing the key "Flags2" solves the problem, but removes the disconnect button (I assume this is the same as setting it to 0). The new default 8 setting is the problem. Setting it to 16, which adds the button and a connection length timer seems to be problem free from my testing, so if you like the disconnect button, I recommend setting it the key to 16 (DECIMAL, 00000010 HEX) and giving that a try, and if you aren't satisfied then remove the key altogether. Reset after any changes to the registry to see the results.

THE CABS BELOW ARE NOT PATCHES. THE SHORT TERM SOLUTION IS TO CHANGE THE REGISTRY KEY. THESE CABS ARE MEANT TO BE REPLACEMENTS FOR THE ORIGINAL PROBLEM CAB IN YOUR EXTENDED ROM, NOT TO BE RUN SEPERATELY

I have also made 2 cabs meant to replace the old Default_ImateV112.002.cab within your extended rom for a more perminent solution.

http://qlink.queensu.ca/~3bsg/16Flags2/Default_ImateV112.002.cab : Sets the key Flags2 to 16, keeping the disconnect button and adding a timer

http://qlink.queensu.ca/~3bsg/RemovedFlags2/Default_ImateV112.002.cab : Stops the key Flags2 from ever being created, removed the disconnect button[/b]