The airbag warning light has been on my '96 318is and I was looking for the cheapest way to reset it myself.
I bought an "Ediabas INPA OBD2 Diagnostic Interface for BMW" off eBay, the cheapest I could find at about $25 delivered from overseas.
It came with software but the CD was faulty, but the supplier provided a link to download.
I couldn't get the software to work at first and read numerous online instructions. I downloaded numerous versions of the software. It seemed like it was going to be very difficult to get it to work.
In the end I got it working and it was quite simple. I used the software that came with the cable, and:
* Added "C:\EDIABAS\BIN" to the "path" environmental variable.
* Copied the EDIABAS AND IEDIABAS INPA folders to the C: drive.
* Ran the install for the OBD interface in the EDIABAS\HARDWARE\OBD folder.
* Modified the file EDIABAS.INI in the EDIABAS\BIN folder and changed the line that sets the interface to STD:OBD.
Then to run the application and read/clear codes I ran the INPA_LOAD.EXE program from the INPA\BIN folder. The software was the English version so was easy to navigate. There is some interesting menu options where you can looks at all the sensor data from the car. Looks like you could do a bit of damage with some of the menu options though.
The one I bought was from eBay seller "elphabet". I used it on an old Pentium 4 computer running Windows 2000 Server, but it should work easily on anything up to XP, but I believe it is possible to use on Windows 7 too.
On my '96 318is it reported quite a few errors: engine misfires, 5 transmission errors (hopefully these are from before the transmission was replaced just recently), various ABS errors and various airbag errors. All errors have been cleared and I no longer have the airbag light on which is great.
I am going to try it on my '94 318is which probably uses the ADA interface instead of OBD. Will report back on whether this works in case anyone else is interested in a cheap way to do this sort of work.