Since I'm having a couple of problems lately that will ultimately require me to hard-reset my TyTN in the near future, I figured I could document the steps I take to salvage the configuration as I go and learn this stuff.
My primary tool will be the Windows Mobile 5.0 Pocket PC SDK, especially the rapiconfig tool, that allows to process and query configuration information in the form of provisioning xml files.
RapiConfig sends the provisioning file to the device, processes it and saves the answer to RapiConfigOut.xml.
Lesson #1:
How to retrieve Messaging account settings, even if they appear to have vanished, using the EMAIL2 configuration service provider:
<!-- query-email2.xml -->
<wap-provisioningdoc>
<characteristic-query type="EMAIL2" recursive="TRUE" />
</wap-provisioningdoc>
C:\>RapiConfig.exe /p query-email2.xml
The result will be a list of manually configured messaging accounts, plus Hotmail and MMS.
The result will not include passwords (parm name="AUTHSECRET). To be later able and use the output file for restore, these params should be added for those accounts with (parm name="AUTHREQUIRED" value = "1") and the file should be saved under a meaningful name. Since MMS will be commonly setup by the ExtRom setup, it should be removed.
Next time we'll look at wireless connection setup.
Lesson #2:
How to enable RAPI access with manager privileges and retrieve WLAN settings.
The attempt to retrieve WLAN settings using the "Wi-Fi" characteristic will fail with "Access denied", because the Wi-Fi configuration provider requires manager level access, which is like Administrator on a PC.
By default, RAPI only uses user access level, and users can obviously not be allowed to manage WLAN settings using RAPI.
The SDK provides a way around this. Allowing RAPI access to manager-level features can be enabled by a security policy. This policy must be set using a signed configuration file.
The SDK contains a file "RapiAllowed.cpf" in the rapisecurity folder that can be used for this purpose.
However, first the certificate used to sign this file must be installed on the device.
For this, the SDKCerts.cab must be run on the device. This step might fail however, if the network provider chose to prevent the user from using unknown certificates.
The the RapiAllowed.cpf can be copied and run as well. There will be no feedback other than a SMS confirming the installation.
RAPI is a powerful interface, so the inverse, RapiRestricted.cpf, must be run before the device is brought into possible hostile enviroments (e.g. where some people might run Bluetooth scanners, USB ports on public computers, etc).
There is also a tool available from Microsoft called "Security Configuration Manager" that allows reviewing and resetting device security.
With RAPI security disabled, querying Wi-Fi is a piece of cake:
<!-- query.xml -->
<wap-provisioningdoc>
<characteristic-query type="Wi-Fi" recursive="TRUE"/>
</wap-provisioningdoc>
C:\>rapiconfig /p query.xml
The RapiConfigOut.xml will show all configured WLANs grouped into access-point-based and ad-hoc networks, with a characteristic for each network.
The network key is included as dummy string "****************" that needs to be replaced by the real passphrase.
I guess the next thing is to take a look into the network settings provided by CM_Networks and CM_GPRS_Entries.
HB_TyTN, very interesting stuff in your lessons, thanks for your effort
Also you may like to check rapi unlocker here:
http://forum.xda-developers.com/showthread.php?t=252356
Excellent thread! Will definitely keep mentioining it in my forthcoming, related articles!
About networks
The network thing in Windows Mobile seems pretty messed up. In an attempt to make things easier, safer and more automated, I think, Microsoft left anybody on the way.
Here is what I understand and (warning), I may be totally off.
There are four pre-defined networks Internet, Corp, WAP and Secure WAP.
Although those may have different names based on OS language and HTC, provider or user choosing, the IDs of these networks are fixed and can be looked up in the SDK/include/connmgr.h file. E.g. Internet, is identified by 436EF144-B4FB-4863-A041-8F905A62C572.
These networks describe different setups in terms of routing, security or proxy settings or are used from different applications (e.g. WAP/MMS).
Of all networks, one is selected as Internet (public) and another can be chosen as private under Select Networks in Advanced Connections.
Internet will provide TCP/IP only. Private will provide access to Windows shares, and may connect to the internet, usually thru a proxy.
The Connection Manager separates the world into Internet and private, based on the URL of the server.
Non local server names, e.g. www.xda-developers.com will be connected with the network specfied as Internet.
Yes, this includes any directly entered IP address, as the detection is based on the occurrence of a "." dot in the server name. The only way around this is to specify the URL in Settings, Connections, Advanced, Exceptions (using * as a wildcard if necessary).
Sole server names and except URLs will be connected thru the network designated as private.
With each network, connections, network cards and wireless networks can be associated, so that, finally, the connection manager uses or dials one of those connections based on the network it chose to use.
That's a long intro into lesson #3: Querying network information
I'll start resetting RAPI security to restricted, by copying RapiRestricted.cpf to the device, running it and checking the SMS message for success. This should prevent any actual messing up something.
Now to querying networks using the CM_Networks configuration provider.
<!-- query.xml>
<!--<!DOCTYPE wap-provisioningdoc SYSTEM "msprov.dtd">-->
<wap-provisioningdoc>
<characteristic-query type="CM_Networks" recursive="TRUE"/>
</wap-provisioningdoc>
C:\>rapiconfig /p query.xml
C:\>notepad RapiConfigOut.xml
The introduction above is to explain why this query does not reveal anything useful, other than a list network names, their ID and an obscure "Secure" value, which is 0 for all my connections.
I find it more interesting to query the CM_PPPEntries or the CM_GPRSEntries providers. They use a similar, yet somewhat convoluted schema.
Here are the notable parts:
DestID associates the entry with one of the networks I talked about and queried above.
Phone is the number to dial for the connection. For GPRS, this entry is set to "~GPRS!". I wonder who came up with that string.
Username and Password are obvious and so is RequirePw.
DnsAddr, AltDnsAddr are not out of the ordinary, and if SpecificIpAddr is "1", the ip address is in IpAddr, although I'd assume it is assigned dynamically in most cases.
DeviceType and DeviceName are set to "modem" and "Cellular Line" for the connections that use the phone network.
DeviceSpecificRAW is the most dangerous entry here, since it contains the parameters for the phone device in binary form. I wonder if there is any point in looking into those other than to inflict pain.
Some of the device parameters are set verbosely, so let's rather look at those. However, your provider may not like it if you modify these vigorously.
If BearerInfoValid is 1, BearerInfoService and BearerInfoSpeed are supposed to specify the type of modem and it's speed. Values in my case are 1 -Async Modem and 15 - 9600 v32, which goes to show that the latter value is rather useless, because I know I get more than that with both UMTS and GPRS. So better not tamper with these.
CompressionInfoValid and RadioLinkInfoValid are set to 0 in my case, so one can easily do without.
GRPSInfoValid is set to 1, but the only real interesting parameter is GPRSInfoAccessPointName, which must be set for the GPRS connection to know whom to talk to.
GPRSInfoQOSSettingsValid and GPRSInfoMinQOSSettingsValid are 0, which is sad, because I'm really not happy with my GPRS Quality of Service and would have loved to improve it.
Now, that was a joke. QoS is a way of classifying network traffic for bandwidth and latency and I doubt any provider supports it for Joe Average.
For all the parameters documentation is in the Smartphone SDK about the Telephony and TSP API structures.
Finally, a list of default URL mappings, as found in the CM_Mapping provider documentation.
*://*.*/* The Internet
*://*/* My Corporate Network
wsp://*/* WAP Network
wsps://*/* Secure WAP Network
To query my personalization settings, next time I'll dive into the registry and see what I can do with RAPI configuration queries.
Hey, the config file available on the HTC website has a couple of errors on the MMS configuration, I've corrected it and here it is.
There's still a problem related to the Vodafone Live! settings that I could not solve, you have to set the "Programs that ... to a private network" to use Vodafone Live! connection, and add an internet address exception for the "live.vodafone.com" url.
This cab changes the settings of Pocket Internet Explorer so that the Vodafone Servers see your Trinity as a Nokia and so allow it to connect to the Vodafone Live! portal. You have to soft-reset for the changes to Internet Explorer be applied.
20070501.1907 (2007/05/01 - 19:07)
-added modified browser.dll( without hard-coded UA String )
weird thing is, this used to work without the modified browser.dll, wtv
So I'm trying to change the default internet profile (Settings->Connections->Connections->Advanced->Select Networks).
This is the network management screen that allows you to change between "My ISP" and "My Work Network" profiles. I need "Programs that automatically connect to the Internet should connect using:" to be changed to "My Work Network" in a programmatic manner.
I have went thru the OMA client provisioning documentation and tried several ways to get this to switch and have been unsuccessful. In particular I have played with the CM_NetEntries quite a bit. This documentation seems to indicate that you can change the profile itself (My ISP or My Work Network) to point to a different provider (Internet or Private network). Is this what I should be doing? Or should I instead be trying to literally switch the selected profile over? Is there a better way to do this?
Thanks!
I think that is going to be hard, but which language are you using?
Right now I'm just using rapiconfig to provision the device with the xml doc. If I can get that to work, I'll wrap it into a .cpf and just install it. If I actually have to code, I prefer C#.
I ran into a problem today where I entered in some details incorrectly to a hidden wireless network profile and then discovered that MS have removed the Wireless Network Manager so I couldn't delete or correctly configure that network as it would not get listed in the metro wireless interface.
After a bout of searching online I've found that this seems to be a rather common problem that has no real fix to be found.
After digging around on my machine I've discovered the wireless profiles are stored in C:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces
where the first sub folders list guids for respective wireless devices on you machine which contains xml files pertaining to the wireless profiles for the respective wireless devices. it seems same to manually delete the files or edit.
Hitsuji666 said:
I ran into a problem today where I entered in some details incorrectly to a hidden wireless network profile and then discovered that MS have removed the Wireless Network Manager so I couldn't delete or correctly configure that network as it would not get listed in the metro wireless interface.
After a bout of searching online I've found that this seems to be a rather common problem that has no real fix to be found.
After digging around on my machine I've discovered the wireless profiles are stored in C:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces
where the first sub folders list guids for respective wireless devices on you machine which contains xml files pertaining to the wireless profiles for the respective wireless devices. it seems same to manually delete the files or edit.
Click to expand...
Click to collapse
Or you just right click on the SSID in the Available Wireless Network list and either select Forget this network or View connection properties :silly:
Donny1987 said:
Or you just right click on the SSID in the Available Wireless Network list and either select Forget this network or View connection properties :silly:
Click to expand...
Click to collapse
Not if you mistype the SSID, or your not in range of the router when you wish to modify the profile, or you have multiple profiles that share the same SSID.
Hello,
What you are looking for is managed via the registry now.
Visit This:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles
Hope this helps
Think netsh is your friend here...
Sent from my HTC One X using Tapatalk 2
1wayjonny said:
Hello,
What you are looking for is managed via the registry now.
Visit This:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles
Hope this helps
Click to expand...
Click to collapse
What a piece of crap...
Remove saved WiFi profiles in Windows 8.1
How to delete a saved WiFi profile in Windows 8.1 (using command line):
1. Open command prompt as administrator
2. (Optional) List saved WiFi profiles:
netsh wlan show profiles
3a. Delete a specific WiFi profile:
netsh wlan delete profile name="your profile name"
or
3b. Delete all saved Wifi profiles
netsh wlan delete profile name=*
Thanks..
Hitsuji666 said:
I ran into a problem today where I entered in some details incorrectly to a hidden wireless network profile and then discovered that MS have removed the Wireless Network Manager so I couldn't delete or correctly configure that network as it would not get listed in the metro wireless interface.
After a bout of searching online I've found that this seems to be a rather common problem that has no real fix to be found.
After digging around on my machine I've discovered the wireless profiles are stored in C:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces
where the first sub folders list guids for respective wireless devices on you machine which contains xml files pertaining to the wireless profiles for the respective wireless devices. it seems same to manually delete the files or edit.
Click to expand...
Click to collapse
It Worked! Tried everything from registry to netsh to right click. Was a friends CPU, think his version of windows disables these options I dunno but this did the trick. Thanks.
Hey there to all.
Since I had Windows 8 on my Ativ Smart PC, I have been able to change APN connection of my device in order to use a different connection than that provided by the system.
Simply,after clicking on newtork icon in status bar, i was right clicking on network name, selecting connection properties and then changing the APN name.
Now that I updated to windows 8.1, the ability to access to network properties is missing by right clicking the network name and I have to access "PC settings/Network" to reach my network.
No problem, up to now, but the issue comes out when i try to change the apn name.
first of all I cannot change the name of the apn given by the provider.
(this should not be a real problem, considering that there is the possibility to create a custom setting)
secondly, even if I set to use the custom settings, if I get out of network setting screen and then I re-enter it, the APN selected is back to the unwanted one.
Is there a way to edit "drastically" APN set by provider? Maybe a regedit workaround?
Thanks in advance
Andrea