Welcome to the Tuning My Saab 9-3 SC WikiEdit

On this Wiki you will find a log of the events and actions I am taking to tune my Saab 9-3 2.0t SportCombi. To tune Saab cars you use T8Suite, t7Suite and Trionic CAN Flasher that are found over at

What, why and howEdit

I have owned my Saab 9-3 since 2007, when I bought it new. It's a Jet Black Saab 9-3 SportCombi 2.0t BioPower which delivers 175hp when running on gasoline and 200hp when running on ethanol.

Even though it is one of my worst car deals ever, I bought it new just before the Saab bankruptcy where it lost most of its value over nigh, I have been quite satisfied with this car.

Lately I have started to want something else. Wanting more. Already last year I was planning to take it to Nordic Tuning for either a Stage 1 or Stage 2 update, but it never materialized. Even though I think it's time for me for a new car, since it has lost so much value I am instead planning to keep it. It only has 9800km on the meter, so there is plenty of mileage left.

A few weeks back I was having lunch with a friend of mine and he told me about his latest project. He had taken over a open source project which software is used to tune Saab's. His name is Mattias Claesson and he usually hangs around at the forum. The software he is currently maintaining and I am about to learn how to use us the T8 Suite and the TrionicCANFlasher.

This wiki will be my log. This is where I will share my learnings for others to follow. I do this because I want to share, I do this because I believe in Open Source and this will be my way to contribute back to the community. I sure hope not to break things on the way :-)

Tools Edit


There are plenty of options to select from when it comes to reading and writing software to your Saab. What I have been able to read is that the two most reliable tools are the CAN USB from Lawicel or the Combi Adapter from johnc. These tools seems a bit pricey, but it seems to be what you need when the shit hits the fan.

Then there is the cheap option. The chinese ELM 327 based OBD tools. I personally decided to start cheap and bought one from Teknikmagasinet. Or, in fact, Santa Claus decided to give me one this Christmas.

I decided to take this risk assuming that when Murphy visits, Mattias is likely to have the tools needed.

Car Specifications Edit

In order not to screw things up, I think it's quite important to know the hardware. I.e. the car. There are so many variables to consider and for a noob like myself, a lot to learn.

Make and Model Edit

Saab 9-3 Vector 2.0t BioPower (M6), model year -08, aka. 2008 facelift, Jet Black

Engine Edit

After some reading, I have figured out that my engine is a GM Ecotec LK9, more precise the B207L (L is the 2.0t variant).

This engine uses Mitsubishi TD04-11TK turbocharger with peak boost pressure 0.70 bar.

Transmission Edit

With a 6-gear manual transmission, I have concluded it to be a GM F40.

Engine Management System Edit

The car uses the Trionic 8 Engine Management System, which primary unit is the Engine Control Module; the ECM. What I have been able to grasp, the ECU has model number 55565020.

Basic Understanding Edit

A short writeup on torque/airmass control can be found here.

Setting things up Edit

Phase I - Read the software from the car Edit

Phase I is all about to read out the current software from the car, usually referred to as Stock.bin. In order to do so I will have to install drivers for the ELM 327 and the TrionicCANFlasher on a laptop, find my OBC connector, put the ignition to "Off" and execute. I understand this will take approximately 20 minutes.

The first step of Phase I, to install ELM 327 driver was quite easy. I simply inserted the dongle into an USB port and Windows Update simply installed it. It appears I have FTDI driver version from 2014-08-26 installed. Let's see if this works. I tend to remember references to Prolific drivers or so.

The second step of Phase I is to install TrionicCANFlasher which was quite straight forward. After having started the application, I recommend clicking on the view documentation link. This revealed a quite important step, the third step.

The third step of Phase I is to configure the ELM 327 COM port. In particular, the latency. Start the device manager, find the serial port (mine was COM7) under Ports. Right click and select settings. Select tab port settings and click Advanced... button. Here you find latency. Set it to 2 ms.

