Table of Contents

PyCosworth

Note: The programme and its source code are freely available and hosted at: https://github.com/megatron-uk/PyCosworth

PyCosworth is a monitoring, data-logging and diagnostic tool for (primarily Escort/Sierra Cosworth) vehicles equipped with the Magneti Marelli L8/P8 ECU which have the serial datastream protocol enabled.

Quick Links:

This feature is often called the Pectel Datastream, but is simply a feature of the ECU itself - being turned on or off based on the type of ROM chip fitted to the ECU. Some aftermarket ROM chips available from tuning firms can optionally enable this feature where it was not available by the manufacturer.

PyCosworth interfaces with the serial connection to display, monitor and log the information available via that datastream, similar to such products as:

These products are great for their intended use, but are either a: very expensive, or b: designed for use on a laptop. PyCosworth is intended to to on a cheap embedded device such as a Raspberry Pi, BeagleBoard or other small Linux system and be permanently connected to the vehicle.


Hardware Requirements

In addition to my software, you need a few key pieces of hardware in order to access the sensor data from your Cosworth ECU:

Model ECU Type
Ford Sierra Cosworth 4×4 Weber/Marelli L8 ECU (with serial comms enabled via software)
Ford Escort Cosworth Weber/Marelli P8 ECU

Note: Any other Cosworth YB engine with one of the above ECU variants retro-fitted should also work.

p8ecu.jpg laptop.jpg pi3.jpg Created with GIMP aem.jpg

None of the optional components are necessary in any way to run the software, but functionality will be limited to text-mode display and datalogging to file and the requirement of using a laptop. One of the main goals of this project is to do away with the need for a laptop.

The addition of an AEM Wideband sensor and gauge makes it possible to simultaneously log AFR data at the same time as the main Cosworth ECU sensors. If you have another device that you wish to add support for, please let me know.

It it not designed to work (and I have no way to test) on the Fiat/Lancia or Ferrari F40 version of the Magneti Marelli ECU, but may work. However, an excellent tool already exists, that the comms protocol part of PyCosworth is partly based on. Many thanks to Neil, the author of that tool, for his technical information.

Hardware Configuration Guide

There are too many variables to say “this is exactly how to do it”, but I've documented how my setup is connected together in this hardware setup guide.

Software Requirements

All of the Python software library requirements are listed in the requirements.txt file, simply run:

pip install -r requirements.txt

… to install them on your Linux system.

On Raspbian systems, first check the my Raspberry Pi software guide for any pre-requisites needed. There are several software packages needed to support the hardware devices used on that platform.

The guide also lists a number of software configuration changes you may need to make to your Pi in order make it boot faster as well as increase speed of data display and enable the optional hardware listed above, to work.

Running PyCosworth

To start the monitoring programme, type:

./SensorDashboard

in the programme directory. The monitor will start and within a few seconds it should communicate with the ECU and start gathering data.

Normal Interface

At start up a short banner message will be shown whilst sensors and graphics are loaded and initialised.

After initialisation is complete, the application will immediately move to the first defined sensor that is set in the [the configuration file](docs/Configuration.md).

You can cycle through the available Cosworth sensors:

… with a single press of Button 2 at any time. In addition AFR is available if you have enabled the AEM Wideband sensor support. The current sensor is highlighted in the upper left corner of the display.

oled_1.jpg oled_2.jpg

The units the sensors are reading in are automatically shown to the right of the sensor value; whether this is a percentage, degrees centigrade, voltage, millibars or some other unit.

Comms Errors

If, on starting the application the cable is not fully connected to the ECU, or the vehicle ignition is not live a warning message will be displayed in the lower left corner of the screen.

You can press Button 3 to re-establish communication links with the supported sensors (Cosworth ECU and AEM Wideband AFR) without powering the device off. Whilst comms are being restarted a wait message will be shown on-screen.

oled_3.jpg !oled_4.jpg

Datalogging & Demo Functions

You can access a demo mode to test your hardware by running the application in demo sensor mode (see the link to the configuration file, below) - this generates a never-ending stream of bogus sensor data for each of the sensors you have activated. Demo Mode is indicated by the status display in the top right corner of the screen.

In addition, you can start or stop logging at any point in time by pressing Button 1 and a log of the active sensors will be recorded to disk/SD card. Logging Mode is indicated by the status display in the bottom right corner of the screen.

oled_5.jpg oled_6.jpg

The file that the sensor data is recorded to is an industry standard comma-seperated-value text file:

csv.jpg

The Counter column is the sensor-reading pass that recorded the data. From the point at which the ECU is connected, the data is continually sampled; each pass having a unique ID for the duration that the device is powered on.

The Time column is the time relative to the first sensor reading. Since the Raspberry Pi and other similar embedded devices do not have clocks, there is no guarantee we can use a HH:MM:SS format, so we record each log of sensor readings as an offset (in seconds) from the first reading.

Configuration

All of the user-customisable settings are found in the file

libs/settings.py

within the programme directory. This includes an extensive set of optional modules and complete customisation over which sensors are monitored, their update frequency (subject to the speed of the ECU) as well as total control over the layout and display modes of the in-car visualisation and display options.

Please see the configuration guide for full details.


Pectel Datastream

For full details of the Pectel serial datastream that I have found, see the Cosworth Pectel datastream protocol document.