This article provides a step-by-step overview of reading the engine control module from a 2018 BMW X1 equipped with the B38 engine (Bosch MG1CS201 TC298TP), using the Xhorse Multi Prog programmer.
Before You Begin: Identification Is Everything
Before starting any operation, it is critical to identify the exact ECU part number and software version. Different Bosch ECUs may require different connection methods, pinouts, and reading procedures. Skipping this step can lead to failed communication or, worse, corrupted data.
Step 1: Remove the ECU from the Vehicle
The first step is to remove the ECU from the vehicle and inspect it carefully for damage or previous repairs. Always disconnect the vehicle battery before removing the control module. Once the ECU has been removed, clean the housing and verify the identification labels. Careful inspection at this stage can reveal hidden issues that might affect the reading process.
Step 2: Prepare the Multi Prog Tool
Next, prepare the MultiProg programming tool and make sure the software is updated to the latest available version. Open the software and select the correct Bosch ECU family from the database. Double-check all information before proceeding.

Step 3: Determine the Correct Connection Method
Depending on the ECU version, the reading process may require bench mode or direct connection to the printed circuit board after opening the control unit. Follow the official connection diagram provided by the programmer software. Ensure that power supply voltage is stable and that all communication lines are connected correctly.
A regulated power supply is strongly recommended. Voltage fluctuations during a reading operation can lead to communication errors and may corrupt the data. Before applying power, verify every connection one more time.


Step 4: Establish Communication and Read the ECU
Once the wiring has been confirmed, power on the ECU and establish communication through Multi Prog. The software should recognize the control unit and display identification information such as hardware number, software number, and calibration data.
At this stage, perform a full backup read whenever the option is available. Creating a complete backup before any modification is considered best practice. Store the backup files in a secure location and create additional copies if necessary.
Step 5: Monitor the Reading Process
During the reading process, do not disconnect power, USB cables, or communication lines. Interrupting the operation may result in incomplete data acquisition. Monitor the progress bar and wait until the software confirms successful completion.
Read eeprom.
Read flash.
Read ISN code.
Step 6: Save and Verify Your Files
After the read is finished, save all files with clear names that include the vehicle model, engine type, ECU number, and date. Proper file organization makes future diagnostics and recovery procedures much easier.
It is also recommended to verify the saved data using the software’s built-in validation functions, if available. Confirm that the file size and read status match the expected values for that ECU type.
Here we share one of our customers’ working experience on programming a Toyota Yaris 20019 all keys lost.
It’s blade key Toy47 4D type.
This one no way by obd. Read eeprom and add the key by dump mode.
Eeprom only, you’ve done the hard part getting the box out, read 8 leg, write back and plug in to start.
Did the eeprom, removed the atmel chip, and read the eeprom, he took an Xhorse super chip XT27A transponder and generated one of 2 keys that was in the system, and then wrote back eeprom to the chip, and solder it back, but the car won’t start.
Then also tried XT27B chip, still no lock.
Updated:
He did all with VVDI XT57B super chip.
It didn’t work 1st time , but after 2 attempts all worked as it should.
Tried without writing back eeprom after generating the key, didn’t start.
Wrote it back and it worked.
FYI:
There are two similar boxes. The immo box is very good hidden.
Whole dash has to be removed for the correct immo box.
Xhorse VVDI Key Tool Plus has a new feature to back up eeprom data and generate a universal key to disable active alarm on newer Fords.
It does on some Toyota, it reads eeprom to and then on an XM38 it uses it as emergency, then with another different xm38 will be your “master” key to program in.
No Ford AKL adapter is needed. It reads the memory, modifies it and deactivates the alarm using that method.
It emulates a stored key like Autel does with their emulator; you just use a universal Xhorse smart key in place of the emulator.
Not on all Fords, check device and see if there is such an option.
VVDISHOP here will show how to add a spare ID48 remote key to a 2011 VW Jetta using Xhorse VVDI Key Tool MIDI.
Procedure:
Step 1: Generate Remote
Generate Xhorse remote under the proper remote program.
Read IMMO Data.
Select Login method 1.
Read CS PIN etc immo data.
Save immo data.
Select Generate dealer key- load immo data.
Load the saved immo data to generate dealer key.
Step 4: Program remote control
Go to IMMO Programming- VW- select by type- Remote System- 09 contral control system (CAN)-BCM.
Add a VW Jetta 2011 remote key successfully.
On this BMW G12, the right tail light was completely black. The fault was in the tail light data, so instead of replacing the lamp, I opened the unit and repaired the MCU data with the Xhorse Muti-Prog Programmer.
Remove the Tail Light
Open the Housing &Remove the PCB
Wire the PCB and Flash the MCU
Reassemble and Test
The tail light is back on. Repair completed successfully.