The fourth step is to start TrionicCANFlasher and configure it. I selected Trionic 8, ELM327 v.13 or higher, COM7 and 230400 as Com speed. According to the manual, this is optimal for EML 327 devices. In fact, higher speeds (1M, 2M) did not work.

Saab log

The first thing I did was to perform Get ECU info. This revealed a lot of interesting information about the car and the ECU.

VIN Number: YS3FF56S081111984

Software version: FD0F_C_FMEP_30_FIEF_81I

Basemodel partnr: 55565020

Serial number: 863232AC0D91WK9J

Build date: 2007-04-26 15:41:04     

2014-12-27 12:02:46.9498 - Opening connection

2014-12-27 12:02:46.9948 - Open called in Trionic8

2014-12-27 12:02:50.6730 - Open failed in Trionic8

2014-12-27 12:03:08.8170 - ELM327 FTDI setting for COM7 LatencyTimer 2ms.

2014-12-27 12:03:18.1215 - Opening connection

2014-12-27 12:03:18.1735 - Open called in Trionic8

2014-12-27 12:03:21.8828 - Open failed in Trionic8

2014-12-27 12:03:40.0688 - ELM327 FTDI setting for COM7 LatencyTimer 2ms.

2014-12-27 12:03:44.0530 - Opening connection

2014-12-27 12:03:44.0800 - Open called in Trionic8

2014-12-27 12:03:47.5552 - Connected on com: COM7 with baudrate: 235294

2014-12-27 12:03:48.4823 - VINNumber       : YS3FF56S081111984

2014-12-27 12:03:48.5373 - Calibration set : P_30_FIEF_

2014-12-27 12:03:48.6013 - Codefile version: FD0F      

2014-12-27 12:03:48.6683 - ECU description : P6.8

2014-12-27 12:03:48.7363 - ECU hardware    : Trionic 8 

2014-12-27 12:03:48.8363 - ECU sw number   :  �  

2014-12-27 12:03:48.8953 - Programming date: ????

2014-12-27 12:03:48.9753 - Build date      : 2007-04-26 15:41:04     

2014-12-27 12:03:49.0583 - Serial number   : 863232AC0D91WK9J 

2014-12-27 12:03:49.1443 - Software version: FD0F_C_FMEP_30_FIEF_81I

2014-12-27 12:03:49.2313 - 0F identifier   : FD0F_C_FMEP_XX_XXX_XXX.tmp     

2014-12-27 12:03:49.3003 - SW identifier 1 : 55567292  

2014-12-27 12:03:49.3743 - SW identifier 2 : 12799173  

2014-12-27 12:03:49.4503 - SW identifier 3 : 55563553  

2014-12-27 12:03:49.5243 - SW identifier 4 : 55565454  

2014-12-27 12:03:49.6003 - SW identifier 5 : 55565453  

2014-12-27 12:03:49.6743 - SW identifier 6 : 55565021  

2014-12-27 12:03:49.7623 - Hardware type   : ECM                     

2014-12-27 12:03:49.8944 - 75 identifier   : 78 09     

2014-12-27 12:03:49.9744 - Engine type     : 81l 

2014-12-27 12:03:50.0554 - Supplier ID     : GMPT 0100 

2014-12-27 12:03:50.1174 - Speed limiter   : 270 km/h

2014-12-27 12:03:50.1804 - Oil quality     : 59,17 %

2014-12-27 12:03:50.2434 - SAAB partnumber : 55566963

2014-12-27 12:03:50.3064 - Diagnostic ID   : 0x01 0x84

2014-12-27 12:03:50.3674 - End model partnr: 55567294

2014-12-27 12:03:50.4294 - Basemodel partnr: 55565020

2014-12-27 12:03:50.8784 - Connection closed

Let's look at the software version as per the guide by Mattias.

FD0F_C_FMEP_30_FIEF_81I <<==>> <SW version label>_<variant>_<programmer id>_<calibration version>_<calibrator id>_<engine variant code>

  • F = T8
  • D = MY??
  • 0F = Release version
  • C = Closed file, all calibration is in ROM
  • FMEP = Official release
  • 30 = Calibration version
  • FIEF = Calibration id
  • 81I = Engine variant code

