The website OBD-Codes.com contains a list of diagnostic trouble codes for cars from major manufacturers including BMW. These codes include both the generic codes common to all cars with OBD II diagnostic systems and codes specific to BMW's vehicles.
The on-board diagnostic system is used in all cars built for the U.S. market since 1996. Most of the trouble codes used in the system are generic; codes beginning with P0, P2 or P3 indicate problems in a car's powertrain, codes beginning with B suggest a problem in the car's body, and codes with C at the start pinpoint a problem in the car's chassis. Codes starting with P1 are manufacturer-specific codes.