Wednesday, November 30, 2016

How to use E-sys read 1B/DE file for bmw E/F series with CIC

Something interesting about Esys enet cable reading 1B/DE file (file 1B) from BMW E or F series with CIC.

Disclaimer: It’s all customer share from bmw topics/forums. Data copied only for share info to help someone else.

The methods applies to: BMW E and F series cars
You need: ENET cable / ICOM bmw + E-sys software

Process of reading 1B/DE file from CIC:
connect the BMW Esys cable to the car, and open FSC-exented, and compiled as in photos.
 follow the processes shown by the arrows, and have saved your file DE, in hex format.

Now if you open this file with hex editor, you will find the VIN of the CIC / NBT (in case you did not know)
Now if you open this file with hex editor, you will find the VIN of the CIC / NBT (in case you did not know)
 and you will get the file FSC (rename it as: F123456_000DE001.fsc) ready to be used with FSC generator.


Questions & Answers for reference:
- What is this for?
- One thing you can do with the 1b file is generate a FSC code for map updates.

- How to use the 1B file to generate a FSC code for other uses than GPS maps, or is does the same code work for every thing else that needs it?
- It's only for GPS maps, you cannot generate FSC codes for other functions.

- Can i obtain 1b files from E series with K+DCAN cable? or i need anyway an icom? 
It serves ICOM or FTP access from the network.