I notice that I seem to have an old release version, 0F. Looking at MackanBasefiles, I notice that he is using release version 0M and calibration version 14.

The next step was to download the software using Read ECU. The process took around 14 minutes and when I was done I had a file that I had named saab_stock.bin. To be sure, I created a MD5 of the file and saved both on safe locations. And, in order to follow best practice, I renamed the file to B207L_Biopower_55565020_FD0F_C_FMEP_30_FIEF_81I.bin.

Phase II - Tune the software Edit

Phase II will be to load it into the T8 Suite and if I'm lucky, the community already has something they call symbol names for my file which will allow me to poke around in my car's software.

According to my friend Mattias, I should aim to increase the torque limiters - whatever they are. Apparently the stock software has limiters defined that needs to be removed :-)

The tuning starts Edit

T8 suite

The file is now loaded in T8 Suite which found symbols for it as it started. When comparing this file with other files in the forum, I see I miss a lot of symbols. However, there is a symbol file available here that allows me to read more (essential) parameters.

I got the recommendation to use this FD0I bin file as it is supposed to be for my variant, but there are some smaller differences between them. The software version in my stock.bin is: FD0F_C_FMEP_30_FIEF_81I (last character is captial i) and the software version in the FD0I.bin is: FD0I_C_FMEP_33_FIEF_81l (last character is lowercase L). This indicates minor changes, according to this post; the differences are around improvements in coldstart and gearbox values.

I have also been considering to use FD0M version, as provided in this post. But then I needed to make sure that my Cruise Control still worked. For this, I need to read out the GearCal.Ratio and GearCal.Range parameters from my FD0F file, divide the values by 1.088 and insert them in the FD0M file. While poking in this, I found a symbol file for my FD0F file in this post. I read the values from my FD0F file and compared them with the FD0I file:

My stock bin GearCal.Ratio and GearCal.Range is:

2.73, 3.26, 4.04, 5.23, 7.87, 14.54 resp. 0.16, 0.25, 0.40, 0.60, 1.20, 3.00

The FD0I bin GearCal.Ratio is:

2.51, 3.00, 3.72, 4.84, 7.23, 13.36 resp. 0.22, 0.26, 0.40, 0.60, 1.20, 3.00

In a post related to this topic, the poster was planning to use GearCal.Ratio 2.51, 2.99, 3.71, 4.81, 7.23 and 13.36 and GearCal.Range 0.20, 0.26, 0.40, 0.60, 1.20, 3.00 with the FD0M binary.

So I will do the following variants:

  1. Create a ST1 from my own cars stock bin, FD0F, based on Tuning Packages (Mackans ST1+) in this post
  2. Create a ST1 from the FD0I binary, once again based on Tuning Packages (Mackans ST1+) in this post
  3. Create a ST1 from Mackans unlimited 400nm FD0M file, found here, once again based on Tuning Packages (Mackans ST1+) in this post
  4. In parallel, Mackan himself has proposed to create a ST1 for my car

With all this, I have all possibilities to power up my car....

Stay tuned for more information [pun intended].

FD0F ST1 Tuning - Attempt #1 Edit

On this page, you find the first tuning attempt. Do not bother to go here :-) Edit

FD0F ST1 Tuning - Attempt #2

On this page, you find my second attempt. This is based on Mackans Rev007 and Rev001 Tuning Packages, attempting to compare and understand what and why. Edit

FD0F ST1 Tuning - Attempt #3

Based on Mackans Rev007, but slightly modified to my liking as described in the torque/airmass analysis - I had my ST1. Time to go to Phase III.

Phase III Edit

So, with a newly tuned binary it was time to download it to the car. The first attempt was just to bring the laptop (on battery) to the car (on) battery and perform Flash ECU:

