FWIW, I have a Peake code reader and it's good for basic codes on the BMWs, mainly emissions related codes. It seems to be the staple for many of the older vehicles. There's quite a bit of help at the M5 forum I go to. Very simple to use and would probably get the codes that gave you your check engine light. It will also reset oil, service intervals, and clear codes.
Products
I also just ordered this software:
BMW GT1 Software
It's supposed to replicate the GT1 system dealers use but I won't know till it arrives and I can play with it.