I would use protool with the master license, it'll give you coding, obd2 code reading with the ability to read bmw specific codes, reset codes, and even data logging.
I have a review for it:
https://f87.bimmerpost.com/forums/sh....php?t=2003707
If you want an even more "hard core" tool, then you can get ISTA which is bmw's dealership level diagnostics tool. It has a much higher learning curve though, and can only be run on a windows machine.