BUG: The value of the HTTP_UA_CPU server variable is always reported as x86 for a Windows Mobile 5.0-based device (912876)



The information in this article applies to:

  • Microsoft Windows Mobile 5.0 software for Pocket PCs
  • Microsoft Windows Mobile 5.0 software for Pocket PCs Phone Edition
  • Microsoft Windows Mobile 5.0 software for Smartphone

SYMPTOMS

When a Microsoft Windows Mobile 5.0-based device accesses a Web site that contains the following script, the device cannot correctly identify its processor to the HTTP server.
<%=Request.ServerVariables("HTTP_UA_CPU")%>
The value of the HTTP_UA_CPU server variable is always reported as x86 for a Microsoft Windows Mobile 5.0-based device.

CAUSE

The CPU identification information that the OEM firmware provides is not correctly added to the HTTP User Agent string. Instead, a default value of "x86" is reported.

WORKAROUND

To work around this issue, you can use the following method.

A device returns the following information to the Web server.
HTTP_UA_CPU = X86
HTTP_UA_OS =  Windows CE (POCKET PC) - Version 5.0
This information states that the device is running Windows Mobile 5.0 software for Pocket PCs. Currently, no device that runs Microsoft Windows Mobile 5.0 software for Pocket PCs, Microsoft Windows Mobile 5.0 software for Pocket PCs Phone Edition, or Microsoft Windows Mobile 5.0 software for Smartphone uses an x86 processor. Therefore, you can assume that the information should actually be the following.
HTTP_UA_CPU = ARM
HTTP_UA_OS =  Windows CE (POCKET PC) - Version 5.0
Currently, you cannot obtain the correct processor type for a Windows Mobile 5.0-based device by using the HTTP User Agent string. For other ways to identify a Windows Mobile 5.0-based device that is connecting to the Web server, visit the following Microsoft Developer Network (MSDN) Web site:

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section.

MORE INFORMATION

When a browser connects to a Web server, the browser automatically sends an HTTP User Agent header. This header is an ASCII string that identifies the browser and the browser's version number. For Windows Mobile-based devices, the following specific information is included in the HTTP User Agent header when the browser sends a request to an HTTP server.
UA-pixels: {For example, this value may be 240x320.}
UA-color: {This value may be mono2, mono4, color8, color16, color24, or color32.}
UA-OS: {For example, this value may be Windows CE (POCKET PC) - Version 5.0.}
UA-CPU = {For example, this value may be ARM.}
UA-Voice = {This value may be TRUE or FALSE.}
The UA-CPU string in the HTTP User Agent header should appear exactly as the OEM specifies in the ROM firmware. Typically, this string varies from device to device because ARM-class CPUs frequently have different names, models, and revisions. For example, the CPU may be an Intel PXA255, an Intel PXA270, or a Texas Instruments (TI) OMAP. If the problem that is described in this article did not occur, the CPU value in the UA-CPU string would be the same value that appears for Processor in the About dialog box.

Steps to reproduce the problem

  1. On the server side, add the following script.
    <%=Request.ServerVariables("HTTP_UA_CPU")%>
  2. On the Windows Mobile 5.0-based device, view the Web page in the browser.
The value "x86" is returned. However, the device does not have an x86 processor.

Modification Type:MajorLast Reviewed:3/10/2006
Keywords:kbbug KB912876 kbAudDeveloper kbAudITPRO kbAudOEM