Skip to content

Latest commit

 

History

History
275 lines (203 loc) · 16.1 KB

File metadata and controls

275 lines (203 loc) · 16.1 KB

ESeriesSwitch icon

E-Series ⇄ ISTA+ Switch

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

ESeriesSwitch main window


The problem

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.

Features

  • 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 PATH and its registry type (REG_EXPAND_SZ) are left untouched, so entries like %SystemRoot%\system32 keep 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.INI automatically uses the same interface as EDIABAS, so NFS starts without an OPPS (details below). Offline avoids the NET-0009: TIMEOUT error 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.

Requirements

  • 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\BIN or C:\EDIABAS\BIN

Tested with Windows 11, EDIABAS 7.6.0, ISTA+ from BMW AOS and an ICOM Next.

Download and usage

  1. Download ESeriesSwitch.exe from the Releases page.
  2. Put it anywhere (desktop, tools folder or USB stick) and run it. Confirm the UAC prompt.
  3. Read the current mode on the status card.
  4. Click Switch to E-series tools or Switch to factory ISTA+.
  5. 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.

How it works

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:

  1. The folder in the existing EDIABAS_CONFIG_DIR variable, if that folder exists
  2. Otherwise c:\ec-apps\ediabas\bin, if it exists
  3. Otherwise C:\EDIABAS\BIN

Every switch:

  1. Saves the current PATH (with its registry type) and EDIABAS_CONFIG_DIR to a JSON backup file.
  2. Changes only the two values above.
  3. Broadcasts WM_SETTINGCHANGE ("Environment") so that Explorer and newly started programs get the new values.
  4. 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.

EDIABAS interface (ICOM / ENET / K+DCAN / Offline)

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.

WinKFP / NFS

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_ab625

Without 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] → Interface is set to the same value (e.g. STD:OBD, RPLUS:ICOM_P), and the WinKFP channel entries Interface_1 … Interface_3 are emptied. MEHRKANAL and 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.INI is looked for in …\EC-APPS\NFS\BIN next to EDIABAS, then in C:\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=

What the app changes and what it does not

Changes:

  • the system variable EDIABAS_CONFIG_DIR
  • the EDIABAS BIN entry in the system PATH
  • the Interface and LoadWin64 lines in EDIABAS.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 Interface and Interface_1 … Interface_3 lines in NFS.INI ([INSTANZ]), only when you choose an interface or click Sync
  • the ICOM address in Rplus.ini ([ICOM_P] RemoteHost), the ENET address in EDIABAS.INI ([XEthernet] RemoteHost) or the K+DCAN COM port in obd.ini ([OBD] Port), only when you click Save

Creates:

  • backup files and settings.json (the chosen language) in C:\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.INI and C:\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 and restoring

Backups are stored in C:\ProgramData\ESeriesSwitch\Backups\. Open this folder with the Backups folder button.

  • backup_YYYYMMDD_HHMMSS.json contains the environment before a switch: Path, PathKind and EdiabasConfigDir.
  • EDIABAS_…, Rplus_…, obd_… and NFS_YYYYMMDD_HHMMSS.INI contain a copy of the file before an interface or connection setting change.

Manual restore of the environment:

  1. Open System Properties → Environment Variables… (or run rundll32 sysdm.cpl,EditEnvironmentVariables as administrator).
  2. Under System variables, edit Path, click Edit text… and paste the Path value from the backup file.
  3. Set or delete EDIABAS_CONFIG_DIR to match EdiabasConfigDir from 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.

Troubleshooting

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.

Building from source

  • 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 build

Single-file, self-contained exe (the output goes to bin\publish\ESeriesSwitch.exe):

dotnet publish -p:PublishProfile=FolderProfile

In 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.

Disclaimer

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.

Trademarks

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.

License

MIT © 2026 BimmerDock

Changelog

  • 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
  • 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
    • LoadWin64 set 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\bin or C:\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+