BMW E90 code readers reviews: Inpa, ista, Foxwell NT520, Autel DS808

Here we go for the top 4 BMW code reader for E90 models incl.  Inpa, ista, Foxwell NT520, Autel DS808 etc.

OBD access comes in two flavors: Generic and OEM-specific. ALL cars since the late ’90s MUST support “Generic” access. This supports a wide range of generic ENGINE-ONLY codes and VERY basic functions, like clearing faults and resetting the SES light. For many simple repairs, like a mis-fire, this is enough, for many, like turbo faults, it doesn’t even come close. These devices provide NO access to the MANY other controllers in the car, like transmission, air bags, atc.

Each manufacturer also provides their own, unique OEM-specific codes, which often provide MUCH more specific faults. The “cheap”, generic code readers CANNOT read or reset these. Each manufacturers interface is different, so a scanner than can access the Ford OEM-specific information cannot, in general, access any other manufacturers OEM-specific information.

The expensive, professional-level scanners typically provide access to most, or all, manufacturers OEM-specific information, but those scanners also typically cost $2-5K. Peake has inexpensive BMW-specific tools.

For our E9X BMWs here are your options for diagnostics from cheapest to most expensive:

1) BMW INPA or ISTA Software (Free) on a windows laptop and a $15 K+D Can cable.

BMW INPA for BMW E90 full list of features/capabilities:

It is used for diagnostic information at the factory. Anything you want to know about any senor or module you can use Inpa for.

The basic diagnostic tools in INPA for E9x models:

1) Functional Jobs: (a) see ID of ALL modules in vehicle; (b) read any Fault Codes saved in ANY of those modules, all in 2 minutes from connecting to OBD II Socket.

2) Connect to each individual Module (DME, JBE, EKP, CAS, IHKA, etc.) to: (a) get more specific info on any fault codes saved there, (b) to see Memory History, (c) read Freeze Frame or Infospeicher Data, (d) Clear Codes, (e) “Read Status” (Status Lesen) of real-time function of components such as fuel pump, coolant pump, IHKA flap positions, Radiator Fan, switch positions, temperatures, voltages, sensor inputs to the module, etc. (f) Activations (Steuern) which allow you to test operation of motors, injectors, etc. by keyboard entries rather than having to patch into a circuit.


For example, you can run radiator fan, coolant pump, fuel pump at various speeds and monitor temperatures or pressures associated with that component at the same time, such as monitoring (i) Engine Coolant Temp Sensor signal (coolant temp at top radiator), (ii) Radiator Outlet Temp Sensor signal (lower temp of coolant at bottom radiator hose) while you (iii) manually control Radiator Fan Speed, and you see all three on a screen with three bar graphs.

INPA is a diagnostic tool for monitoring/assessing function of components, in addition to simply reading Fault Codes, their definitions, and the conditions under which those codes were set (as well as mileage at the time). What INPA does NOT do is give you precise engineering data on the algorithms used by a module to set a particular code. It DOES tell you whether the code is currently present, and whether it would light the SES or other warning light.


I haven’t seen ANY guides that List all the things you can do with INPA on an E9x, so I’m making my own, but it takes a LOT of time. My approach is to do a ScreenPrint (Shft+PrtSc) and then paste it to “Paint” and SaveAs jpg in a folder for the particular Module connected to, or “Functional Jobs” which is really the starting point. Then I am using an online translator to try to get a “technically-correct” English translation of the German, and entering the English in a Word outline that summarizes the functional capability of each screen.


When diagnosing faults in a system, it is also helpful to keep an electronic record of the faults and screen prints of any analog readouts related to the system, or even just baseline analog readouts saved when the system was operating properly, so I use the same jpg files saved in folders by Module for future reference (history of this particular vehicle). You CAN of course Print/Druck (F9) any screen, but I prefer to go paperless. If anyone has developed a way to Print to file or save a screen without having to paste to a program such as “Paint,” please advise.


The starting point would be “Functional Jobs” in which you can get a readout (in ~ 1 minute after connecting to the OBD II Socket) of ANY Fault Codes saved in ANY of the ~20+ modules of your particular vehicle. You simply select “Functional Jobs” in the Right-hand List Box and from the Main Menu (HauptMenu) select F4 (Error Memory or FehlerSpeicher) and then F1 (Read Error Memory/FehlerSpeicher Lesen).


2) Foxwell NT520 Scanner loaded with the BMW software ($150) (Software for other makes are available for download at $60 a pop).
Foxwell NT520 BMW E90 test reports:

– Changed the fuel filter, the auto transmission filter/pan and differential oil.

– Activate the lift fuel pump to purge the air and reset the transmission adaptation.

– Low-cost tool  support multiple OEMs. The BMW-software for the NT520 is EXCELLENT, and provides access to not only the engine computer, but virtually ALL computers on the car – Engine, transmission, brakes, ABS, Traction Control, Air Bags, Audio, Navigation, Climate Control, Locks, Alarm, etc.

– an EXCELLENT scanner, and mine has already paid for itself many times over in the ~9 months I’ve owned it.

– Does everything it says it will. You can refer to Foxwell NT520 Scanner BMW function list

3) Autel Maxisys or Maxidas DS808 ($600 to $2500). This is a professional level diagnostics tool that mechanics and repair facilities will use. It does everything that BMW ISTA/INPA and Foxwell NT510/NT520 can do but the advantage is that it comes loaded with software for all Makes and Models (Asian, European, American).

All 3 of these options are better than a stupid generic OBD2 scanner in that these have the ability to connect to each individual module on the car and read manufacturer specific codes.

If you have multiple cars in your family (like me), the “best value” is the Autel Maxidas DS808. At around $680 it covers every make and model. We have 2 BMWs, 1 Honda, 1 Toyota, 1 Lexus.


 One more options for BMW E90 diagnosis:

Use a combination of the following, based on the need, for my E39, E46, E84, E92:

ELM327 Bluetooth LE OBD2 interface with OBD Fusion, Dash Command apps
– Carly gen2 WiFi OBD adapter and Carly app
BMW Scanner 1.4 adapter and software
K+DCAN cable (with the switch) with INPA, WinKFP, NCSExpert

I feel like you need several tools, and hell I love tools! Looks like the Foxwell is the next one on order.