As for code readers - no one mentioned Autoenginuity. Kind of pricey at $250 for the laptop app but comprehensive and GREAT support. For an additional $230 they sell the BMW expansion kit that will read chassis codes such as airbag and ABS that the OBD II sensors can't. True BMW 1.4.0 will do it for much less money. It's probably worth the risk for the average DIYer. If you're a hard core enthusiast though, think of the AutoEnginuity system as equivalent to the price of a pair of rear tires for an M3.
Fahren in seiner Äußerst Form