Programming with ISTA/D and ENET

When it comes to programming, ISTA/D and ENET have proven to be a reliable and efficient combination. While ESYS also works well, I want to focus on my experience with ISTA/D and ENET in this article. I won’t be discussing the ICOM setup in this post, as it is not the main subject.

The prerequisites are :
1. A BMW supporting ENET, such as the F-series
2. A correctly installed ISTA/D (standalone or not, preferably version 4.32 or 4.39)
3. A full psdzdata package (approximately 280GB once uncompressed on the latest versions)
4. An ENET cable, which can be easily sourced
5. A power supply capable of maintaining a decent voltage (e.g., 13.5V) during the programming session, as the engine cannot be running. A 20A capable power supply is recommended.

It’s important to note that the installation of ISTA Software can be time-consuming. I strongly recommend having a SATA SSD or NVME disk on your laptop to expedite the process, as HDDs are not ideal for this purpose.

#1 enable ENET programming in ISTA
A configuration file is located in your `ISTA\TesterGUI\bin\Release` folder : ISTAGUI.exe.config
Don’t be overwhelmed by this fat XML file, you just have to look for `<appSettings>` and then add or replace a couple of keys :

`BMW.Rheingold.ISTAGUI.enableENETprogramming` to “true”
`BMW.Rheingold.Programming.ExpertMode` to “true”
`BMW.Rheingold.Programming.Enabled` to “true”

Alternatively, you can add entries to the Windows registry rather than editing the configuration file :
in `HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\BMWGroup\ISPI\Rheingold`
you would add the same keys, with the following string value : True

#2 The easiest part, set ISTA to use ENET
Pictures are better than words here :

Note the settings :
Dealer organisation ICOM / ENET local area network
Search broadcast default value : 255.255.255.255,169.254.255.255
Setting search broadcast to an empty value will get you back to the default value by the way.

#3 The shitty part : A resilient network configuration
The short version : While being directly connected to your car from the laptop, you DO WANT to setup a DHCP in order to avoid programming failure.

Why ? Because Windows and your car will default to APIPA IP adresses (169.254.x.x), but will re-negotiate from time to time leading to your network setup to be non-continuous during the programming session. I ended up with a Christmas tree on my dashboard on first try.

So DHCP it is, ok, but which settings ? That’s were it is a bit funky…
You do want two tools to work : ISTA/D of course, but I strongly suggest to launch ZGW_SEARCH before.
ZGW_SEARCH sits in `EDIABAS\Hardware\ENET\ZGW_SEARCH.exe`, it basically just scans the network and show-up your car if detected, almost instantly.
In a way, it is equivalent to ITOOLRADAR detecting an ICOM (when you use an ICOM device).

The tricky part is that ZGW_SEARCH is hardcoded to scan on the APIPA adresses, by sending packets on the broadcast address 169.254.255.255 (actually sometimes to 169.254.255.25 too). This means that your DHCP configuration should be setup as follows :
IP of your laptop : 169.254.0.1 (or any other ip between 169.254.0.1 and 169.254.255.254)
netmask : 255.255.0.0
gw : whatever, could be set to 169.254.0.1
dns : same thing
IP pool : any other ip than your laptop’s : between 169.254.0.1 and 169.254.255.254. I usually take 169.254.42.1 to 169.254.42.255

There are usual tools to help : Netsetman which configures your network card and then launches Tftpd64 (the DHCP server)
Every time you plug your ENET and power-up your car, launch ZGW_SEARCH and you will see your gateway module detected. Then ISTA can be launched and should work as a charm (as much as ISTA is charming :/)

FAQ:
1. press the refresh button a second time in ZGW_SEARCH if you get nothing (it tries a different broadcast address)
2. once the car plugged and powered up, some modules will take up to 10s to be detected on the network, so just wait 10s before trying anything