One-click switching between the legacy BMW E-series coding tools and the official BMW ISTA+ on the same Windows PC.
Made by BimmerDock · bimmerdock.com
🇭🇺 Magyar leírás / Hungarian README
Many BMW technicians and enthusiasts keep two diagnostic worlds on one laptop:
| Legacy "Standard Tools" | Factory ISTA+ | |
|---|---|---|
| Programs | EDIABAS, INPA, WinKFP, NCS Expert, Tool32 | ISTA+ (ISTA-D), downloaded from BMW AOS (Aftersales Online System) |
| Used for | Diagnostics, coding and programming of E-series BMWs (roughly the late 1990s to the mid-2010s, e.g. E39, E46, E60/E61, E65, E70, E81–E88, E90–E93) and the R-series MINIs of the same era | BMW's official workshop diagnostic system for E, F, G and newer series |
| Needs | EDIABAS in the system environment: the EDIABAS_CONFIG_DIR variable and the EDIABAS BIN folder in PATH |
No system-wide EDIABAS in the environment. ISTA+ ships its own EDIABAS, and a global one interferes with it |
So the legacy tools only work with the environment variables, and ISTA+ only works reliably without them. Until now that meant editing the system environment variables by hand or running a batch script every time you changed cars.
ESeriesSwitch does this with one click, safely, and shows you at a glance which mode is active.
The exact vehicle coverage of the legacy tools depends on the version of your data files (SP-Daten). For F, G, I and U series cars you normally use E-Sys or ISTA+, so this tool is only relevant if you also use the legacy tools.
- Clear status: 🟠 E-series mode, 🟢 Factory ISTA+ mode or 🔴 Partial state (only one of the two settings is present).
- One-click switching in both directions.
- Automatic backup of the previous values before every change.
- Safe PATH handling: only the EDIABAS entry is added or removed. The rest of
PATHand its registry type (REG_EXPAND_SZ) are left untouched, so entries like%SystemRoot%\system32keep working. - EDIABAS interface selection (ICOM, ENET, K+DCAN or Offline), with the ICOM IP, the ENET address and the K+DCAN COM port editable in the app.
- WinKFP / NFS:
NFS.INIautomatically uses the same interface as EDIABAS, so NFS starts without an OPPS (details below). Offline avoids theNET-0009: TIMEOUTerror when no ICOM is connected (details below). - Restart offer after switching.
- Warnings if the EDIABAS folder is missing or if user-level variables could override the system ones.
- English and Hungarian user interface, switchable at any time.
- Update notification: on startup the app checks GitHub for a newer release and shows a Download button if there is one.
- A single portable
.exe. No installation and no .NET runtime needed.
- Windows 10 or 11 (64-bit)
- Administrator rights. The app changes system-wide environment variables, so Windows asks for permission (UAC) when it starts.
- An existing EDIABAS installation for the legacy tools, in
C:\EC-APPS\EDIABAS\BINorC:\EDIABAS\BIN
Tested with Windows 11, EDIABAS 7.6.0, ISTA+ from BMW AOS and an ICOM Next.
- Download
ESeriesSwitch.exefrom the Releases page. - Put it anywhere (desktop, tools folder or USB stick) and run it. Confirm the UAC prompt.
- Read the current mode on the status card.
- Click Switch to E-series tools or Switch to factory ISTA+.
- Restart the computer when offered. Newly started programs usually see the change right away, but a restart makes sure that every program and background service (especially ISTA+) picks it up.
Windows SmartScreen may warn you on the first start because the exe is not code-signed. Click More info → Run anyway.
The app works on the system environment variables in the registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
| Mode | EDIABAS_CONFIG_DIR |
PATH |
|---|---|---|
| E-series tools | set to the EDIABAS BIN folder |
EDIABAS BIN folder appended to the end |
| Factory ISTA+ | removed | all known EDIABAS BIN entries removed |
Which EDIABAS folder is used:
- The folder in the existing
EDIABAS_CONFIG_DIRvariable, if that folder exists - Otherwise
c:\ec-apps\ediabas\bin, if it exists - Otherwise
C:\EDIABAS\BIN
Every switch:
- Saves the current
PATH(with its registry type) andEDIABAS_CONFIG_DIRto a JSON backup file. - Changes only the two values above.
- Broadcasts
WM_SETTINGCHANGE("Environment") so that Explorer and newly started programs get the new values. - Offers a restart.
Environment variable names and paths are case-insensitive on Windows. The variable is written as ediabas_config_dir, which is the same variable as EDIABAS_CONFIG_DIR.
The Interface line in EDIABAS.INI tells EDIABAS which diagnostic interface to use. With an ICOM this is RPLUS:ICOM_P. In that setting, INPA and Tool32 look for the ICOM as soon as they start. If no ICOM is connected, you get this error after about 20 seconds:
ApiInit: Error #159
NET-0009: TIMEOUT
API initialization error
The EDIABAS interface card shows the current setting (always read fresh from the INI files) and switches it with one click:
| Button | Interface |
LoadWin64 |
When to use it |
|---|---|---|---|
| ICOM | RPLUS:ICOM_P |
1 |
E-series cars with an ICOM (INPA, Tool32, NCS Expert). Reserve the ICOM in ITool Radar first |
| ENET | ENET |
1 |
F/G-series cars (e.g. INPA64 / Tool64) with an ENET cable or an ICOM Next |
| K+DCAN | STD:OBD |
0 |
E-series cars with a K+DCAN USB cable. Set the port's latency to 1 ms in Device Manager |
| Offline | NUL |
unchanged | No interface connected. INPA / Tool32 start without the error, but cannot talk to the car |
LoadWin64 (in EDIABAS.INI → [Configuration]) selects the 64-bit (1) or 32-bit (0) EDIABAS. The app sets it together with the interface, following the EDIABAS 7.7 configuration guide. If it does not match the selected interface (e.g. after a manual edit), the card shows a warning, and clicking the active interface button again fixes it.
ENET connection: in ENET mode you can also choose how the car is connected. This sets the ports in EDIABAS.INI → [XEthernet]:
| Choice | ControlPort |
DiagnosticPort |
|---|---|---|
| ENET cable | 6811 |
6801 |
| ICOM Next | 50161 |
50160 |
Connection settings: in ICOM, ENET and K+DCAN mode a field appears under the buttons. Type the new value and click Save (or press Enter):
| Mode | Field | Stored in | Allowed values |
|---|---|---|---|
| ICOM | ICOM IP address | Rplus.ini → [ICOM_P] → RemoteHost |
IPv4 address, e.g. 169.254.92.38 (shown in ITool Radar). 0.0.0.0 means not set |
| ENET | Vehicle / ICOM IP | EDIABAS.INI → [XEthernet] → RemoteHost |
Autodetect (default), or an IPv4 address, e.g. the ICOM's IP when using an ICOM Next |
| K+DCAN | COM port | obd.ini → [OBD] → Port |
COM1 … COM256, written as e.g. Com3 |
All three files are in the EDIABAS BIN folder.
The MOST interface for WinKFP with an ICOM-B (
RPLUS:MOST_ASYNC) is not managed by the app. If it is set, the card shows Other interface.
- The INI files are only changed when you click an interface button or Save. Switching modes never touches them.
- Only the value of that single line is replaced. The rest of the file stays byte-for-byte identical, and no lines are added or removed.
- A copy of the file is saved to the backups folder before every change.
- The change takes effect the next time INPA or Tool32 starts. No restart is needed.
NFS (C:\EC-APPS\NFS\BIN\nfs.exe, the WinKFP flash system) has its own interface setting in NFS.INI → [INSTANZ]. Out of the box it points to a BMW factory OPPS interface:
[INSTANZ]
Interface= remote:OBD_ab625
MEHRKANAL= JA
Interface_1= remote:OBD_ab625
Interface_2= remote:MOST_CTRL_ab625
Interface_3= remote:MOST_ASYNC_ab625Without an OPPS, NFS then fails to start. According to the NFS help, a single-instance NFS should use the same channel as EDIABAS, so the app keeps them in sync:
- When you choose an interface,
NFS.INI→[INSTANZ]→Interfaceis set to the same value (e.g.STD:OBD,RPLUS:ICOM_P), and the WinKFP channel entriesInterface_1…Interface_3are emptied.MEHRKANALand the rest of the file are not changed. - The EDIABAS interface card shows whether NFS matches EDIABAS. If it does not (e.g. after a manual edit or a fresh install), click Sync.
NFS.INIis looked for in…\EC-APPS\NFS\BINnext to EDIABAS, then inC:\NFS\BIN. If it is not found, this part of the card is hidden.
For K+DCAN, the result is exactly the usual manual fix:
[INSTANZ]
Interface= STD:OBD
MEHRKANAL= JA
Interface_1=
Interface_2=
Interface_3=Changes:
- the system variable
EDIABAS_CONFIG_DIR - the EDIABAS
BINentry in the systemPATH - the
InterfaceandLoadWin64lines inEDIABAS.INI, only when you click an interface button - the ENET ports in
EDIABAS.INI([XEthernet] ControlPort/DiagnosticPort), only when you choose ENET cable or ICOM Next - the
InterfaceandInterface_1…Interface_3lines inNFS.INI([INSTANZ]), only when you choose an interface or click Sync - the ICOM address in
Rplus.ini([ICOM_P] RemoteHost), the ENET address inEDIABAS.INI([XEthernet] RemoteHost) or the K+DCAN COM port inobd.ini([OBD] Port), only when you click Save
Creates:
- backup files and
settings.json(the chosen language) inC:\ProgramData\ESeriesSwitch\
Never touches:
- user-level environment variables (it only reads them and warns you)
- ISTA+, INPA, WinKFP, NCS Expert or any of their files
- the rest of
EDIABAS.INI,Rplus.ini,obd.ini,NFS.INIandC:\EC-APPS - network settings, the ICOM or Windows services
Network: the only connection the app makes is the update check, a single request to api.github.com on startup that reads the latest release number. No data about you or your PC is sent, and nothing is downloaded automatically. If the PC is offline, the check is skipped silently.
Backups are stored in C:\ProgramData\ESeriesSwitch\Backups\. Open this folder with the Backups folder button.
backup_YYYYMMDD_HHMMSS.jsoncontains the environment before a switch:Path,PathKindandEdiabasConfigDir.EDIABAS_…,Rplus_…,obd_…andNFS_YYYYMMDD_HHMMSS.INIcontain a copy of the file before an interface or connection setting change.
Manual restore of the environment:
- Open System Properties → Environment Variables… (or run
rundll32 sysdm.cpl,EditEnvironmentVariablesas administrator). - Under System variables, edit
Path, click Edit text… and paste thePathvalue from the backup file. - Set or delete
EDIABAS_CONFIG_DIRto matchEdiabasConfigDirfrom the backup.
Manual restore of EDIABAS.INI / Rplus.ini / obd.ini / NFS.INI: copy the backup file back to its folder (EDIABAS BIN, or NFS\BIN for NFS.INI) and rename it to its original name.
| Symptom | Cause and fix |
|---|---|
NET-0009: TIMEOUT when INPA / Tool32 starts |
EDIABAS is set to ICOM, but no ICOM is connected or the ICOM is still reserved by ISTA+. Connect the ICOM (ignition on) and check that the ICOM IP address matches the one in ITool Radar, or click Offline. If ISTA+ was used before, release the ICOM in ITool Radar or unplug it for about 10 seconds. |
| ISTA+ misbehaves after switching to ISTA+ mode | Restart the computer so that every process and service starts with the clean environment. |
| A tool still sees the old setting | Programs that were already running keep their old environment. Restart the program or the computer. |
| Warning about user variables | EDIABAS_CONFIG_DIR or the EDIABAS folder is also set among your user variables, which can override the system ones. Remove it by hand under Environment Variables → User variables. |
- Visual Studio 2026 (".NET desktop development" workload) or the .NET 10 SDK
- WPF, .NET 10, C#
git clone https://github.com/BimmerDock/ESeriesSwitch.git
cd ESeriesSwitch
dotnet buildSingle-file, self-contained exe (the output goes to bin\publish\ESeriesSwitch.exe):
dotnet publish -p:PublishProfile=FolderProfileIn Visual Studio: right-click the project → Publish… → FolderProfile → Publish. The app requires administrator rights, so start Visual Studio as administrator to debug it with F5.
Use this software entirely at your own risk.
This software is provided "as is", without warranty of any kind, express or implied. BimmerDock and the contributors accept no liability whatsoever for any direct or indirect damage, including damage to vehicles, control units (ECUs), diagnostic interfaces, computers, software installations or data, and including loss of data or downtime, arising from the use or misuse of this software.
Diagnostic, coding and programming operations on vehicles can permanently damage control units if done incorrectly. This tool only changes Windows settings, but it is your responsibility to know what the diagnostic tools you run afterwards will do. Always make your own backups.
This project is an independent, unofficial tool. It is not affiliated with, endorsed, sponsored or supported by BMW AG or any of its subsidiaries. BMW, MINI, ISTA, INPA, WinKFP, NCS Expert, EDIABAS, ICOM and AOS are trademarks or product names of their respective owners. They are used here for identification purposes only. This repository contains no BMW software, data files or other proprietary material.
MIT © 2026 BimmerDock
- 1.4.1: fix: on small / scaled laptop screens the window no longer extends beyond the screen. It is capped to the screen height, keeps its title bar visible, and the content scrolls
- 1.4.0
- WinKFP / NFS support:
NFS.INI[INSTANZ]automatically follows the EDIABAS interface, so NFS starts without an OPPS - NFS status on the interface card, with a Sync button when it does not match
- WinKFP / NFS support:
- 1.3.0
- Interface selection extended: ICOM, ENET, K+DCAN and Offline
- ICOM IP address (
Rplus.ini), ENET address (EDIABAS.INI) and K+DCAN COM port (obd.ini) editable in the app, always read fresh from the INI files LoadWin64set automatically with the interface (ICOM / ENET: 1, K+DCAN: 0), with a warning if it does not match- ENET connection choice: ENET cable (ports 6811 / 6801) or ICOM Next (ports 50161 / 50160)
- Setup hints for each interface (ITool Radar reservation, 1 ms latency for K+DCAN)
- Backups of the INI files always keep the original state, even when one action changes several lines
- Rounded toggle buttons for the language and interface selection
- 1.2.1: moved to the BimmerDock organization, BimmerDock branding and website link in the app
- 1.2.0: update notification when a newer release is available on GitHub
- 1.1.0
- English and Hungarian user interface with a language switcher
- Automatic detection of the EDIABAS folder (
c:\ec-apps\ediabas\binorC:\EDIABAS\BIN) - Switching to ISTA+ removes every known EDIABAS entry from
PATH - About dialog with license and disclaimer
- 1.0.1: EDIABAS interface (ICOM / Offline) display and toggle
- 1.0.0: first release, switching between the E-series tools and ISTA+
