Using the WT.dm parameter works great (that is what the mobile SDKs use naturally).
We also have a dimension that uses the browser user/agent string and parses it for device names and details. It isn't perfect because manufacturers and carriers are not very disciplined about their agent strings and often change them for no apparent reason. But we keep it up to date.
You can use this agent based dimension when you create custom reports using the "Mobile Device" dimension.