Bimmercode is the phone based app i have seen a lot of people use. You can use it for coding or fault code checking etc you need a cable or wireless OBD2 dongle for it