BMWhat is an excellent app, and it is the direction these tools have to go. And the reviews on Google Play are phenomenal, in quality and quantity. 4.8 over thousands of reviews is remarkable. You may be looking at the lite version, which is really only there to flush out situations where the tool won't work with a particular car, device or adapter. And there are some folks who feel that you shouldn't have to pay real money for an app, even if it is incredibly valuable.
It reads codes, resets codes, and allows you to set a fairly large number of features like lights on and off.
I would offer a strong suggestion that you embrace that they are solving a difficult problem for us - integrating deliberately obscure and atrociously architected car systems to the most advanced, user centric devices on the planet. So follow their directions!
If you have an E46, use their cable and an android device that supports USB OTG. Don't get angry that you can't use your iPhone or that it doesn't support Bluetooth. These issues are caused by BMW, not BMWhat! Just follow their direction and you will get a tool that fits in your glovebox, does the job without requiring a degree in computer science or a pedigree as a mechanic, and, most importantly, regularly improves with new updates.