forscan_tools is a safety-first helper toolkit for FORScan users working on Ford, Lincoln, Mercury, and Mazda diagnostics/configuration.
The goal is simple:
- Help you understand what you are doing before changing anything
- Reduce risk when interpreting DTCs and planning module edits
- Keep recommendations grounded in official source guidance
This project does not write to your vehicle directly.
FORScan is powerful, but information is spread across official pages, sticky forum posts, and community threads.
This repo consolidates that into a practical workflow:
- Validate trust and source quality
- Learn key concepts (As-Built, ABT, ECC, VID, TRID)
- Parse and inspect configuration artifacts
- Plan changes with rollback and safety checks
parse-abt: parse ABT data and export CSV/JSON/JSONLdecode-dtc: interpret DTCs with severity and triage stepsplan-change: build pre-check, execution, and rollback checklisttrust-report: confidence report with official-source citationsexplain: plain-language concept guide for As-Built and related topics
- Always backup before writing
- Always use stable power during configuration/programming
- Make one change at a time
- Rescan DTCs after every write
- Prefer human-readable FORScan module configuration over raw hex edits
As-Built: factory module configuration values.AB: factory file download format from Ford/Motorcraft.ABT: FORScan backup/export format for module configurationECC: economized central configuration shared by multiple modulesVID: PCM vehicle identification/configuration blockTRID: transmission characterization data block
- Python
3.11+ - Windows PowerShell or any shell with Python access
python -m venv .venv
.venv\Scripts\activate
pip install -e .[dev]python forscan_tools.py trust-report --json trust_report.jsonpython forscan_tools.py explain --list-topics
python forscan_tools.py explain --topic asbuilt --topic abt --topic eccpython forscan_tools.py decode-dtc --code P0171 --code U0121python forscan_tools.py plan-change \
--module ABS \
--parameter TireSize \
--current 235/65R17 \
--target 245/65R17python forscan_tools.py parse-abt \
--file .\abt\VIN123_ABS_20250101_010101.abt \
--out output.csv \
--json output.json \
--jsonl output.jsonlParse ABT payloads and export to machine-friendly formats.
python forscan_tools.py parse-abt --file .\abt\sample.abt --out output.csvOptions:
--abt-dir: directory for interactive selection (default./abt)--file: direct ABT file path--out: CSV output path--json: optional JSON output path--jsonl: optional JSONL output path
Decode one or more DTCs.
python forscan_tools.py decode-dtc --code P0420 --code B10D7Generate a checklist before you perform any FORScan write.
python forscan_tools.py plan-change \
--module BCM \
--parameter AutoLock \
--current Disabled \
--target EnabledSummarize legitimacy/confidence and evidence sources.
python forscan_tools.py trust-report --json trust_report.jsonExplain key concepts in plain language.
python forscan_tools.py explain --list-topics
python forscan_tools.py explain --topic asbuilt --topic vidSupported topics currently include:
asbuiltabteccvidtrid
- Export baseline DTC report before any coding.
- Save ABT backups with VIN/module/date in filename.
- Keep a battery maintainer connected for any write/programming session.
- Change one parameter at a time and validate behavior.
- If a change fails, rollback immediately using known-good backup.
- Treat community spreadsheets as hints, not truth.
- Prefer official FORScan admin guidance when conflicts exist.
forscan_tools.py: backward-compatible public facade and CLI entrypointforscan_models.py: frozen dataclasses, enums, and shared constantsforscan_data.py: in-repo knowledge tables and curated source dataforscan_core.py: parsing, lookup, planning, and serialization logicforscan_cli.py: argparse wiring, command handlers, and console renderingtests/test_forscan_tools.py: unit testsdocs/forscan_research_notes.md: official-source research synthesisdocs/community_intelligence_2026-02-21.md: forum/Reddit intelligence briefpyproject.toml: Python project and tooling config
pytest
ruff check .
ruff format .- ABT parsing logic is currently a safe baseline parser and not a full ABT decoder.
- DTC knowledge base is intentionally small and should be expanded.
- Change plans are advisory and should be validated against official model-specific procedures.
- Full ABT line parser with old/new format detection.
- Model/year-aware DTC knowledge packs.
- Rule engine that blocks high-risk changes unless prerequisites are confirmed.
- Structured import of FORScan logs and scan reports.
MIT