Need BMW e30 diagnostic protocol information

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • anu
    Noobie
    • Jun 2018
    • 2

    #1

    Need BMW e30 diagnostic protocol information

    I'm looking for any and all information on interfacing with the 20 pin diagnostic plug. I have searched around online and found limited information. So literally anything is helpful thanks.
  • bmwman91
    No R3VLimiter
    • Oct 2004
    • 3128

    #2
    What all are you trying to do, exactly? The version of the KW71 protocol used in these cars is quite old and not super well documented.

    The only remotely accurate info that I have found in terms of actually communicating and pulling data is here:


    I think that it is a not-so-great translation from another language, so a lot of it reads incorrectly but you can figure it out. I made an Arduino program to pull all of the internal ROM from the 8051 microcontroller, and you can also request RAM values in real time to get stuff like RPM, fuel injection, etc. But I have not really bothered with doing that.

    Interfacing with it involves 2 wires: the L-Line and the K-Line. The L-Line is only used for wake-up and initiating communication, and this is described in the link above. Once you do that, you do some handshaking with the K-Line and then you can make a program to request data, if you know what you want. You will need to buy a KW71 level shifter though sine these operate on 12V and are bi-directional. I opted to bypass a bunch of circuitry and have my Arduino communicate directly with the microcontroller's UART/serial lines at 5V.

    Transaction Feedback: LINK

    Comment

    • george graves
      I waste 90% of my day here and all I got was this stupid title
      • Oct 2003
      • 19986

      #3
      "Speed 9600 bauds, 8 data bits, no parity, 1 stop bit. "

      That's your key to start playing with it. To be honest, I've never hooked a scope up to it. Anyone?????

      I have somewhere a document that says what it spits out. And IRC it's not much. It's maybe injector pulse width, and a few other timing things - but nothing analog. I could be wrong. It's been 10 years since I looked into getting data out of that port.
      Originally posted by Matt-B
      hey does anyone know anyone who gets upset and makes electronics?

      Comment

      • bmwman91
        No R3VLimiter
        • Oct 2004
        • 3128

        #4
        You can pull a tremendous amount out of it, but it requires you to know what RAM address stores which run-time variable. This is helped somewhat if you know what the axis descriptors are for the various maps in the ECU. It turns out that the axis descriptors are actually pointers, so in the case of an RPM axis which uses descriptor 0x3B, it really means that the current RPM value is stored there (0x3B:3C I think, since it is a 16b value). Load being 0x40 is the same story...the currently calculated load value is in that RAM location. All running variables are in RAM, so if you know what is where, you can read it all.

        Other things you can do are dump the MCU's internal ROM and the EPROM, get serial and version numbers, and even overwrite RAM. I think you can also program the EPROM, although it requires externally supplied VPP and a blank chip. 9600 baud is really slow, so it is obviously pretty limited in terms of what sort of real-time info you can pull.

        Transaction Feedback: LINK

        Comment

        • george graves
          I waste 90% of my day here and all I got was this stupid title
          • Oct 2003
          • 19986

          #5
          Originally posted by bmwman91
          9600 baud is really slow
          Understatement of the year. :devil:
          Originally posted by Matt-B
          hey does anyone know anyone who gets upset and makes electronics?

          Comment

          • anu
            Noobie
            • Jun 2018
            • 2

            #6
            I had this dumb idea to replace the control panel with a little 5" touchscreen connected to my raspi maybe I should Fina another way to pull data maybe.




            Originally posted by bmwman91
            You can pull a tremendous amount out of it, but it requires you to know what RAM address stores which run-time variable. This is helped somewhat if you know what the axis descriptors are for the various maps in the ECU. It turns out that the axis descriptors are actually pointers, so in the case of an RPM axis which uses descriptor 0x3B, it really means that the current RPM value is stored there (0x3B:3C I think, since it is a 16b value). Load being 0x40 is the same story...the currently calculated load value is in that RAM location. All running variables are in RAM, so if you know what is where, you can read it all.

            Other things you can do are dump the MCU's internal ROM and the EPROM, get serial and version numbers, and even overwrite RAM. I think you can also program the EPROM, although it requires externally supplied VPP and a blank chip. 9600 baud is really slow, so it is obviously pretty limited in terms of what sort of real-time info you can pull.

            Comment

            • wonder99
              Noobie
              • Mar 2020
              • 1

              #7
              Originally posted by bmwman91
              I made an Arduino program to pull all of the internal ROM from the 8051 microcontroller, and you can also request RAM values in real time to get stuff like RPM, fuel injection, etc. But I have not really bothered with doing that.
              bmwman91 Would you mind sharing the details of your arduino project? I'm interested in having an Arduino fetch live data, so any help you could provide would be greatly appreciated!
              thanks!

              Comment

              • DanteALG
                Noobie
                • Mar 2021
                • 1

                #8
                What do you need? Something like this: Description Protocol KW-71; Getting started. Wake-Up - procedure. Do you need this or a device that can make a good diagnostic for your car? I am using thinkdiag for some months in my car service and it is a perfect one. It shows all the errors and all were correct and I checked it on many cars. Moreover, it is easy to use and I think that every driver should have it in their garage because he can find quickly the problem. You can find it on thinkdiag.co.uk.
                Last edited by DanteALG; 03-11-2021, 06:01 AM.

                Comment

                Working...