It would really help if we know the codes he read.
The incorrect ration can come up from a bad MLPS (manual lever position sensor). It is a switch on the trans where the linkage attaches. It tells the processor what gear position you have moved the shifter into. There have been quite a few failures on this sensor as it ages. It seems that the lubricating grease eventually migrates to a point where it can interfere with the correct electrical signal, telling the computer that it is in a gear other than what you selected.
Get the correct code first so someone can help you see if this may be what you have happening.