2015-01-11 14:40:45.6561 - ELM327 FTDI setting for COM7 LatencyTimer 2ms.

2015-01-11 14:50:10.6240 - Opening connection

2015-01-11 14:50:10.6603 - Open called in Trionic8

2015-01-11 14:50:14.1570 - Connected on com: COM7 with baudrate: 235294

2015-01-11 14:50:16.0151 - Update FLASH content

2015-01-11 14:50:16.0831 - Starting session

2015-01-11 14:50:16.1311 - Telling ECU to clear CANbus

2015-01-11 14:50:17.0891 - Requesting security access

2015-01-11 14:50:17.1431 - Got seed value from ECU

2015-01-11 14:50:17.1791 - Security access : Key (BE27) calculated from seed (93E0)

2015-01-11 14:50:17.2311 - Security access granted

2015-01-11 14:50:17.3161 - Uploading bootloader

2015-01-11 14:50:30.7069 - Starting bootloader

2015-01-11 14:50:31.9510 - Erasing FLASH

2015-01-11 14:50:32.0590 - Erasing FLASH.

2015-01-11 14:51:07.5730 - Erase completed

2015-01-11 14:51:07.6220 - Programming FLASH

2015-01-11 14:51:08.8191 - Got incorrect response 0000000000000000

2015-01-11 14:51:08.8531 - FLASH upload failed

2015-01-11 14:51:08.8991 - Session ended

2015-01-11 14:51:08.9311 - Operation done

2015-01-11 14:51:08.9821 - Total duration: 0 minutes 52 seconds

2015-01-11 14:51:09.2829 - Connection terminated

FAILURE!!! Flash upload failed

After the initial panic, i decided to perform Recover ECU with the original bin. Again, Flash Upload Failed.

2015-01-11 14:51:09.2829 - Connection terminated

2015-01-11 14:51:35.9883 - Opening connection

2015-01-11 14:51:36.0370 - Open called in Trionic8

2015-01-11 14:51:39.5237 - Connected on com: COM7 with baudrate: 235294

2015-01-11 14:51:41.3798 - Recovering ECU

2015-01-11 14:51:42.4779 - Recovery needed...

2015-01-11 14:51:45.2130 - Starting session

2015-01-11 14:51:45.4481 - Telling ECU to clear CANbus

2015-01-11 14:51:45.6881 - Recovery needed phase 1

2015-01-11 14:51:46.1041 - Recovery needed phase 2

2015-01-11 14:51:46.8311 - Requesting security access...

2015-01-11 14:51:46.8691 - Requesting security access

2015-01-11 14:51:46.9081 - Got seed value from ECU

2015-01-11 14:51:46.9411 - Security access : Key (2DD4) calculated from seed (898E)

2015-01-11 14:51:46.9821 - Security access granted

2015-01-11 14:51:47.0151 - Security access granted, uploading bootloader

2015-01-11 14:52:03.0691 - Starting bootloader

2015-01-11 14:52:04.1141 - Erasing FLASH

2015-01-11 14:52:04.2211 - Erasing FLASH.

2015-01-11 14:52:39.7562 - Erase completed

2015-01-11 14:52:39.7922 - Programming FLASH

2015-01-11 14:52:40.9962 - Recovery failed

2015-01-11 14:52:41.0332 - Operation failed

2015-01-11 14:52:41.0692 - Total duration: 0 minutes 59 seconds

2015-01-11 14:52:41.3730 - Connection terminated

At this point I started to break a sweat and called Mattias. He gave me two tips:

  1. Connect a battery charger, it might be so that there is not enough juice in the battery to perform the flash operation
  2. Flash with key in lock position, may be less things on the bus

So, off we go again. With charger connected to battery and key in lock position (after gaving had it in on position first) I tried recovery again.

This time it looked better. It started flashing! But....after 59% it stuck. Nothing happened. Nothing blinking on the ELM. Dead. I'm not sure why this happened, but at this point I had started to have low power in the laptop and while flashing, I opened the door which possibly starts communicating on the ODBII bus.

