Skip to content
This repository has been archived by the owner on Dec 28, 2018. It is now read-only.


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

1997 Subaru Impreza WRX STi

I bought a car. So, I decided to play with it. :)


Model specs:
1997 2.0L Turbocharged Subaru Impreza WRX STi (JDM) - E-GC8
EJ20 engine (1994cc) - 5MT
Tires: 205/55R16 91V (Useful for some computations)



This car features an OBD-II outlet (picture above). By taking a look behind it, we can see that the K-Line pin is not connected. This means that we are not on SSM2. However, we can see that the power pin is connected (orange), and that two Vendor Option pins are too (top two-wires). Chassis ground and signal ground are also connected (bottom). This means we are dealing with SSM1 protocol (see SSM1 SumUp).

Communicating through SSM1 (binary mode) can be done by issuing read or write commands. To write, you must be reading (this will probably not be useful here, as I'm not planning on writing anything). The ECU will then answer repeatedly until you tell it to stop.

Read command:

> 78 12 34 00
  ^---------- Read command
      ^------- MSB of the address
         ^--- LSB of the address
            ^ Required


00 46 48 49

For this command to work, a read command must first be issued (78 00 00 00)

Sum Up:

  • Pins 4, 5, 12, 13 and 16 connected
  • 5v TTL serial communication


I was able to query the ECU ID via a teensy connected to a level shifter: 0xA3113

Looking at the SelectMonitor.ini file (see resources/code/SelectMonitor.ini) allowed me to get the correct addresses for my specific model.

This repo contains two subfolders in src/

  • src/ssm1-1997-egc8: Data logger for my custom infotainement + dump firmware
  • src/vss-signal-modification: Teensy code that is used to bypass the speed limiter

The resources/ folder contain extracted informations, like fuel or timing maps

Disclaimer: I'm not responsible for whatever happens to anybody using this code blablabla... Tl;dr: don't be stupid, and it should be all right. :)

Useful links

Thanks to Phil Skuse (owner of alcyone website) for giving me a few tips and for his very helpful website ( I also recommend this website for mode in-depth information about the parameters:


No releases published


No packages published