You can read the codes easily without a code reader by just using a digital multimeter, and a few aligator clips.
To read the codes you need to hook up the STI pin of the diagnostic connector (under the fuse panel) to earth (i.e. ground it). This pin is the top LHS one. Next connect the positive lead of a digital multi-meter to the STO pin, and the negative lead to earth. The STO pin is the fifth one in from the LHS on the top.
As you do not want to touch the adjacent pins together, and the aligator clips are a bit bulky to use, i made up some test leads by soldering a small spade connector (I had to squash these slightly to fit properly in the space available) to one end of the aligator clip lead. These should loosely fit over the diagnostic pins and i use the alligator clips to connect between these and the multi-meter.
Once hooked up turn the ignition on, but dont start (for KOEO tests anyway). The multi-meter should read 12V initially. Then various valves should cycle (don't freak out the first time this happens), and then the multimeter will flash a series of open loop pulses. These are the codes. The codes are given twice for any fault. e.g. 111 111 for all OK. The pulse format is as follows:
- ½ second OPEN LOOP for each digit
- 2 seconds on between digits (of a given code)
- 4 seconds on for the time between codes
- 6 seconds on time before and after the ½ second separator code
While running the tests the engine should be at normal running temperature, transmission in park, heater/AC off, and all other electrical loads (including doors) should be off (or so the manual says).
If you wish to repeat any of the tests, turn the ignition off for at least 20 seconds, then repeat.
To erase any fault codes (after they’ve been fixed), disconnect the STI lead from the ground during the test. The same set up is used for KOER tests.
Hope this helps. It takes a bit to get used to reading them, but its not that hard. Double check if you're not sure.