free hit
solid state mode1 ALDL recorder - ECU/Freescan/Espritmon - The Lotus Forums #ForTheOwners Jump to content

solid state mode1 ALDL recorder


Recommended Posts

  • Gold FFM

Just for fun I recently used an Arduino Due to create a solid state mode 1 ALDL recorder. It interogates the ECM like Espritmon, Freescan and the Tech 1 tool do and it stores the data as a .CSV file on an SD card. The data can be read and plotted using Espritmon. Building the recorder yourself is not very difficult and in fact easier than an ALDL-serial interface since the Arduino already has TTL level instead of the +-12V. Hardware comprises Arduino DUE, real-time clock module, SD card shield, one resistor and 1 diode. Will post more info soon. 


  • Like 1
Link to comment
Share on other sites

Upgrade today to remove Google ads and support TLF.
  • Gold FFM

picture_logger_proto.thumb.jpg.a2f84b773573dccfd41ce42c192f2af6.jpgThis is an overview of the components needed to build the logger. In my Esprit I have a D15 female to ALDL connector, hence the 15 pin male in the proto. The green LED blinks each time mode1 data is transferred, the green one for any ALDL data. This helps to verify whether communication is ok and whether actual mode1 data is received. The RTC module is used to obtain time and date (for the logfile name). The software for the Arduino DUE is in the logger.bin file.

For the DIY people, this is all you need to build one yourself. Enjoy! 


Link to comment
Share on other sites

Hi Erik,


You didn't give the source files for your program. That would be the interesting bit. I am particularly interested in the protocol handler routines.

10 years ago I too had some fun designing a custom hardware solution. Records also on an SD card in .CSV format.

Made an ECU simulator to go with it, so I can send frames to the ECU reader, to feed it with some data, worked fine on the bench... but when I tried it on a friend's Esprit once (only had one shot at it sadly), I could not get my bloody reader to establish contact with the car, grrr...   though the little ALDL line "monitor"/terminal I put together, did show that recognizable frames were being sent regularly by the car.

Anyway, looking at your protocol handling routines to compare them with mine, might help me figure out what I am doing wrong !...   and hopefully get my clunky prototype to work... once I have an Esprit to try it on that is ! LOL.... some day, ahem...


Reader uses a conservative design with a simple 4x20 text LCD, as the main focus for this first iteration, was on getting the protocol layer working, the important stuff, rather than spending time and code space on a fancy user interface.  But, a little later I did some early work with a 256x128 graphics LCD, not much, just enough to display a bitmap picture of an Esprit.

10 years later, I am toying with the idea of revisiting my design, make it more current, improve the hardware, and implement this large graphic LCD and design a more user friendly UI around it.. Might add a touch screen to it as well, as it's become affordable these days.

No Arduino there, all custom/hand crafted, but happens to use an Atmel AVR Atmega like the Arduino uses (I think ?), though when I chose that MCU family back then, I had never heard of that Arduino thing. Certainly was not  " the thing" it is nowadays that's for sure..


Anyway, glad to see others playing with hardware ! ^^








Edited by troutrou
Link to comment
Share on other sites

  • Gold FFM

Vince, I hope with the info about the timing you get your software to work. Please not that the Arduino Due I used does not use any of the standard AVR processors but an ARM processor. I think that if I would write the software directly in AVR assembly language it would run fast enough. However, I wrote it in the Arduino environment and when running it on an Arduino with an AVR processor (the Arduino Mega) I was loosing data. The Due is faster and works ok. So the binary is only for the Arduino Due, it will not run on other Arduinos.

You mention that you made an ECU simulator. For the testing of new versions of Espritmon, but also for the datarecorder, I use a spare ECU. I bought one in the US that is the same type used in the Esprit and replaced the Eprom with an Esprit version. Next I built a small circuit that simulates most of the loads/inputs on the ECU terminals and a block-wave (frequency controllable) to simulate that the engine is running. As a result the ECU thinks it is in a real Esprit and the data output on the ALDL is the real thing - i.e.not simulated. I really recommend such a setup as it prevents the issue you describe - having something working on your desk with the simulator but not when connected to a real Esprit. Here are two older pictures of my setup:

The module on top of the ECU generates the inputs, the white box in the second picture is the ALDL to serial box, connected to the laptop running a version of Espritmon.



DSC00714 (1024x575).jpg

DSC00716 (1024x575).jpg

Link to comment
Share on other sites

  • 2 weeks later...


HI Erik,


Wow, sorry for the late reply ! The forum did NOT send me an e-mail to notify me of your reply, even though I did ask for daily updates on this thread ! GRRRR ! 😕

Yes nothing beats a real ECU indeed ! But 10 years ago when I did this little ECU reader, I had absolutely zero money. I was doing it mostly to keep me occupied as I was job less at the time...  but zero money to put into the project. So an ECU simulator using an 8 bit MCU worth just a few Euros, was much better than nothing : at least it allowed me trouble-shoot the routines that receive the data. Make it work, and reliably so, robust, especially when I disconnected/reconnected the ALDL cable to purposefully corrupt frames in  mid-air.

This way at least I knew that it could receive and decode frames reliably, a vital prerequisite, isn't it ! ^^

Obviously it was not good enough, and now I must fine tune it on a real Esprit or real ECU at least like you did, to take into considering all the timing issues, mostly.  

I am surprised you had performance issues with an 8 bit AVR ?!   I was using an ATmega32 (because at the time it was the biggest one available in DIP package, hobbyist friendly...), running at 16MHz, and it was plenty fast enough, even though I do run a user interface unlike your recorder. And I didn't code it in assembler either, I am not masochist  ^ ^Just (plain) C, compiled with GCC on Linux.

The serial port of the ECU is so slow, only 9600 baud, that the RISC AVR is getting real bored most of the time ! LOL

The only real limiteing factor, was the SD card module I was using to record the data ! It was MUCH slower at random writes, than the advertised specs on the manufacturers web site ! 😮

I was targeting 10 readings per second, and this was not possible using random/atomic writes, so I had to write the decoded frame into the CSV file as a single big write command. Not the end of the world, mind you.

Anyway, the measured performance of the SD card reader, when writing a full Mode 1 frame in one shot, to the SD Card, was just a bit under 100ms ! So I could juuust about achieve the 10 readings per second I was targeting (which seemed the most I could get anyway, given the time it takes the ECU to transmit the mode 1 frame to begin with, plus the tiny frames the ECU and reader must exchange to agree on sending a full Mode 1 frame.

But that SD card module I bought 10 years ago ! I guess faster ones I available today, for 10 times cheaper, which alleviate the problem.

So not too sure why you had performance issues with an Atmega.


Anyway, depending how long it takes for me to finally get my Esprit, after so many years dreaming of it... if I am feeling impatient then yes I will probably do what you did and get an ECU.. depending on price ! No idea how easy they are to find and how much they cost ?!

Attached, my source code, and a few pics of the (CAD) board









Edited by troutrou
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...