Tools to tune Trionic based Saab and Opel Engines

Trionic CAN Flasher

canflashThe Trionic CAN Flasher is an Open Source tool used to read and write software in Trionic5, Trionic 7 and Trionic 8 based ECU’s. It can also read software out of Motronic 9.6 based ECU’s and write calibration.

The tool can also be used to modify parameters in the ECU, such as SAI, Convertible and High Output.

The Trionic CAN Flasher currently supports the following interfaces:

  • Lawicel CANUSB
  • CombiAdapter
  • ELM327
  • Just4Tronic
  • Kvaser
  • J2534 (Beta)

A quick guide to the flasher can be found here. But, please read the documentation that comes with the flasher.

System Requirements

A PC running Windows XP, Windows Vista, Windows 7, Windows 8.1 or Windows 10.
Microsoft .NET 4.0
Microsoft Visual C++ 2010 Redistributable Package (x86)

Download zip and extract TrionicCANFlash.msi and setup.exe. Run the bootstrap file setup.exe. It will check for required frameworks before installation is started.

Download (1.51 MiB) MD5 Checksum

Try the new TrionicCANFlasher.msi. It will check for required frameworks before installation is started.

Download (1.98 MiB) MD5 Checksum

Changelog CanFlasher
Experimental Wix installer and new version (0.1.55.0) 10/20/2017 15:00:00 GMT
New kvaser version, updated combilib (0.1.55.0) 10/20/2017 15:00:00 GMT
J2534 filter stuff, no go on kvaser (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: (Legion) Warn if NVDM is different (untested) (0.1.55.0) 10/20/2017 15:00:00 GMT
Calculation for lawicel filter (0.1.55.0) 10/20/2017 15:00:00 GMT
New J2534 lib (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: (Legion) Adjusted CMFI-timings slightly (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: J2534; Updated description of a function (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Filters; Made less ugly (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: J2534; Calculate filter and mask (Debug) (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: (Legion) Made sure format request is resent (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Wrote nicer comments for a couple of functions (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: ELM327; Fixed mask and filter calculation (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Trionic 7; Made sure all IDs are in the filter list (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Trionic8; Made sure all IDs are in the filter list (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Trionic 5; Made sure all IDs are in the filter list (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: CANUSB; Count number of id’s passing through (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: ELM327; Reinforced checks from previous push (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: ELM327; Attempt to ignore broken messages.. (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: CANUSB; Mask and code calculation (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: MCP; Cleaned detection of byteswapped binaries. (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Trionic5; Created class for filesize(s) (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: STN11xx; Trionic 5 tweaks (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Trionic5; Read SRAM (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Trionic5; Validate dump, DoEvents to make movable (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Trionic7; Moved i-bus “fix” to combiadapter code (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Trionic 7; Fixed I-bus on combiadapter (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: STN11xx; rearranged code for custom BTR’s (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: STN11xx; Added support for Trionic 7, I-bus (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Trionic5; Fixed a typo (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Trionic5; Tweaks to checksum-behaviour with T5.2 (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Trionic5; Verify checksum before flashing (0.1.55.0) 10/20/2017 15:00:00 GMT
J2534 and T5 (0.1.55.0) 10/20/2017 15:00:00 GMT
T5 on kvaser. Do not list virtual channels. (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Added Trionic 5 for Just4Trionic (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Feature; Preleminary support for Trionic 5 (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Combiadapter; Futile attempt to fix I-bus (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: (Legion) Another paranoid test in the MCP loader (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: Print correct name of ECU in the event of a connection error (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: ELM327; Store response ASAP! Switch between old and new behaviour. (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: (Legion) Restored secacc: mcp, z22se) (0.1.55.0) 10/20/2017 15:00:00 GMT
Console.WriteLine to NLog (0.1.55.0) 10/20/2017 15:00:00 GMT
chriva: (Legion) Fixed ordering of previous push (0.1.54.0) 08/09/2017 15:00:00 GMT
chriva: (Legion) Input of boot and sys during flash (0.1.54.0) 08/09/2017 15:00:00 GMT
chriva: (Legion) Partition 10,11,12 md5 (0.1.54.0) 08/09/2017 15:00:00 GMT
Move symbolhelper, change API (0.1.53.0) 08/08/2017 15:00:00 GMT
chriva: (Legion) Print number of skipped bytes to debug log (0.1.52.0) 08/07/2017 15:00:00 GMT
chriva: (Legion) Optimizations (0.1.52.0) 08/07/2017 15:00:00 GMT
System.out removal (0.1.52.0) 08/07/2017 15:00:00 GMT
Fix t7 and j2534 double close bug (0.1.52.0) 08/07/2017 15:00:00 GMT
chriva: (Legion) Cleaned GetPartionmd5() in BlockManager.cs (0.1.52.0) 08/07/2017 15:00:00 GMT
Fix t7 and j2534 double close bug (0.1.52.0) 08/07/2017 15:00:00 GMT
Kvaser v5.14 to v5.20 (0.1.52.0) 08/07/2017 15:00:00 GMT
Fixed non CAN devices (0.1.52.0) 08/07/2017 15:00:00 GMT
Added initial J2534 support (0.1.52.0) 08/07/2017 15:00:00 GMT
chriva: Hopefully last version for this release (0.1.52.0) 08/07/2017 15:00:00 GMT
chriva: Changed how main is flashed (0.1.52.0) 08/07/2017 15:00:00 GMT
chriva: Fixed typo (0.1.52.0) 08/07/2017 15:00:00 GMT
chriva: Added a bunch of status replies (0.1.52.0) 08/07/2017 15:00:00 GMT
chriva: Mucking around with MCP (0.1.52.0) 08/07/2017 15:00:00 GMT
ME9.6 Set VIN in edit parameters (0.1.52.0) 08/07/2017 15:00:00 GMT
chriva: Read status of format and syspartitions during recovery with legion (0.1.52.0) 08/07/2017 15:00:00 GMT
chriva: (Legion) Prevent garbage after mcp-marrage (0.1.52.0) 08/07/2017 15:00:00 GMT
chriva: (Legion) Ask for comfirmation + tweaks (0.1.52.0) 08/07/2017 15:00:00 GMT
chriva: (Legion) Cleanup (0.1.52.0) 08/07/2017 15:00:00 GMT
Cleanup and some magic numbers (0.1.51.0) 05/11/2017 15:00:00 GMT
chriva: Fixed size of log-windows (0.1.51.0) 05/11/2017 15:00:00 GMT
chriva: Added option to skip system partitions on trionic 8 (0.1.51.0) 05/11/2017 15:00:00 GMT
chriva: Made sure NOT to write the file if a checksum-missmatch occurs during dumping (0.1.51.0) 05/11/2017 15:00:00 GMT
chriva: Last-minute fixes (0.1.50.0) 05/02/2017 15:00:00 GMT
chriva: Restore functionality of “Format boot” check box. (0.1.50.0) 05/02/2017 15:00:00 GMT
chriva: Got rid of kill-my-pc inside SeedToKey.cs (0.1.50.0) 05/02/2017 15:00:00 GMT
chriva: Bodged together a thingy that returns the same keys as the old array for me96 (0.1.50.0) 05/02/2017 15:00:00 GMT
chriva: Optimizations in BlockManager.cs (0.1.50.0) 05/02/2017 15:00:00 GMT
chriva: superficial changes to ComparePartmd5() (0.1.50.0) 05/02/2017 15:00:00 GMT
chriva: Made selective erase safer (0.1.50.0) 05/02/2017 15:00:00 GMT
chriva: Tweaked md5-verification and handling of boot (0.1.50.0) 05/02/2017 15:00:00 GMT
chriva: Cleaned Legion and supercharged autoskip (0.1.50.0) 05/02/2017 15:00:00 GMT
chriva: Print firmware version of MCP (0.1.50.0) 05/02/2017 15:00:00 GMT
chriva: Made sure to marry mcp at all times on Trionic 8 (0.1.50.0) 05/02/2017 15:00:00 GMT
chriva: …No more coding tonight! (0.1.50.0) 05/02/2017 15:00:00 GMT
chriva: Added some more info during mcp marriage (0.1.50.0) 05/02/2017 15:00:00 GMT
chriva: Removed unnecessary code (0.1.50.0) 05/02/2017 15:00:00 GMT
chriva: Tweaked mcp-marriage (0.1.50.0) 05/02/2017 15:00:00 GMT
chriva: Finally figured out how to marry the co-processor! (0.1.50.0) 05/02/2017 15:00:00 GMT
Temporary fix ELM me9.6 flash. Enable me9.6 recovery. (0.1.49.0) 04/27/2017 15:00:00 GMT
Remove unused trionic7 method. (0.1.49.0) 04/27/2017 15:00:00 GMT
Erased flash message improved. (0.1.49.0) 04/27/2017 15:00:00 GMT
Removed DisabledConnectionCheck, Replace t8 legion with “Use Legion Bootloader” checkbox. (0.1.49.0) 04/27/2017 15:00:00 GMT
Fixed erase timeout issue on ELM (0.1.48.0) 04/15/2017 15:00:00 GMT
Fixed bug preventing clean exit (0.1.47.0) 04/11/2017 15:00:00 GMT
Increased T8 erase timeout to 120 seconds. (0.1.46.0) 04/05/2017 15:00:00 GMT
Chriva: Made sure Z22SE will ALWAYS format boot and fixed a stupid misstake in frmMain (0.1.45.0) 02/17/2017 15:00:00 GMT
Chriva: Put legion and preloader in separate files (0.1.45.0) 02/17/2017 15:00:00 GMT
Chriva: New version of legion, a new preloader for z22se, tweaks, md5 and so on (0.1.45.0) 02/17/2017 15:00:00 GMT
Chriva: Tiny cleanup and tweaked ping-command (0.1.45.0) 02/17/2017 15:00:00 GMT
Chriva: Tweaked MCP flash slightly. (0.1.45.0) 02/17/2017 15:00:00 GMT
Chriva: New mcp loader. (0.1.45.0) 02/17/2017 15:00:00 GMT
Disable Read SRAM on T8. (0.1.44.0) 11/15/2016 15:00:00 GMT
Doc lifted to latest program version. (0.1.44.0) 11/15/2016 15:00:00 GMT
Fix debug print. Get rid of unused BootloaderFromFile. (0.1.44.0) 11/15/2016 15:00:00 GMT
Enable t8 legion write, but not for ELM (0.1.44.0) 11/15/2016 15:00:00 GMT
Chriva: Restored outgoing package delay for the mcp loader. (0.1.44.0) 11/15/2016 15:00:00 GMT
Chriva: New version of mcp bootloader, a few tweaks. (0.1.44.0) 11/15/2016 15:00:00 GMT
Chriva: Added slowdown-command for mcp-loader (0.1.44.0) 11/15/2016 15:00:00 GMT
Chriva: Added support for mcp capable bootloader (0.1.44.0) 11/15/2016 15:00:00 GMT
Renamed solution file in prep for move. (0.1.44.0) 11/15/2016 15:00:00 GMT
Remove old unused nlog libs. (0.1.44.0) 11/15/2016 15:00:00 GMT
New NLog version, fixed lawicel reconnect issue? (0.1.43.0) 10/21/2016 15:00:00 GMT
MX Wifi removal (0.1.42.0) 10/14/2016 15:00:00 GMT
Did not reset erase timer, thanks saabnoob! (0.1.42.0) 10/14/2016 15:00:00 GMT
Remove support for OBDlink mx did not work (0.1.42.0) 10/14/2016 15:00:00 GMT
Some more error output (0.1.42.0) 10/14/2016 15:00:00 GMT
basefile vs calibrationset check before flash ME9.6 (0.1.42.0) 10/14/2016 15:00:00 GMT
Fix kvaser open issue from suite. (0.1.41.0) 09/07/2016 15:00:00 GMT
Fix exception in kvaser errorhandling. (0.1.41.0) 09/07/2016 15:00:00 GMT
Disable experimental bootloader feature. (0.1.41.0) 09/07/2016 15:00:00 GMT
Quick n dirty bootloader read from file for christian! (0.1.41.0) 09/07/2016 15:00:00 GMT
Adjusted code to make ELM erase more clearer. Adjusted to 50 seconds erase. (0.1.40.0) 06/03/2016 15:00:00 GMT
Support for ME96 calibration flash. Lowered timeout for t8 and me9.6 to 150ms. (0.1.39.0) 05/24/2016 15:00:00 GMT
T8 fixed timing of erase procedure. (0.1.39.0) 05/24/2016 15:00:00 GMT
Removed deprecated vs2010 c++. (0.1.38.0) 04/30/2016 15:00:00 GMT
Performance improvement. (0.1.38.0) 04/30/2016 15:00:00 GMT
Updated flash/read procedure in doc. (0.1.38.0) 04/30/2016 15:00:00 GMT
Revert “vs2015 Community Edition compability” (0.1.37.0) 04/12/2016 15:00:00 GMT
Revert “New version” (0.1.37.0) 04/12/2016 15:00:00 GMT
Added a second validation read before PI area is to be changed. (0.1.37.0) 04/12/2016 15:00:00 GMT
Retry write if we happens to get a 0x3E Service TesterPresent. (0.1.37.0) 04/12/2016 15:00:00 GMT
Read E85% last. Do equals on string instead of float. (0.1.37.0) 04/12/2016 15:00:00 GMT
Read E85% last. Do equals on string instead of float. (0.1.37.0) 04/12/2016 15:00:00 GMT
UI combobox item typo OBD->EOBD. (0.1.37.0) 04/12/2016 15:00:00 GMT
vs2015 Community Edition compability. (0.1.36.0) 04/05/2016 15:00:00 GMT
New kvaser SDK version/driver. (0.1.36.0) 04/05/2016 15:00:00 GMT
Fixed logging function. (0.1.36.0) 04/05/2016 15:00:00 GMT
Fixed problem with read/write after getecuinfo. (0.1.36.0) 04/05/2016 15:00:00 GMT
Fixed exit hanging. Chriva figured out the riddle! (0.1.35.0) 02/21/2016 15:00:00 GMT
Fix check in t8suite readflash. One way to report progress. (0.1.34.0) 02/11/2016 15:00:00 GMT
Fix log button. (0.1.33.0) 02/10/2016 15:00:00 GMT
Cleaned up CAN logging, reversed bytes. (0.1.32.0) 02/04/2016 15:00:00 GMT
Added CAN logging in the UI and generic bgworker. (0.1.31.0) 02/01/2016 15:00:00 GMT
Restore for T8. (0.1.30.0) 01/16/2016 15:00:00 GMT
ELM T8 GetE85% fix. (0.1.30.0) 01/16/2016 15:00:00 GMT
Do checksum checks for T8 before write and after read. (0.1.29.0) 12/31/2015 15:00:00 GMT
Remove RPM limiter, add ManufacturersEnableCounter. (0.1.29.0) 12/31/2015 15:00:00 GMT
Added connection check for T8 getecuinfo (0.1.29.0) 12/31/2015 15:00:00 GMT
Fail fast when message cannot be sent. (0.1.29.0) 12/31/2015 15:00:00 GMT
Fixed set tanktype. (0.1.29.0) 12/31/2015 15:00:00 GMT
mackan: Added some comments for fixing (0.1.29.0) 12/31/2015 15:00:00 GMT
T8 biopower, clutchstart, diagnosticstype, tanktype edit parameters. (0.1.29.0) 12/31/2015 15:00:00 GMT
Added more PI area parameters. No GUI yet. (0.1.29.0) 12/31/2015 15:00:00 GMT
Bootstrap was wrong for Visual C++ 2010 Runtime Libraries (x86). (0.1.28.0) 12/06/2015 15:00:00 GMT
Doc update (0.1.27.0) 12/02/2015 15:00:00 GMT
Exit fix and remove disabled K-line option. (0.1.27.0) 12/02/2015 15:00:00 GMT
Setting low latency mode, for t7 lower kwp timeout (0.1.27.0) 12/02/2015 15:00:00 GMT
Fixed clearDTC for t8. (0.1.27.0) 12/02/2015 15:00:00 GMT
shAGGie: copied and override sendReadRequest in KWP/KWPHandler.cs to fit to the new Method ReadValueFromSRAM in Trionic7.cs (0.1.26.0) 11/03/2015 15:00:00 GMT
Added a link to open the logging directory. (0.1.25.0) 10/07/2015 15:00:00 GMT
Removed ELM k-line and added exit logging. New Version. (0.1.25.0) 10/07/2015 15:00:00 GMT
Disable ELM327 kline. (0.1.25.0) 10/07/2015 15:00:00 GMT
Disable ELM k-line, and new version. (0.1.24.0) 10/05/2015 15:00:00 GMT
T8 added a first attempt to clear DTC’s. Runs automaticaly after ReadDTCcodes. (0.1.24.0) 10/05/2015 15:00:00 GMT
No more dropbox. (0.1.24.0) 10/05/2015 15:00:00 GMT
Added zip. (0.1.24.0) 10/05/2015 15:00:00 GMT
Added zip file. (0.1.23.0) 09/2/2015 15:00:00 GMT
Added setup.exe bootstrap that check and download required fw. (0.1.22.0) 09/1/2015 15:00:00 GMT
Added enum helper to get rid of ugly code in the suites. (0.1.21.0) 08/31/2015 15:00:00 GMT
Just4pLeisure: Increase T8 erase timeout to 72 seconds (0.1.21.0) 08/31/2015 15:00:00 GMT
Just4pLeisure: Added Try/Catch for Lawicel CANUSB (0.1.21.0) 08/31/2015 15:00:00 GMT
Just4pLeisure: Add OBDLink MX WiFi adapter (0.1.21.0) 08/31/2015 15:00:00 GMT
Moved log creation to path ApplicationData/MattiasC/TrionicCANFlasher (0.1.20.0) 08/30/2015 15:00:00 GMT
Fixed issue with missing canusbdrv.dll (0.1.19.0) 08/30/2015 15:00:00 GMT
Added Visual C++ 2010 Runtime Libraries as prereq (0.1.18.0) 08/21/2015 15:00:00 GMT
Lock adapter and COM speed for Just4Trionic (0.1.18.0) 08/21/2015 15:00:00 GMT
Use WMI to find Just4Trionic COM port (0.1.18.0) 08/21/2015 15:00:00 GMT
Add txsuite url and always copy canlib32.dll (0.1.18.0) 08/21/2015 15:00:00 GMT
Added raw values for PI01 printout. (0.1.17.0) 07/28/2015 15:00:00 GMT
Create Md5 checksum for installer. (0.1.16.0) 07/22/2015 15:00:00 GMT
Create Md5 checksums for created bin files. (0.1.15.0) 07/20/2015 15:00:00 GMT
Remove the percentage label. (0.1.15.0) 07/20/2015 15:00:00 GMT
Added msiupdater and removed unused buttons. (0.1.14.0) 07/19/2015 15:00:00 GMT
Erase timeout 45s. Me9.6 fixes. Release script. (0.1.13.0) 07/19/2015 15:00:00 GMT