<p>I've got a request from a customer to automatically detect the type of mobile device (not the browser, the type. ex: Moto Q, Blackjack II, etc.) and automatically select the device from a drop down with a list of supported devices.</p>

<p>So far I've found that the HTTP Headers (submitted by mobile IE) contain information such as</p>

<ul>
<li>Resolution</li>
<li>UA-CPU (i've seen ARM from WM 2003 and x86 from WM5)</li>
<li>User Agent (which basically just says Windows CE)</li>
</ul>

<p>The only thing I can think of right now is possibly using a combination of the resolution/cpu and making a "best guess"</p>

<p>Any thoughts?</p>

What exactly does the customer mean by "supported". Surely it means that the phone in question supports the web application and it's inner functionality - wouldn't it be better then to forget device detection and simply focus on detecting those capabilities required for the app to function properly? For example, if my mobile website requires Ajax to work then instead of listing all the devices which are said to "support Ajax" I could do some simple object detection to find out for myself.
Device detection, just like browser detection is unreliable. Yes, it's possible but I wouldn't recomend it... on a project I've done we used the User Agent string to detect various devices. The indexOf javaScript method came in handy! :)