After this; the ECU seemed dead. No connection. So, unplugged ELM both on PC and car. Stopped the program and connected everything again. Key removed and re-insterted, On-off-on-off position; and Read ECU. Worked!!

So, with car and laptop in charger i started recovery again:

2015-01-11 15:27:33.5290 - Opening connection

2015-01-11 15:27:33.5602 - Open called in Trionic8

2015-01-11 15:27:37.0259 - Connected on com: COM7 with baudrate: 235294

2015-01-11 15:27:38.8850 - Recovering ECU

2015-01-11 15:27:39.9431 - Recovery needed...

2015-01-11 15:27:42.6762 - Starting session

2015-01-11 15:27:42.9082 - Telling ECU to clear CANbus

2015-01-11 15:27:43.1483 - Recovery needed phase 1

2015-01-11 15:27:43.5633 - Recovery needed phase 2

2015-01-11 15:27:44.2843 - Requesting security access...

2015-01-11 15:27:44.3053 - Requesting security access

2015-01-11 15:27:44.3253 - Got seed value from ECU

2015-01-11 15:27:44.3403 - Security access : Key (2DD4) calculated from seed (898E)

2015-01-11 15:27:44.3713 - Security access granted

2015-01-11 15:27:44.3863 - Security access granted, uploading bootloader

2015-01-11 15:28:00.1942 - Starting bootloader

2015-01-11 15:28:01.2353 - Erasing FLASH

2015-01-11 15:28:01.3343 - Erasing FLASH.

2015-01-11 15:28:36.8223 - Erase completed

2015-01-11 15:28:36.8433 - Programming FLASH

2015-01-11 15:42:14.2341 - Recovery completed

2015-01-11 15:42:14.2551 - Session ended

2015-01-11 15:42:14.2721 - Operation done

2015-01-11 15:42:14.2861 - Total duration: 14 minutes 35 seconds


Unplugged charger to battery and started car. What a relief.

So all good; let's go ahead and flash ECU.

  • Cars battery in charger - CHECK
  • Laptop in charger - CHECK
  • Get ECU information - CHECK
  • Flash ECU:
2015-01-11 15:45:28.4933 - Opening connection

2015-01-11 15:45:28.5258 - Open called in Trionic8

2015-01-11 15:45:31.9957 - Connected on com: COM7 with baudrate: 235294

2015-01-11 15:45:33.8528 - Update FLASH content

2015-01-11 15:45:33.8868 - Starting session

2015-01-11 15:45:33.9248 - Telling ECU to clear CANbus

2015-01-11 15:45:34.9049 - Requesting security access

2015-01-11 15:45:34.9209 - Got seed value from ECU

2015-01-11 15:45:34.9389 - Security access : Key (2DD4) calculated from seed (898E)

2015-01-11 15:45:34.9849 - Security access granted

2015-01-11 15:45:35.0499 - Uploading bootloader

2015-01-11 15:45:48.2217 - Starting bootloader

2015-01-11 15:45:49.4497 - Erasing FLASH

2015-01-11 15:45:49.5517 - Erasing FLASH.

2015-01-11 15:46:25.0268 - Erase completed

2015-01-11 15:46:25.0748 - Programming FLASH
2015-01-11 15:55:27.XXXX - Flash upload completed
2015-01-11 15:55:27.XXXX - Session ended
2015-01-11 15:55:27.XXXX - Operation done
2015-01-11 15:55:27.XXXX - Total duration: 9 minutes 53 seconds


All things disconnected and then a test drive. The car is quite improved!

Phase IV - Change injectors Edit

So, I've decided to go beyond ST1 and ordered new injectors.Should be possible to take me 240hp on ethanol with these injectors and beyond with a Aero turbo.

