Results 1 to 15 of 15

Thread: E31 GM Coder - Update coding of GM modules without DIS or NCS Expert

  1. #1
    Join Date
    Nov 2007
    Location
    Belgium
    Posts
    2,484
    My Cars
    Made in Germany

    Lightbulb E31 GM Coder - Update coding of GM modules without DIS or NCS Expert

    E31 GM Coder - Update coding of GM modules without DIS or NCS Expert

    E31 GM Coder reads and writes coding from and to all E31 general modules (GM). The module coding is presented in a user-friendly interface with radio buttons to make changes. E31 GM Coder does not require Ediabas or DIS, works with both serial and USB ADS interfaces and can run on modern 64-bit operating systems.



    Download E31 GM Coder 0.2 (117 kB)

    E31 GM Coder is freeware. If you paid for it you got cheated!

    Minimum requirements

    • Microsoft Windows XP or later
    • Microsoft .NET Framework 4 (link) or later (Windows 8 and newer have this installed by default)
    • USB or serial ADS interface

    If you find bugs or experience any problems with E31 GM Coder, please let me know in this thread or contact me at .


    Who is this tool for?

    If you already have a working NCS Expert and NCS Dummy installation and know how to use it, E31 GM Coder may not offer much benefits. However, the E31 GM Coder user interface makes quick coding changes a lot easier and faster so it's still worthwhile having. It also allows you to make a full binary dump of the 93C46 EEPROM inside the GM for backup purposes.

    If you do not have NCS Expert, or do not have an older computer with real serial port for NCS Expert or get confused by the convoluted workflow of NCS Expert, E31 GM Coder may be the solution. E31 GM Coder does not have any of the hardware and operating system limitations that NCS Expert has. All you need is a Windows computer, an ADS interface and optionally a USB-to-serial adapter if you computer does not have a serial port.

    Typical applications for E31 GM Coder are module replacement, retrofitting or deleting equipment or just troubleshooting.


    Installation and usage

    Download E31 GM Coder and extract the contents of the downloaded archive to a local folder on your hard disk. Double-click E31GmCoder.exe to start the application.

    Uninstall is as simple as removing the extracted files from your hard disk.

    By default E31 GM Coder is set to detect the COM port automatically. You do not need to change this setting unless you have many COM ports in your system and do not want to lose time by probing each port. E31 GM Coder can only detect the port when the ADS interface is connected to both the computer and the vehicle, and the ignition is switched on.

    Use the "Download Coding" button to read the coding data from the general module (GM). Next make the desired changes with the radio buttons in the user interface. Finally use the "Upload Coding" button to write the changes back to the GM module.

    Downloading and uploading coding takes just seconds.

    After coding the GM module it is recommended to switch off the ignition for approximately 10 seconds.

    Remarks

    The "country variant" defines whether the power windows and sunroof can be operated after the ignition is switched off. In Europe the power windows remain operational until a door is opened and closed. In the USA and Australia they can no longer be operated after opening a door. Scandinavia is like Europe but the automatic window roll-up is disabled.

    Do not enable "increase wiper pressure with speed" if your E31 is not equipped with it. The feature will not work and worse, it may introduce battery drain.

    When switching off the windscreen wipers, the wiper motor is ran in reverse to park the wipers below the hood. When the parking mechanism is stuck this results in the wipers parking in the middle of the windscreen. If you face this issue you can temporarily disable "park wipers when off".

    The "windscreen intensive wash" can be activated by pushing the lever inside (towards the steering column) instead of pulling it towards yourself as for the regular wash. This sprays intensive cleaning fluid onto the windscreen first.

    The "door lock heating" was standard equipment on all E31. It can be activated by lifting the door handle for at least 5 seconds. With the introduction of the EWS II immobilizer system in 1995 door lock heating was dropped entirely. It is believed the strong magnetic field caused by the door lock heating coil may damage the EWS II transponder in the ignition key when it is inserted in the door lock while the heating is on.

    If a group does not get any radio buttons ticked after reading the coding, or the coding looks implausible, your general module may suffer from the bad capacitor plague or may have a defect or corrupt EEPROM. Do not despair, both can be fixed easily although the repair is best left to someone with good soldering equipment and skills.

    Many, if not all general modules with part number 61 35 6 957 038 report manufacturing week 01/80. That's not a bug in E31 GM Coder. It seems the manufacturer did not bother setting the proper date in the coding. If you really must know, the correct date can be found on the label on the module itself.

    Advanced

    The down arrows on the "Upload Coding" and "Download Coding" buttons give access to more advanced features like exporting and importing the coding to and from a nettodata trace file for use with NCS Dummy. Since all useful GM coding features are exposed via the E31 GM Coder user interface, this may not be very useful but E31 GM Coder also makes it possible to export and import the internal EEPROM to and from a binary dump. There have been several reports of the EEPROM getting corrupted or even dying, so it's probably a good idea to make a binary dump of the EEPROM for future reference. If the EEPROM ever needs to be replaced you can simply replace it with a blank device and then restore the backup with E31 GM Coder - no EEPROM programmer required. Alternatively you can use an EEPROM programmer to program the backup to the new device before installing it in the GM.

    Also in the "Upload Coding" dropdown menu is "Factory defaults...". This menu option will restore the GM EEPROM to factory defaults (as if bought brand new from BMW). This can be useful if the EEPROM got corrupted. Note that this will lose any coding so make sure you know what coding options must be set. After restoring the factory defaults you can update the coding. Important: Restoring the factory defaults loses the the week and year of manufacture and resets it to 01/80! If you'd like to correct this, download the coding to a binary file after restoring the factory defaults, manually enter the week and year in a hex editor at addresses 0x6E (year) and 0x6F (week) and finally upload the modified binary file. If you forgot you can always find the date of manufacture stamped on the module itself.

    Lastly there is "Test memory..." under "Upload Coding". Do not use this feature unless you suspect there is something wrong with the EEPROM. It will first download the current content of the EEPROM, then write & verify 0x00 to all addresses, next do the same with 0xFF and finally restore the original content. If anything is wrong with the EEPROM, this test will find it. Make sure you have a backup or know what the coding should look like because this test may leave the EEPROM in an inconsistent state if anything fails.

    PS: You may also want to check out E31 EKM Coder and E31 LKM Coder.
    Last edited by revtor; 11-01-2020 at 03:48 PM.

  2. #2
    Join Date
    Feb 2010
    Location
    Hampshire UK
    Posts
    8,891
    My Cars
    99 840ci Sport Indv
    Now that looks super-handy! Thanks Revtor, another winner!
    Timm..2007 E64 650i Individual Sport..1999 E31 840ci Individual Sport..ex owner of 2000 E38 740..1999 E38 740i V8 M62..1998 E38 735i V8..1993 E32 730i V8..1988 E28 518i


    My BMW Repair YouTube Channel
    My Current 840ci Sport Individual
    My Current 650ci Sport Individual
    My E31 Repair and Information Website
    My E38 Repair and Information Website
    My E63/E64 Repair and Information Website

    Chase - Heroes to a generation

  3. #3
    Join Date
    Mar 2011
    Location
    Damascus, Maryland USA
    Posts
    1,551
    My Cars
    E31/E32 VWs Tesla
    Awesome Revtor--
    Any idea how difficult would it be to bench test and recode GMs with this? I've found it's a little tricky to satisfy all the extra modules needed to build a bench tester for GMs, and am unsure of the communication physical interface without some additional digging into the ETM.
    i.e. With a laptop and my ADS interface, do you think I could directly connect to the GM, or is there a gateway or other bus constraint that needs to be satisfied?

    Additionally, I just bought 25pcs of the 1KBit serial EEPROM since I've seen a few modules where the coding and/or fault log is scrambled, leading me to believe the maximum read/write cycles of the EEPROMs have been exceeded. Do you think this will work with a completely blank EEPROM?
    What are your thoughts on having some sort of EEPROM test mechanism, write a pattern, read a pattern, etc? (or simply erase the EEPROM, then read it back to make sure it's actually erased?)
    How will your application respond if it reads the coding and it's scrambled?

    What was it written in? Any chance of a Linux cross-compile?

    Thanks!
    Last edited by EEDegreeToDrive; 10-27-2020 at 10:03 AM.

    '89 735i, '91 850i, '81 MB 380SLC (For Sale), Tesla Model 3, and VW Passat TDI -- Yes, I still repair General Modules, DM for info!

  4. #4
    Join Date
    Nov 2007
    Location
    Belgium
    Posts
    2,484
    My Cars
    Made in Germany
    Quote Originally Posted by EEDegreeToDrive View Post
    Any idea how difficult would it be to bench test and recode GMs with this? I've found it's a little tricky to satisfy all the extra modules needed to build a bench tester for GMs, and am unsure of the communication physical interface without some additional digging into the ETM. i.e. With a laptop and my ADS interface, do you think I could directly connect to the GM, or is there a gateway or other bus constraint that needs to be satisfied?
    You do need an EKM module as that is the I-bus gateway for modules like the GM and LKM. Following wiring will allow you to use the EKM and GM in a bench setup:

    Power (12V)

    • EKM X42 (black) pin 1 [always hot]
    • EKM X42 (black) pin 5 [ignition]
    • GM X253 (black) pin 1 [always hot]
    • GM X253 (black) pin 2 [ignition]
    • GM X253 (black) pin 3 [accessories]
    • Round diagnostic connector D100 pin 4 [accessories]
    • Round diagnostic connector D100 pin 14 [always hot]
    • Round diagnostic connector D100 pin 16 [ignition]

    (accessories is not required but listed for completeness)

    Ground

    • EKM X42 (black) pin 4
    • GM X253 (black) pin 26
    • Round diagnostic connector D100 pin 19

    Data

    • EKM X40 (brown) pin 1 ↔ GM X332 (white) pin 17 [I-bus]
    • EKM X42 (black) pin 2 ↔ Round diagnostic connector D100 pin 15 [RxD]
    • EKM X42 (black) pin 3 ↔ Round diagnostic connector D100 pin 20 [TxD]


    Additionally, I just bought 25pcs of the 1KBit serial EEPROM since I've seen a few modules where the coding and/or fault log is scrambled, leading me to believe the maximum read/write cycles of the EEPROMs have been exceeded. Do you think this will work with a completely blank EEPROM?
    E31 GM Coder will work with a blank EEPROM but it writes only a portion of the coding memory. Items like the number of pulses for the power windows and sunroof are not touched and will remain at the default EEPROM value (0xFF). I'm not sure what the effect of this will be but I doubt the power windows and sunroof will work correctly. I also had the impression that having 0xFF in certain addresses prevented the module from writing fault codes (maybe because it thought the memory was full). I think it's best to program a virgin bin into the EEPROM, then use E31 GM Coder to update the coding.

    Download virgin general module 93C46 EEPROM bin

    Here's what the EEPROM layout looks like as far as I know:

    • The coding (the portion that can be changed with DIS, NCS Expert or E31 GM Coder) is in address range 0x76-0x7D. This is the so called nettodata that you get when reading the module with NCS Expert (the byte-pair order is swapped though). To know the exact meaning of each bit/byte use NCS Dummy
    • The year and week of manufacture is in addresses 0x6E and 0x6F
    • The manufacturer and hardware version are in addresses 0x6C and 0x6D (always 0x01 0x01)
    • The range from 0x0A up to at least 0x33 but more likely up to 0x5D is the persistent fault code memory

    The remainder of the bytes I don't know what they represent but I've noticed the following:

    • Range 0x00-0x09 always repeats at 0x60-0x69
    • Addresses 0x74-0x75 always contain 0xAA 0x55

    What are your thoughts on having some sort of EEPROM test mechanism, write a pattern, read a pattern, etc? (or simply erase the EEPROM, then read it back to make sure it's actually erased?)
    How will your application respond if it reads the coding and it's scrambled?
    E31 GM Coder does not really care what the coding looks like. It's reading only once so corruption can go by unnoticed but on writing the (written) data is verified. Keep in mind that it reads and writes only a small portion of the EEPROM so even verifying on both reads and writes is not guaranteed to detect errors unless the EEPROM is really dead. E31 GM Coder is definitely not a tool designed to test the sanity of the EEPROM.

    I tried to read the entire EEPROM memory via the diagnostic interface but while I managed to read a lot more than currently read by E31 GM Coder it was still far from the full 128 bytes. And most of these could only be read - not written. So if you want to test the EEPROM you'll have to do it directly on the EEPROM and not via the diagnostic interface like E31 GM Coder. If you really want to test the EEPROM, program 128 times 0x00 and verify, then 128 times 0xFF and verify. That tests each state of each memory cell in the EEPROM.

    The original National Semiconductor NMC9346EN was rated for only 40.000 erase/write cycles with a 10-year data retention (datasheet). You would think that's sufficient to store some coding but it seems the GM writes to it frequently. It uses the EEPROM to store states and fault codes.

    A modern replacement like the Microchip 93C46B-I/P offers no less than 1.000.000 erase/write cycles with a 40-year data retention (datasheet).

    Maybe you should always replace the old EEPROM when you have it open to replace the electrolytic capacitors? It's not exactly an expensive part but a proper vacuum desoldering iron and/or hot air station are recommended to do the job.

    What was it written in? Any chance of a Linux cross-compile?
    C# / .NET Framework 4+. In theory that can be converted to mono (Linux) but I have no experience with that. It was designed to run on Windows with no cross-platform support in mind, sorry.
    Last edited by revtor; 10-27-2020 at 04:41 PM.

  5. #5
    Join Date
    Mar 2011
    Location
    Damascus, Maryland USA
    Posts
    1,551
    My Cars
    E31/E32 VWs Tesla
    Quote Originally Posted by revtor View Post
    You do need an EKM module as that is the I-bus gateway for modules like the GM and LKM. Following wiring will allow you to use the EKM and GM in a bench setup:
    Thanks-- That's kind of what I figured.. I do have a 'spare' EKM around, but It'l probably take me a few weeks or months to have the time to get back to my bench setup. I started to build a tester w/ switches/LEDS for the car I/O, mainly just trying to get the bench testing GM to sleep, but abandoned it as I didn't have enough time/energy with my day job, kids, and remote short-term rental property. With any luck I'll dust them off and try again, but this info is immensely helpful.
    E31 GM Coder will work with a blank EEPROM but it writes only a portion of the coding memory. Items like the number of pulses for the power windows and sunroof are not touched and will remain at the default EEPROM value (0xFF). I'm not sure what the effect of this will be but I doubt the power windows and sunroof will work correctly. I also had the impression that having 0xFF in certain addresses prevented the module from writing fault codes (maybe because it thought the memory was full). I think it's best to program a virgin bin into the EEPROM, then use E31 GM Coder to update the coding.
    Interesting, I suspect the GM can probably initialize the EEPROM somehow, I was under the impression it somehow 'reverted' to a default coding in the event of a problem. My apologies, I've never been well versed in the BMW coding/diag tools (which is embarrassing as a Software Engineer/Electrical Engineer), mainly because I haven't ever really needed them. Do they use a checksum or something with the coding, and what happens on Checksum failure?

    Is the 'virgin' BIN an actual EEPROM read through the EKM/GM/ibus, or from an external 'direct' read tool?

    If I understand you correctly, via ibus and the bus commands, you can only access certain regions RW, others RO, and some perhaps not even accessible. It seems plausible that only the GM can actually program its EEPROM in-situ. I knew it must be responsible for coding, and fault logs, but didn't think about the other 'initiializable' values like impulse counts. I figured those could simply be in a battery/capacitor backed RAM or something, particularly as many modules like the GM always have some power.

    A theory I had was that a misbehaving GM, experiencing a power interruption/brownout from bad caps could theoretically jump to an EEPROM writing routine and clobber itself by writing garbage to coding or fault log. I've certainly seen bizarre characters in fault logs and coding that didn't make sense, suggesting it was overwritten with garbage/buffer overflow/underflow, or simply just a bad flash sector.

    Here's what the EEPROM layout looks like as far as I know:
    ...
    The remainder of the bytes I don't know what they represent but I've noticed the following:
    ...

    Maybe you should always replace the old EEPROM when you have it open to replace the electrolytic capacitors? It's not exactly an expensive part but a proper vacuum desoldering iron and/or hot air station are recommended to do the job.
    It's actually easier than that, just cut the old part out, invert, heat, and leads fall out. The bigger issue is the time/energy to recode everyone's GM, particularly since I don't currently have anything set up to program them, and most folks send me their modules for repair don't either.

    C# / .NET Framework 4+. In theory that can be converted to mono (Linux) but I have no experience with that. It was designed to run on Windows with no cross-platform support in mind, sorry.
    So did you write NCS Expert and NCS Dummy as the enthusiast version of the 'official' tools? That's awesome! I had always dreamed of writing an open source tool to do such things, but never quite found the time/energy. It was pretty discouraging trying to set up a diagnostic environment for these cars, and particularly without knowing German! I never realized that some of these tools were community developed (even if not open source). I just figured most things were based on a stolen copy of official tools at a snapshot in history.

    Thanks for all your help, info, and custom tools!

    '89 735i, '91 850i, '81 MB 380SLC (For Sale), Tesla Model 3, and VW Passat TDI -- Yes, I still repair General Modules, DM for info!

  6. #6
    Join Date
    Nov 2007
    Location
    Belgium
    Posts
    2,484
    My Cars
    Made in Germany
    Quote Originally Posted by EEDegreeToDrive View Post
    Interesting, I suspect the GM can probably initialize the EEPROM somehow, I was under the impression it somehow 'reverted' to a default coding in the event of a problem.
    The GM does not 'break' with a blank EEPROM but it definitely won't work correctly. It has no means to restore the default coding by itself. Some data must be present in order to operate correctly and some addresses should not be left blank (0xFF) as it seems to confuse the GM.

    Other than using the virgin bin you can also use the bin of another GM. The GM will take over the coding and fault codes of the donor, but it'll work out of the box.

    Do they use a checksum or something with the coding, and what happens on Checksum failure?
    Some modules like the EKM have one or more checksums but the GM does not have any. You can freely change any bit and the module will happily accept it.

    Is the 'virgin' BIN an actual EEPROM read through the EKM/GM/ibus, or from an external 'direct' read tool?
    No, it's actually fabricated based on dumped EEPROMs, experiments and a safe default coding. I do not have a virgin module so I have no idea what the EEPROM programming looks like straight from BMW. It will probably be different but not in a way that really matters.

    If I understand you correctly, via ibus and the bus commands, you can only access certain regions RW, others RO, and some perhaps not even accessible.
    It depends on the module. The 93C56 EEPROM in the EKM for example can be read entirely via the diagnostic bus but only select address ranges can be written that way. The software in the EKM protects the other addresses from manipulation via the diagnostic interface.

    The GM does not provide full read access. Less than half of the 128 bytes can be read via the diagnostic interface and even less can be written. So there's no way to dump or program the EEPROM via the diagnostic interface. Reading/programming the chip with an EEPROM programmer is your only option.

    It seems plausible that only the GM can actually program its EEPROM in-situ. I knew it must be responsible for coding, and fault logs, but didn't think about the other 'initiializable' values like impulse counts. I figured those could simply be in a battery/capacitor backed RAM or something, particularly as many modules like the GM always have some power.
    Impulse count for the auto roll-up feature of the windows may be stored in RAM (since it is lost whenever the battery is disconnected). The impulse counts I mentioned earlier are not the ones that you can 'teach' by holding the button down. Another value that can be found in the EEPROM is the anti-jam protection sensitivity of the power windows. You probably do not want to leave that at the blank value.

    So did you write NCS Expert and NCS Dummy as the enthusiast version of the 'official' tools?
    NCS Expert is the 'official' tool.

    I developed NCS Dummy initially to investigate what was hidden inside the coding but it evolved into a tool that makes working with NCS Expert a lot easier and unleashes coding functionality that was previously impossible. NCS Dummy is not a standalone application. It requires NCS Expert data files and its input and output are for NCS Expert.

    E31 GM/LKM Coder are true standalone applications that do not rely on any BMW software.

  7. #7
    Join Date
    Feb 2017
    Location
    NZ
    Posts
    3
    My Cars
    BMW 850Ci
    Whilst not strictly on subject I can see there is a lot of expertise here so would be grateful for some help. I have a replacement EDCIII module for my 1994 Euro E31 and everything looks OK when I test it with INPA apart from the steering angle sensor which reads 23 degrees with the steering centred. There is an option in INPA under 'activations' to set the steering angle but it doesn't seem to do anything. I have read other posts implying it is not possible under INPA and to use Tool32 but I have found no specific instructions and there are an awful lot of options to wade through, all in German. Can anybody point me in the right direction? I would also like to be able to activate the EDC valves and again, although the option is there, I can't get that to work either.

  8. #8
    Join Date
    Nov 2007
    Location
    Belgium
    Posts
    2,484
    My Cars
    Made in Germany
    dlspain: You really should start a new topic for this...

    Anyway, I do not have EDC so I have no experience with adjusting the steering angle. I had a quick look at Tool32 but I do not see a job for that in EDC3P.PRG. Might be the wrong file but I did not see a more appropriate one.

    I would strongly suggest to use DIS instead of INPA/Tool32. DIS is the dealer tool, designed for troubleshooting and repairs. INPA is more of a development tool. It's great for quick diagnostics but not every module is implemented very well.

  9. #9
    Join Date
    Feb 2017
    Location
    NZ
    Posts
    3
    My Cars
    BMW 850Ci
    Thanks for your advice, Revtor - the options in Tool32 for the EDC appear more limited than in INPA but that probably means that the activate options are not really implemented. I have tried to get DIS working and followed what looked like a very good set of installation instructions which seemed to install flawlessly but it didn't work. I will have to have another go. It may be that I can set the steering angle mechanically so I will have to take the lower shrouds off and remind myself what the arrangement is for the sensor.

  10. #10
    Join Date
    Nov 2007
    Location
    Belgium
    Posts
    2,484
    My Cars
    Made in Germany
    I may have found a way to download the entire 93C46 EEPROM of the E31 general module via the diagnostic bus. I have tested this with a '93, '95 and 2009 GM but I do not know whether the method also works for older versions of the GM.

    I need some help:

    If you do have a '92 E31 or older (the older the better actually), an ADS interface (via serial or USB), a computer with Microsoft .NET Framework 4 or better (standard in Windows 8+, optional in older Windows versions) and a few moments of free time, please use the beta version of E31 GM Coder below to read the EEPROM:

    Update: Download removed as I received files for a 1990 general module. It seems to work just fine! An updated version of E31 GM coder will be released soon.
    Last edited by revtor; 11-01-2020 at 07:11 AM.

  11. #11
    Join Date
    Nov 2007
    Location
    Belgium
    Posts
    2,484
    My Cars
    Made in Germany
    I've just released E31 GM Coder 0.2. For download links see the first post.

    What's new?

    • New menu entries "To Binary file..." and "From Binary file..." to read or program the entire content of the 93C46 EEPROM inside the GM. There have been several reports of the GM EEPROM getting corrupted or even dying. You can now use E31 GM Coder to make a backup of the EEPROM for future reference. If the EEPROM ever needs to be replaced you can simply replace it with a blank device and then restore the backup with E31 GM Coder. No EEPROM programmer required!
    • New menu entry "Factory defaults..." under the "Upload Coding" button. This option will restore the EEPROM to factory defaults without requiring an EEPROM programmer (as if bought brand new from BMW). This can be useful if the EEPROM got corrupted. Note that this will lose any coding so make sure you know what coding options must be set. After restoring the factory defaults you can update the coding.
    • New menu entry "Test memory..." under the "Upload Coding" button. This feature will first download the current content of the EEPROM, then write & verify 0x00 to all addresses, next do the same with 0xFF and finally restore the original content. If anything is wrong with the EEPROM, this test will find it. Make sure you have a backup or know what the coding should look like because this test may leave the EEPROM in an inconsistent state if anything fails.
    • More reliable downloading of coding memory. All data is downloaded twice and compared (uploading already had verification).


    EEDegreeToDrive: You may like this new version!

    The new features remove the need for an EEPROM programmer when replacing the EEPROM. You can simply drop in a blank EEPROM and then use E31 GM Coder to restore a backup. If you do not have a backup you can restore the module to factory defaults and ask the owner what coding features should be set. You only need to know where the E31 came from (Europe/USA/Australia/Scandinavia), whether it is left-hand or right-hand drive, has a sliding sunroof or headlight cleaning, and whether it was manufactured before or after 1995.

    If you have doubts about an EEPROM, you can use the "Test memory..." feature under "Upload Coding". Make sure you have a backup or know what the coding looks like before running the test. Naturally the test has its limitations. Problems may be temperature dependent or occur infrequently and not show up in a quick test.

  12. #12
    Join Date
    Mar 2011
    Location
    Damascus, Maryland USA
    Posts
    1,551
    My Cars
    E31/E32 VWs Tesla
    Quote Originally Posted by revtor View Post
    I've just released E31 GM Coder 0.2. For download links see the first post.

    What's new?

    • New menu entries "To Binary file..." and "From Binary file..." to read or program the entire content of the 93C46 EEPROM inside the GM. There have been several reports of the GM EEPROM getting corrupted or even dying. You can now use E31 GM Coder to make a backup of the EEPROM for future reference. If the EEPROM ever needs to be replaced you can simply replace it with a blank device and then restore the backup with E31 GM Coder. No EEPROM programmer required!
    • New menu entry "Factory defaults..." under the "Upload Coding" button. This option will restore the EEPROM to factory defaults without requiring an EEPROM programmer (as if bought brand new from BMW). This can be useful if the EEPROM got corrupted. Note that this will lose any coding so make sure you know what coding options must be set. After restoring the factory defaults you can update the coding.
    • New menu entry "Test memory..." under the "Upload Coding" button. This feature will first download the current content of the EEPROM, then write & verify 0x00 to all addresses, next do the same with 0xFF and finally restore the original content. If anything is wrong with the EEPROM, this test will find it. Make sure you have a backup or know what the coding should look like because this test may leave the EEPROM in an inconsistent state if anything fails.
    • More reliable downloading of coding memory. All data is downloaded twice and compared (uploading already had verification).


    EEDegreeToDrive: You may like this new version!

    The new features remove the need for an EEPROM programmer when replacing the EEPROM. You can simply drop in a blank EEPROM and then use E31 GM Coder to restore a backup. If you do not have a backup you can restore the module to factory defaults and ask the owner what coding features should be set. You only need to know where the E31 came from (Europe/USA/Australia/Scandinavia), whether it is left-hand or right-hand drive, has a sliding sunroof or headlight cleaning, and whether it was manufactured before or after 1995.

    If you have doubts about an EEPROM, you can use the "Test memory..." feature under "Upload Coding". Make sure you have a backup or know what the coding looks like before running the test. Naturally the test has its limitations. Problems may be temperature dependent or occur infrequently and not show up in a quick test.
    Awesome/Incredible!
    I have an ADS interface, and an EKM from a prior member's part-out, so I'll try to get my bench test setup finished up and get some some runtime on this in the next week or two. Just need to find/build a suitable Windows PC!
    I've also got 2-3 GMs with suspected BAD EEPROMS, and a tube of 25 new EEPROMS. 2 of these I've been sitting on for about a year or more! Stephane will be happy to have his back!

    Can I enter the actual coding string in somewhere?

    Thanks again! Look forward to playing/testing!

    If anyone else (US folks) has a known-bad GM sitting on a shelf (where capacitors haven't worked), shoot me a message! Lets see if we can get you back up and running!
    Last edited by EEDegreeToDrive; 11-01-2020 at 02:05 PM.

    '89 735i, '91 850i, '81 MB 380SLC (For Sale), Tesla Model 3, and VW Passat TDI -- Yes, I still repair General Modules, DM for info!

  13. #13
    Join Date
    Nov 2007
    Location
    Belgium
    Posts
    2,484
    My Cars
    Made in Germany
    Quote Originally Posted by EEDegreeToDrive View Post
    I have an ADS interface, and an EKM from a prior member's part-out, so I'll try to get my bench test setup finished up and get some some runtime on this in the next week or two. Just need to find/build a suitable Windows PC!
    Literally any Windows XP/7/8/10 desktop or laptop can be used but if it does not have a serial port you'll also need a USB-to-serial adapter (random Amazon pick). If the computer runs Windows XP or 7 and E31 GM Coder does not start, you may have to download and install the Microsoft .NET Framework 4 (link).

    Can I enter the actual coding string in somewhere?
    No, this is currently not possible as it would require a database with all coding variants. Definitely doable but it seemed overkill for the handful of coding options that can be set.

    First check whether you can retrieve the original coding with E31 GM Coder and if not, ask the owner a few details about the car the module came from.

  14. #14
    Join Date
    May 2006
    Location
    The Netherlands
    Posts
    16,716
    My Cars
    DE-spec E36 328i/M3 cab
    Just stumbled up on this. Would this be easy to translate to other GM versions?

    USB-ADS interface. I thought this was the one unicorn that never worked. Unless this specific GM3 doesn't need real ADS.
    1998 BMW M3 3.2 Cabrio • Alpinweiί III on Schwarz • German spec • 1 of 12
    SMG • SRA • PDC • AUC • OBC • GSM • HK • UURS • IHKA • FGR • MFL

    IG:
    https://www.instagram.com/iflok/



  15. #15
    Join Date
    Nov 2007
    Location
    Belgium
    Posts
    2,484
    My Cars
    Made in Germany
    Quote Originally Posted by MParallel View Post
    Would this be easy to translate to other GM versions?
    No. The transport-layer is the same for most modules but the data-layer can vary wildly. Each module's communication must be analyzed before a tool can be written around it. Reading and writing the coding at byte-level is usually quite easy, though. To transform the data into a nice user interface is another thing - especially when the modules get more and more complex. You can use NCS Dummy to learn how each byte/bit in the coding data should be interpret. More advanced features, like reading and programming the EEPROM in E31 GM Coder, depend from module to module and may require trial & error, brute force,... to find hidden functionality or bugs to exploit. Often you'll find nothing but sometimes you get lucky.

    USB-ADS interface. I thought this was the one unicorn that never worked. Unless this specific GM3 doesn't need real ADS.
    There is absolutely no reason why ADS can't use a virtual USB COM port. The problem is with the BMW software. It talks directly to the COM port via I/O addresses which only works for hardware COM ports. Virtual COM ports do not have I/O addresses. That is the only reason why USB ADS interfaces cannot be used with the BMW software.

    This issue does not exist in software that properly uses the abstraction layers provided by the operating system and drivers to talk to the COM ports.

Similar Threads

  1. Replies: 17
    Last Post: 08-13-2023, 01:05 AM
  2. Re-code used LCM module BMW X5 2002. NCS expert & WinKFP
    By sinamics in forum Diagnostic Software
    Replies: 3
    Last Post: 11-26-2016, 02:23 PM
  3. Clearing Fault Codes from GM
    By Crosst in forum Diagnostic Software
    Replies: 3
    Last Post: 05-31-2014, 12:26 PM
  4. GM, SA, VN coding data locations
    By wovenkdc in forum General BMW Mechanical Help sponsored by RM European Auto Parts
    Replies: 0
    Last Post: 02-26-2013, 07:38 PM
  5. E39 -97 Need GM-VN-SN Code
    By hannooshjo in forum 1996 - 2003 (E39)
    Replies: 0
    Last Post: 08-11-2009, 09:41 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •