The hot set-up is EDIABAS INPA and/or DIS. These are a powerful set of diagnostic programs that will read the codes from all the computers (even the radio), clear the codes, and even reprogram some of the modules like the dealer does. The DIS suite even matches error codes with repair procedures. But, you have to be careful. These programs are meant for dealer technician use and their misuse can do bad things that cost a lot to get fixed. If you go this route, you can get some cheap China cables off eBay that work OK, but the software that comes with them does not (at least I have never heard of anyone who got it to work). The cables use RS-232 serial connectors, so you have to find a serial to USB converter that will work (I bought 3 until I got one to work). The INPA programs were written for a windows machine (but not 64-bit, I don't think) so they're not too bad. The DIS runs on a UNIX platform and you have to set-up a virtual machine to run it.
Stay away from a third party program called PASoft. It says it will do all things, but it will turn your car into a very large paperweight. Another one is CarSoft. It is supposed to be better, but I have not used it. The INPA and DIS were written by BMW.
You can find the hardware (cables, etc...) you need on eBay, for around $100. If you look hard enough, you can find downloads of the software and instructions to help you get it working. This is not for the faint of heart. Most people who are good at working on cars aren't very good at hacking and folks that are good a hacking aren't any good at working on cars, so it can be a bit of a challenge. For someone who knows what they are doing, I'd guess they could set-up INPA on an XP or Vista machine in a couple of hours. DIS will take longer. I've been working on trying to get them running since October; I've got INPA working, but I still can't get DIS to run correctly (although I am very close). The INPA let me know that the steering angle sensor acts up, which causes the DSC light (yellow triangle with a circle around it on the instrument panel) to sometimes come on. I need DIS to be able to calibrate the steering angle sensor.
If you go this route, be prepared to do a lot of reading and a lot of learning.