The free vesion of the Torque app (android) will let you read and reset codes via the bluetooth dongle described above. It's as accurate as anything else out there, it reads whatever your vehicle signals. I've been using it for a year or so and it works really well. I find that I mostly use it to see how much gas is left in my tank when my sender is under the E, but you can use it for all sorts of fun stuff.
If you want to do fancier stuff or almost anything with a diesel you'll have to buy the app.
Josh