I use one of the eBay dongles. Works great with Torque.
Torque although not intuitive is very useful.
Reads and resets codes and give real time information on all readable sensors.
I've used the read/reset function on BMW e36 M3, 335i, Mazda 3, Mazda 6, Dodge Grand Caravan, Dodge Magnum, Chrysler pacifica and Porsche Boxter.