Coil Resistance: 12 Ohms (This high-impedance injector will work with all factory ECM/PCM injector drivers)
Spray Pattern: Wide Split Cone, (6 orifice)
Electrical Connector: USCAR (New-style EV6 / Oval / LS2)
Fitted with Viton upper and lower o-rings.
Static Flow Rate @ 43.5PSI (300kPa): 51.72 lb/hr = 6.52g/s = 544cc/min

The Software Edit

These new injectors will require some initial tunings of the software. The InjCorrCal.InjectorConst and InjCorrCal.BattCorrTab needs to be updated. Fortunately, mackan has already these in his car so the initial change should be rather straight forward.

InjCorrCal.InjectorConst should be 387, original is 261. Measured in g/min which means 6.52g/s * 60 = 391.20; then tune by mackan to make it perfect.

InjCorrCal.BattCorrTab changes as per table below:


The Hardware Edit

The first step is to remove the fuel pressure, this is simply done by starting the car and then remove the fuel-pump's fuse and let the car run until it dies.


Then we remove the plastic lid to expose the things we need:


Next is to remove the aluminum lid to expose the ignition coils; only to remove the sockets to them:


The we unplug the cooling temperature sensor:


And the throttle body:


Next is the CDM:


I also removed the oxygen sensor and the exhaust gas temperature sensor; of which one I accidentally broke. Not too bad, still ok.


Now I could move all the cable so I can remove the fuel distribution rail and change the injectors.

This step is a bit tricky. You grab the rail and slowly wiggle it and all four injectors should nicely follow. When all injectors are out, remove them one by one by pulling them from the rail while opening up the metal clip, then unplugging them from their sockets. A good practice is to cover the holes so dust does not enter the engine.


Here they are, the new and the old, where I have moved the metallic clip to the new injectors:


That's about it; now do it all backwards to mount things again.

Result Edit

The car runs much smoother and uses less fuel. Idle is very nice compared to before. Next is to make use of the new capabilities of theses injectors.

Phase V - Upgrading the Turbo Edit

The B207L comes with a Mitsubishi TD04-11TK Turbo. A small but simple upgrade is to take a Turbo from a 207R (Aero), the Mitsubishi TD04-14T. In fact, they are starting to be really cheap on ebay.

Turbo 1

The cool thing is that you actually only need to replace half the turbo as the turbine housing is the same in the two models, only the Compressor Housing differs. Below how it looks when the Compressor Housing has been removed.

Turbo 4

T8Suite version added a tuning pack in the Tuning Wizard that will hike all necessary maps to make a B207E/L behave like a B207R (Aero). This is further described by the tuning pack author in this thread.

Finding and adding symbols Edit

In order for me to get real-time logging to work in the T8 Suite, I had to complement the symbol file with the symbols used for real-time logging. This is quite a hard task to do where you compare the assembler of two different binaries.

I compared my FD0F file with the FD0I file which has support for the real-time symbols. The sybols needed for real-time logging are:



















In T8 Suite, you first have to create the .asm file. Right-click on the list of symbols and select "Show disassembly". This will open the assembly source and create a .asm file in the same directory as where you have your .bin file.

I did this with both the FD0F and FD0I file, and then I opened both in Notepad++ and started to compare the code. This is hard work, but it can bd dmade easier by looking for already known symbols in both files. Then you can find points in the code that matches, and from there you go.

The result of this work is shared on the forum in this post. A video has been uploaded to Youtube. And this is how it look:

Realtime 01
Realtime 02

Hardware considerations Edit

Playground Edit

I need to buy me a playground; I.e a (used) ECU that allows me to play around and always have a backup (the original). Either a 55565020 or a 55567225.

Injectors Edit

There seems to be a common understanding that for a decent ST1+, you need improved injectors. In particular Siemens Deka 875cc seems to be a popular choice.

Exhaust Edit

Another limiting factor is the exhaust pipe. A 2,5" or 3" system seems to be needed, e.g BSR SportFlow. For even better ventilation, a 3" down-pipe seems desirable, e.g. BSR Downpipe 3".

Saab 9-3 SportCombi

2011 saab 9-3 sportcombi-pic-354723764996299231

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.