Saabiste Tool Suite Available on Github
The development of the saabiste.net platform required pushing certain limits of official documentation and proprietary legacy software (TIS2000, GlobalTIS, EPC, Tech2). To provide real-time diagnostics in the browser, a unified calibration database, and an interactive EPC catalog, custom tools had to be designed.
Rather than keeping these components isolated on private servers, the entire source code is now open to the international Saab community. The objective is twofold: to sustain diagnostic tools against software obsolescence and to allow other developers or enthusiasts to draw inspiration from them.
Overview of the 5 Repositories
j2534-websocket-agentCWindows / MinGWWebSocket RFC 6455 ↔ DLL J2534 PassThru bridge for web applications.
j2534_snifferCWindows / MinGWPassive CAN bus (HS/LS) sniffer with GMLAN/ISO-TP decoding.
SCE_NEWJava 6GlobalTISSPS GlobalTIS 2011 calibration extractor (Transbase port 5024).
SCE_OLDJava 6TIS2000SPS TIS2000 2008 calibration extractor (Transbase port 3025).
umf-to-pngPython 3MultiplatformEPC
.UMFimage decompiler & vector hotspot extractor.
Technical Details of Each Tool
1. j2534-websocket-agent — Web ↔ Physical Diagnostic Bridge
The Problem: Modern web browsers cannot directly load native Windows C DLLs (like
smj2534.dllfor Scanmatik).The Solution: A lightweight C agent with no external dependencies opens a local WebSocket server (
ws://127.0.0.1:9005). It scans the Windows registry, enumerates connected J2534 probes, and transmits diagnostic commands (GMLAN, ISO-TP, LS-CAN Single-Wire wake-up) from the web interface to the vehicle with minimal latency.
2. j2534_sniffer — CAN / GMLAN Traffic Analyzer
The Problem: Understanding a module's behavior (CIM, BCM, ICM) or analyzing Tech2 exchanges requires intercepting network frames without disturbing the bus.
The Solution: A passive C sniffer capable of listening to the Dual-Bus (HS-CAN at 500 kbps and LS-CAN at 33.3 kbps). It decodes ISO-TP multi-packet frames on the fly, identifies the source of Saab 9440 controllers, and formats logs compatible with Tech2 outputs.
3. Saab Calibration Extractors
The Problem: Saab ECU firmware update files (SPS) are locked in proprietary Transbase SQL databases distributed with TIS2000 and GlobalTIS.
The Solution: Two Java extractors connect directly to Transbase network ports (
3025for TIS2000,5024for GlobalTIS). They decompress binary GZIP streams and generate unified SQLite import scripts, allowing isolation of the complete software version history and service bulletins by part number (HWID).
4. umf-to-png — EPC Parts Catalog Extractor
The Problem: The original Saab catalog (EPC) stores its exploded diagrams in a proprietary
.UMFformat mixing TIFF raster streams and vector EMF metadata.The Solution: A Python script decompiling binary UMF images to PNG and analyzing the vector header (
rclFrame) to calculate exact clickable area coordinates (Hotspots). The result produces both JSON mapping and SQL insertion script for EPC databases.
Development Philosophy
Each project follows these principles:
MIT License: Free reuse and modification without constraints.
AI-Assisted Development: Designed in direct pair-programming with Antigravity AI models (Google DeepMind).
No Heavy Dependencies: C and Java tools aim for lightweight design and compatibility with legacy workshop Windows environments (Windows XP/Windows 7).
And You?
Are you a developer or curious about reverse-engineering these tools, or do you primarily visit saabiste.net for integrated technical documentation (WIS) and parts catalog (EPC)?
Feel free to leave a comment to share how you use these tools or what you would like to see evolve!
To view the code: https://github.com/oamne
Comments
Be the first to comment.