Originally Posted by JamesM3M5
I was gonna say that. The free code scans you can get at your corner store are usually not able to see all of the BMW specific codes, which is why you didn't see anything until you checked with a Peake, which is designed specifically to read manufacturer specific codes.
All OBDII codes can be read with any scanner for engine faults.
Certain states need it for inspection.
They aren't labeled the same as BMW codes. They are P codes. BMW has they're own codes but each one of those codes will also have a P code matching it. There are very few codes that aren't matched to P codes.
You only need a BMW specific scanner for pulling codes through modules such as your FRM or CAS module which are only found in BMWs.