Clean wiper blades with rubbing alcohol. Get a piece of towel paper, apply rubbing alcohol to it, wipe the blade. You will see black crap come off the blade. Repeat. If that doesn't work then buy new wiper/wiper blade .
If no codes are being thrown use Chevron Techron fuel injector cleaner (concentrate). It solves rpm fluctuating upon cold start-up. Also, for most BMW problems start off by scanning your car with the Peake Research Tool. It contains the actual BMW codes. If you want to register a newly installed battery for free (just buy a $10 cable) and google/download BMWLogger