- If i need to use e-sys on E series with cic, it is possible with enet ?
- Yes, the ENET cable (costs less 20 euro) can be used with CIC in E series. (But it must be wired by the cic to the OBD port

use access login, and save the file: generalPersistencyData_DiagnosticSWTControlle 
in position : // HBpersistence / normal 
(do not ask data login thanks) 

This file contains the file 1B.
open with hex editor, and look for the 'index: 01 01 00 1B (early 1b files)
and copy 319 decimal successive,included 01 01 00 1B.
Note:
This works, but with some conditions:
1. The CIC in your car must be factory fitted. When it is retrofit there is no Ethernet connection between OBD and CIC.
2. CIC must get IP address from DHCP to be accessible by ftp. Easy way is to connect enet cable to router and restart the CIC. After CIC restart it will have it's own IP.

(BIG THANKS to duck donald and others shares info at http://cartechnology.co.uk/ and http://www.e90post.com/)

Tuesday, November 29, 2016

E-sys bmw 3.24.3 vs E-sys enet 3.25.2

BMW E-sys v3.24.3 is verified to work better than Esys enet v3.25.2. Download esys 3.24 software here and experience it yourself to get the points of what users say.


E-sys 3.24.3 download:
http://www.4shared.com/rar/P59LeDRr/BMW_ESYS_3234.html


E-sys 3.24.3 vs E-sys enet v3.25.2
Esys 3.25.2 was broke, and 3.25.3 works but has bugs, and until they are fixed, E sys 3.24.3 is a wiser choice. (E-sys v3.22.5 version also good to use) Those in the know don't use it and recommend against using it for a reason


E-sys bmw 3.24.3 review
- That might work with a May delivered car. 
It works fine on my 14 plate. But I suspect they will have updated it by then. When you get the car you need to read the I-Step to ensure you are using the right software.

- that software and data works fine. 
I-Step is the version of data that your car was originally written with. E-Sys will tell you this information


E-sys software v3.25.3 review
I tested e-sys 3.25.3 back in December, almost 1/2 year ago, when it first came out, and there were issues with it, so I went back to 3.24.3. 

I don't recall specifically. but I remember that functionally it seemed to work, but the UI was displaying bizarre things, particularly in the ToolTips, which was enough for me to know it came out of the oven too early. 

In addition, the security was completely changed in 3.25.3, including not just the "patch" needed, but also the .EST Token itself, so anyone switching would need a completely new Token solution. 

Since 3.25.3 adds zero functionality though, there is no reason nor benefit to use it. If you are not having any issues with it, stick with it, or you can drop down to previous version. Whatever works for you.


Tips when using bmw e-sys enet
About MAC E-Sys version:
There is no MAC E-Sys version. You have to run it in a VM / Parallels on a MAC.
TokenMaster began a project to port E-Sys over to MAC, and made some good progress, but then hit a brick wall.
  
About token:
As for your token solution, you can put the .EST file anywhere. You just need to go under E-Sys Options and set the .EST Path to point to wherever you located it.

But, token solution is more than just the .EST Token file. You should have 2 patched .jar files that you need to replace E-Sys' native .jar files with.

About PSdZData:
The PSdZData version being used is >= to the last version of ISTA/P used to program the car. If you use the latest PSdZData, then you don't have to worry about it. Otherwise, you will need to read I-Step current from VCM, cross-reference it to the ISTA/P version, and determine if your PSdZData version is >= to it.

The I-Level (aka I-Step) is the Integration Level of your car, which represents a package of firmwares for all your modules, and it corresponds to the version of ISTA/P last used to program your vehicle.

To determine your I-Level, go to VCM Module => VCM Master Tab => click Read under I-Steps: 
 The I-Step (current) is the one you want to match when you select the CAFD from the Detect CAF for SWE options (e.g. F001-08-09-550):
When you lost power in the middle of FDL Coding your CAFD, it became corrupted. What I am having you do is insert the same CAFD in it's default generic state and then coding it based on your specific Vehicle Order (Production Date and Option Codes) so in the end you will have exactly what you started with before the power failure and CAFD corruption.

As I have repeatedly stated, so long as one isn't coding the DME module, you should code with the engine running, and will you never have to worry about loosing vehicle power mid-coding, unless of course you run out of gas.

Sunday, November 27, 2016

How to extract your DE (NBT) or 1B (CIC) file to get FSC code

Here is mini guide on how to extract your DE (NBT) or 1B (CIC) file, generate the FSC code.

The method I am using requires ESYS and ENET Cable, I am aware there are other ways to extract such as using SWID_Reader but those methods did not work for me.

Looks like people are having issues getting the FSC Generator. Here is the link of where I got the original files from:https://mega.co.nz/#F!ugo0HB5L!TPCmejMKPBlRRkz2SDvg0Q and then extract the lookup.xml.zip.

Prequisites:
ESYS
ENET Cable
PSDZData Lite (lite version is fine for FDL coding, you only need the full package if you want to flash ECUs)
Token (not required to reach FSC Extended)

To get the esys and psdzdata files, goto the coding forum and send an email to shawnsheridan, he will PM you the links.

NBT/CIC EUROPE + North America NEXT 2015-2 Maps (19GB+ download)
http://www.e90post.com/forums/showthread.php?t=995629

The mapping data from the location above for 2016-1 (for Europe), are no longer available without payment to the OP. Fair play as he is offering a service. Therefore you can grab the Europe NEXT 2016-1 Maps from here: http://gpsunderground.com/forum/bmw/...worldwide.html

NOTE: The lookup.xml attached has the Europe/North America 2016-1 entries added.

In the coding forum there is a sticky called BMW F30 3 Series Coding DIY - Code Auto Start Stop, DVD, Folding Mirrors, Etc. in the first page, there are guides on how to start up E-Sys.

if you are generating maps for NEXT then you need to follow the guide for DE
if you are generating maps for MOVE, MOTION or PREMIUM then you need to follow the guide for 1B

Extracting the DE or 1B file:
Fire up E-sys make sure your connected to the F20 (not F20_Direct) via your VIN and then in the left hand vertical menu select FSC Extended.

For NBT (DE File):
In the Parameter section enter:
1. Diagnostic Address (hex) = 0x63
2. Click on the Identify button and the Base variant HU_NBT will be populated
3. Application ID for NBT= 0xDE
4. Upgrade Index = 0x1

For CIC (1B File):
In the Parameter section enter:
1. Diagnostic Address (hex) = 0x63
2. Click on the Identify button and the Base variant HU_CIC will be populated
3. Application ID for NBT= 0x1B
4. Upgrade Index = 0x1

In the Action section:
5. Select Store FSC and move from left to the right
6. Click on the Read button
7. Click Save and and name the file in the following format XXXXXXX.fsc where XXXXXXX is last seven letters/numbers of your VIN or your donor NBT vin if you have retrofitted the NBT.
8. [Optional] You can now disconnect e-Sys from your car as the next stages can be performed offline.

Getting the Code Generation Software:
Unzip the directory attached. The directory can be placed/run from anywhere.

Generating the FSC code using the BMW_CIC_NBT_FSC_Generator for NBT:

If you are generating NBT, copy fsc.exe in the NBT_FSC directory to the tools directory

1. Place your XXXXXXX.fsc into your tools directory (same location as the Base64.exe)
2. Open a command prompt (DOS Screen) and go to the tools directory
3. Type "Base64 XXXXXXX.FSC XXXXXXX_000DE001.FSC" and press enter
4. Open BMW-FSC-NBT-Generator.exe
5. Click "Browse" and select the XXXXXXX_000DE001.FSC file you generated in step 3, it should be in your tools directory.
6. Choose your map product from the list (For me it was "Road Map EUROPE NEXT 2015-2)
7. Click "Generate"

Generating the FSC code using the BMW_CIC_NBT_FSC_Generator for CIC:

If you are generating CIC, copy fsc.exe in the CIC_FSC directory to the tools directory

1. Place your XXXXXXX.fsc into your tools directory (same location as the Base64.exe)
2. Open a command prompt (DOS Screen) and go to the tools directory
3. Type "Base64 XXXXXXX.FSC XXXXXXX_0001B001.FSC" and press enter
4. Open BMW-FSC-NBT-Generator.exe
5. Click "Browse" and select the XXXXXXX_0001B001.FSC file you generated in step 3, it should be in your tools directory.
6. Choose your map product from the list (Road Map EUROPE PREMIUM 2014-1)
7. Click "Generate"

Preparing the USB stick:
Takes about 45 mins to upload the Maps to your car; make sure you enter the code in CAPITALS, it has been said that you should have the car on/running during this period. But for me just pressing the Start button once was enough. Once the update is done, you will get a success message, wait a few minutes then turn the car on/off and then the version number will reflect the new map.

NBT

USB stick needs to be FAT32 (32GB is enough), when you extract the map data to the stick make sure you extract the folders to the USB root. The folders will be like:

1 (directory)
2 (directory)
3 (directory)
4 (directory)
config.nfm
NBT_ECE_101141.3.111.pkg
NBT_ECE_101141.3.111.pkg.sig


CIC

For the PREMIUM (CIC) maps you will have 3 directories:

USB1 (directory)
USB2 (directory)
USB3 (directory)


Copy the entire contents of USB1 to the root of the USB stick, should only be the following:

config.nfm
pkgdb (directory)


Once uploaded to the car, the car will ask for USB2. Delete the both the config.fm and pkgdb from the root and repeat the above with USB2....and then again with USB3.

Notes:
What happens when NEXT/Premium 2015-3/2016 comes out?
You just need to edit the Lookup.xml file with the new map details, just look at the previous entries, its follows a sequence.

Backup your FSC file!!!
Save your XXXXXXX_000DE001.FSC file, you can now just refer to this file and generate as and when the new maps come along. If you lose this file you will need to do the extraction steps again.
Attached Files
File Type: zipLookup.xml.zip (7.0 KB, 592 views)

source: http://f30.bimmerpost.com/forums/showpost.php?p=17500588&postcount=2 (BIG THANKS)

Tuesday, November 8, 2016

BMW F21 coding with E-Sys Launcher

I drive a F36, but yesterday i tried to code a F21. The last time i did a coding is 2 years ago and today i realized, that all CAFD are marked "yellow" in the SVT list after pressing "read coding data".

In the tree of "FDL Coding" all values were listed as something like "a3231.1" and the variables were named as "." only. I am not an expert... Do u know what's the problem?
1) You must be using E-Sys Launcher.

2) For F21 you must setup as follows:

E-Sys Launcher Car Series = F021
E-Sys Connection target = F020

Monday, November 7, 2016

E-sys read FA codes failed, how to do

I followed all instructions, got successful connection popup. But when I try to read code I receive the following message. Please let me know if you can help. thanks

Read FA failed! possibly there is no FA stored

Here is the description

ParameterizationException: Code=49184, CodeDescription='Object with name not found', Severity=2051, VendorCode=3, VendorCodeDescription='provided name CONFIG_ECU_ETHERNET doesn't map to an item'

__________________________________________________ ___
com.bmw.esys.domain.psdz.PsdzException: Read FA failed! Possibly there is no FA stored in the VCM. [C060]
at com.bmw.esys.domain.psdz.Psdz.requestFA(Psdz.java: 1333)
at com.bmw.esys.domain.fa.FalLogic.readFa(FalLogic.ja va:89)
at com.bmw.esys.gui.fa.FalController$ReadWriteControl ler.doRead(FalController.java:194)
at com.bmw.esys.gui.DefaultReadWriteController.read(D efaultReadWriteController.java:75)
at com.bmw.esys.gui.ReadWriteSupport$ReadAction.doAct ionPerformed(ReadWriteSupport.java:93)
at com.bmw.esys.gui.AbstractView$AbstractGuiAction.ac tionPerformed(AbstractView.java:234)
at javax.swing.AbstractButton.fireActionPerformed(Abs tractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed (AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed (DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultB uttonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.jav a:6505)
at javax.swing.JComponent.processMouseEvent(JComponen t.java:3320)
at java.awt.Component.processEvent(Component.java:627 0)
at java.awt.Container.processEvent(Container.java:222 9)
at java.awt.Component.dispatchEventImpl(Component.jav a:4861)
at java.awt.Container.dispatchEventImpl(Container.jav a:2287)
at java.awt.Component.dispatchEvent(Component.java:46 87)
at java.awt.LightweightDispatcher.retargetMouseEvent( Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(C ontainer.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Conta iner.java:4422)
at java.awt.Container.dispatchEventImpl(Container.jav a:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719 )
at java.awt.Component.dispatchEvent(Component.java:46 87)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.j ava:735)
at java.awt.EventQueue.access$200(EventQueue.java:103 )
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPri vilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPri vilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPri vilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java: 705)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(E ventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:91)
Caused by: could not retrieve ECUIdentifier for SystemFunction CONFIG_ECU_ETHERNET
Timestamp: Wed Dec 03 20:10:05 EST 2014
ErrorCategory: SYSTEM_ERROR ID: 1929
Class: com.bmw.psdz.vehicle.connection.wrapper.Configured DProject
ExecutionContext={category=SETUP, ecuid=(UNKNOWN,?)}
at com.bmw.psdz.vehicle.connection.wrapper.Configured DProject.getSystemFunctionHostEcu(ConfiguredDProje ct.java:489)
at com.bmw.psdz.vehicle.connection.wrapper.LinkPool.g etSystemFunctionHostECUId(LinkPool.java:249)
at com.bmw.psdz.vehicle.connection.wrapper.LinkPool.g etSystemFunctionECUId(LinkPool.java:230)
at com.bmw.psdz.vehicle.connection.wrapper.LinkPool.o penLink(LinkPool.java:430)
at com.bmw.psdz.programmer.AbstractProgrammer.openSys temFunction(AbstractProgrammer.java:1076)
at com.bmw.psdz.programmer.ProgrammerImpl.systemFunct ion_requestFAFromConfigECU(ProgrammerImpl.java:228 )
at com.bmw.psdz.uc.VCMImpl.requestFA(VCMImpl.java:160 )
at com.bmw.psdz.api.impl.bf.VCMBF.requestFA_aroundBod y0(VCMBF.java:31)
at com.bmw.psdz.api.impl.bf.VCMBF.requestFA_aroundBod y1$advice(VCMBF.java:79)
at com.bmw.psdz.api.impl.bf.VCMBF.requestFA(VCMBF.jav a:1)
at com.bmw.esys.domain.psdz.Psdz.requestFA(Psdz.java: 1329)
... 41 more
Caused by: com.bmw.prodias.exceptions.mcd.ParameterizationExc eption: Code=49184, CodeDescription='Object with name not found', Severity=2051, VendorCode=3, VendorCodeDescription='provided name CONFIG_ECU_ETHERNET doesn't map to an item'
at com.bmw.prodias.collections.mcd.AbstractNamedColle ction.getItemByName(AbstractNamedCollection.java:2 41)
at com.bmw.prodias.collections.mcd.db.LogicalLinks.ge tItemByName(LogicalLinks.java:13)
at com.bmw.psdz.vehicle.connection.wrapper.Configured DProject.getSystemFunctionHostEcu(ConfiguredDProje ct.java:483)
... 51 more


Feedback:
I know you say you followed the instructions, but 95% of the time, this error is due to incorrect Connection Parameters.

Verify the following when connecting:

On E-Sys Toolbar Press the "Connect" Button and in the "Open Connection" window under "Target", select desired Target Vehicle based on car's Chassis.
(e.g. "TargetSelector:Project=F020-14-11-502, VehicleInfo=F020")

*NOTE: Do NOT select the Target with the "_DIRECT" suffix (e.g. TargetSelector:Project=F020-14-11-502, VehicleInfo=F020_DIRECT).

In the "Open Connection" window under "Interface" select "Connection via VIN".

In the "Open Connection" window under "vehicle-specific parameter (optional)" select "Series, I-Step Shipment", and leave the two Dropdown boxes blank.

*NOTE: Do not select "Read parameters from VCM".

Guide to prepare 1B file for using in FSC code generator

Here are some tips of how to properly prepare 1B file for using in FSC code generator to avoid 0xD1 errors (“version after create () = 0xD1”). Enjoy!

Someone knows how to solve “version after create () = 0xD1” error?
The block of bytes that you must extract from the generalPersistencyData_DiagnosticSWTController file starts with the following sequence of bytes:
01 01 00 1B
The generalPersistencyData_DiagnosticSWTController file can be found in /mnt/HBpersistence/normal/ on the QNX file system.

Alternatively, you may also use the debug data03 file, located in the /mnt/hbdebug/ folder.

The 01 01 00 1B sequence starts at the 0x270 offset. However, there is a difference in how you compute the length of 1B sequence, depending on what file you have downloaded from the QNX computer via FTP service. 
The length of bytes that you must extract from generalPersistencyData_DiagnosticSWTController or data03 files is indicated by the bytes prepending the 01 01 00 1B sequence.

In the generalPersistencyData_DiagnosticSWTController file the length is indicated by 4 bytes that go before the 01 01 00 1B sequence of bytes. For the data03 file the length of bytes to extract from the data03 file is indicated by 2 bytes that prepend the 01 01 00 1B sequence.

For example, if you open the generalPersistencyData_DiagnosticSWTController in a Hex editor (such as HxD) and jump to the offset 0x270, you may find the following sequence of bytes that prepend the 01 01 00 1B sequence:
3F 01 00 00
These are the four bytes that define how many bytes you must cut from the generalPersistencyData_DiagnosticSWTController file to prepare the correct 1B hexadecimal file for using with the FSC tool.

The CIC IVI infotainment system is based on the Renesas SH7785 (former Hitachi) processor. This processor is based on RISC architecture and supports both LE (LittleEndian) and BE (BigEndian) byte sequence. For the CIC implementation we have the LE architecture. That means we need to swap order of bytes to retrieve the correct order of bytes.

For our sequence
3F 01 00 00
the proper order to compute the length will be:
00 00 01 3F
or simply
13F
Since the numbers are hexadecimal, the decimal value is 319 (because 13Fh = 319d). In other words, this means that to receive the correct 1B file, we must cut 319 bytes from the position 0x270 in the generalPersistencyData_DiagnosticSWTController file.

This number of bytes, the length of the byte block that we need to extract, is an important thing. If you extract incorrect number of bytes, the resulting 1B file will produce incorrect convolutuion in the FSC tool and hence the D1 error.

For example, if you see that in your generalPersistencyData_DiagnosticSWTController file you have different 4 bytes before the 01 01 00 1B, you must calculate the size based on this sequence in your file. Indeed, the guy from whom I learned this stuff, had to cut 322 bytes.

Also, if you use the data03 file, please note that length must be calculated based on two bytes prepending the 01 01 00 1B sequence. For example, if you have:
42 01
sequence before, like in that case of MrPerfekt, reverting bytes will give you the number:
01 42
or simply
142
Converting 142 into the decimal system you find that you need to cut 322 bytes (because 142h = 322d)

If you cut 320 bytes where you had to cut 319, you will receive the 0xD1 error when using FSC tool for your HEX file:
version after create() = 0xD1

Here is a short instruction on cutting the proper amount of bytes from the generalPersistencyData_DiagnosticSWTController file.
1. Download a hex editor such as HxD (WinHEX is even more good but not necessary for such a simple operation).
2. Press Ctrl+E to select a block of bytes.
3. In the Start-offset edit box enter the start of the block (offset number): 270.
4. In the Length edit box enter the size of block: 13F. The tool will automatically select the desired 319 bytes for you.
5. Press Ctrl+C to copy the selected block.
6. Now press Ctrl+N to create a new file and pasted the copied block into it by pressing Ctrl+V.
7. Save the created hexadecimal file using the following naming template: XXNNNNN_001B0001.hex (here XXNNNNN are the last 7 symbols of your VIN number).
If you can't remember your VIN, these figures are right there in the generalPersistencyData_DiagnosticSWTController file at the 0x2E offset.

You are all set.

Now use the command:
fsc XXNNNNN_001B0001.hex APP_ID UPGRADE_INDEX
APP_ID is the hexadecimal number that defines the region of the map. For example, for Europe APP_ID = 0x28.

UPGRADE_INDEX is the hex number that defines edition of maps. Typically, upgrade index is increased in 1 byte increment from version to version. For example, the first edition for the current year (2016-1) has the index of 0x0B, the second edition (2016-2) is, hence, 0x0C. If you don't care specifying the 0x0D index in the future, when upgrading to 2017-1, you might want to set the index to 0xFF. Resulting bit mask will allow you to upgrade the maps in the future without having to specify the FSC code.

Quoted from http://f30.bimmerpost.com/; Thanks for the one who share all info above.

Thursday, November 3, 2016

Parameters setup in batch file of FSC generator.



What would the SWID_FscShort be for "Road Map Europe MOVE 2017-1"? Trying to generate fsc code for CIC unit.

You can't simply scroll up 4 posts where I answered this already? 

And MOVE Map is not for CIC Head Unit, rather it is for CHAMP Head Unit, so if you have CIC as you say, you are just wasting your time


where comes in the code? 0x88 0x29

<SgbmId id="NAVD_0000085F_255_001_208" SWID_FscShort="00880007" name="Road Map Europe MOVE 2017-1" supplier="NTQ" sop="01.07.2016" version="10_09" MapOrderNumberBMW="" MapOrderNumberMINI="" MapOrderNumberRR="" successorMapOrderNumberBMW="" successorMapOrderNumberMINI="" successorMapOrderNumberRR="">
<EcuVariant CompatibilityIdentifier="HU_Champ2" Format="CIC" />
<SwUpdate SwUpdateEntry="No"/>
</SgbmId>

Change 00880007 to 00880029.  Work great!!