Posts tagged ‘ActiveSync’

Windows Mobile Device Center (WMDC) or ActiveSync Troubleshooting

If you have trouble to get a connection to your windows mobile or windows ce device, here (archived copy) is a great article about how to repair the connection.

I recently had such trouble. WMDC only showed an Error symbol. The log file vminst.log showed many “inst : 09/05/13 10:00:27 E1:AdjustSecurity: security query failed: 0x80004002 0x00000000” error lines.

Looking for the meaning of this error, I found 0x80004002 is related to outlook. This is erratic, as I do not sync email or other stuff with these development devices, I use the GuestOnly registry setting to avoid to create a partnership with all the devices around my developer desk.

But outlook was also mentioned as possibly cause for WMDC problems and so I changed to my outlook dir and run scanpst.exe on my outlook pst file. And, o wonder, the WMDC connection did work after the repair (there were errors in my pst file).

 

Getting rid of obsolete Microsoft Windows Mobile Remote Adapter s

As a windows mobile programmer I have to fight with ActiveSync aka Windows Mobile Device Center. The newer WM devices come with enhanced network function via USB ActiveSync/WMDC and then each time a new device is connected, you will get a new Mobile Remote Adapter with a new number at the end.

First, I dont need any partnership and so I change my system to do GuestOnly connections with WMDC (Windows Mobile 7, 64Bit system).

OK, second annoyance is the awlays coming up WMDC or WMDC+Mobile Registration Wizard. These Popups can be avoided by changing the call to WMDC.exe to WMDCbase.exe. See also this post.

So, I can connect one of the several devices I have currently for development support (about 10-30) without annoying popups.

But then I found, that for each device and sometimes multiple times, Windows installs a new “Microsoft Windows Mobile Remote Adapter” in Device Manager. I found about 88 instances, where only ONE is needed. Before you can see the inactive adapters, you have to enable Show_Hidden_Devices. One way to show hidden devices is this []:

  1. Click Start, point to All Programs, point to Accessories, and then click Command Prompt.
  2. At a command prompt, type the following command , and then press ENTER:
    set devmgr_show_nonpresent_devices=1
  3. Type the following command a command prompt, and then press ENTER:
    start devmgmt.msc
  4. Troubleshoot the devices and drivers in Device Manager.

    NOTE: Click Show hidden devices on the View menu in Device Manager before you can see devices that are not connected to the computer.

  5. When you finish troubleshooting, close Device Manager.
  6. Type exit at the command prompt.

To remove the hidden, inactive Mobile Remote Instances, you can now right click on every instance, then click UnInstall and then [OK]. But for 88 instances, that is a bunch of clicking.

As programmer, I searched of a way to remove these instances programmatically. OK, I digged google and found DevCon, a tool to manage devices and instances from the command line. Unfortunately, I had to download a CD image of Windows WDK to get DevCon.exe. Then I found a site which described howto install DevCon only.

With the help of DevCon.exe, I produced a list of “Microsoft Windows Mobile Remote Adapter” instances, removed to not numbered one and then built a list of DevCon commands to remove the obsolete instances.

List all Windows Mobile Remote Adapters into a file:

devcon findall "USB\VID_067E&PID_1003&REV_0000" >wm_remote_adapters.txt

“USB\VID_067E&PID_1003&REV_0000” is the identifier for Windows Mobile Remote Adapter (you can find this by right clicking the instance in device manager and select properties).

USB\VID_067E&PID_1003\0040056A-0E9D-0801-0DE0-01130400682B  : Microsoft Windows Mobile Remote Adapter #59
USB\VID_067E&PID_1003\0040056A-0E9D-0801-1B10-010E04000801  : Microsoft Windows Mobile Remote Adapter #6
USB\VID_067E&PID_1003\0040056A-0E9D-0801-0B70-000E0400BA61  : Microsoft Windows Mobile Remote Adapter #24
USB\VID_067E&PID_1003\0040056A-0E9D-0801-1990-001104000E40  : Microsoft Windows Mobile Remote Adapter #77
USB\VID_067E&PID_1003\99461300-B56A-0801-DD17-0FBB99944738  : Microsoft Windows Mobile Remote Adapter #89
...

Then, in the list wm_remote_adapters.txt, I replaced all line starts etc and built this cmd list:

devcon.exe remove "@USB\VID_067E&PID_1003\0040056A-0E9D-0801-0590-010E0400A43B"
devcon.exe remove "@USB\VID_067E&PID_1003\99461300-B56A-0801-5AD3-B56444802FC3"
devcon.exe remove "@USB\VID_067E&PID_1003\99461300-B56A-0801-B87A-D1874E00C078"
devcon.exe remove "@USB\VID_067E&PID_1003\0040056A-0E9D-0801-1640-01100400B075"
...

Then I saved this cmd list as remove-adapters.cmd and started it from the command prompt. And, voila, all obsolete adapters are gone for now.

From time to time I have to rebuild the lists again to get rid of these many obsolete adapters.

Mobile Development: AutoHide Windows Mobile Device Center 2

In an earlier post I wrote about a tool to autohide the annoying WMDC window. As a developer I dont like to keep WMDC come up every time I connect a device. I just need to know, if the device is connected or not.

Fortunately, Henkie leaved a comment about a usefull alternative for WMDC. But as commented here, no visual control of the connection.

Now I started to think about a small tool to have a visual control of WMDC connected or not. I had to use RAPI either provided by MS or via OpenNetCF.Desktop.Communication. Although the OpenNETCF one works OK, I was not satisfied, as it was impossible to get a connection status without disconnect/connect. So I went back to WIN32 API and wrote this small tool based on DeviceInfo sample of Windows Mobile 6 SDK.

First I again messed up with notification icons in Windows 7 (64bit). But the icon may be removed or not, depending on Windows 7 decisions I dont know.

So the tool uses a simple window and an icon to let you know the connection status.

Just start the tool and the icon and edit window background will show, if device is connected or not. The application icon in the title bar as in the taskbar button will change from gray to color for a connected versa a disconnected device.

Visual Studio 2008 C/C++ Win32 code and exe: [Download not found]

ActiveSync Scripting

The following is a nice? sample for an automation task. This batch will be executed every time a device connects to your PC via ActiveSync. You will need the itsutils.

As you can read, the batch (script) first tries to check, if it has already been run on the device. This is done by looking for a file called “\OnConnect.done”. In real, the batch deletes a local file (line 13) “OnConnect.done” and then simply copies the file from the device (line16). If the file is found, this device has been already processed (line 17) and the batch gos on with line 66.

If the file is not found, the batch continues with setting the registry changes. It uses saved REG files and the nice tool pregutl to do it remotely (line 22 to 24). After doing the changes, the device will be queried for different registry keys which will be saved to database.txt for later use. The registry keys platform (line 29) and version (line 30) are available on all devices, but OSBuildInfo (line 59) and system (line 48) are only available on CK3x or 7xx.

So in line 33, we try to find the model string for CK3x devices and in line 39 for CN2 devices. In line 43 and 44 we will use the saved model names to jump over the part, that is only valid for PPC (7xx): dump psminfo.txt into database.txt. The OSBuildInfo registry is only been executed for CK3x models.

Finally we put a OnConnect.done onto the device, so we later know, that it was handled. At the very end, we sync the time of the device with the PC.

Continue reading ‘ActiveSync Scripting’ »