A portable Windows application for loading automotive measurements, decoding CAN signals, inspecting raw frames, and plotting signal data interactively.
| Measurement | Content | Database |
|---|---|---|
BLF (.blf) |
Raw CAN frames | DBC or ARXML required |
ASC (.asc) |
Raw CAN frames | DBC or ARXML required |
MDF4/MDF3 (.mf4, .mdf) |
Raw CAN bus logging or pre-decoded signals | Required only for raw bus logging |
CSV (.csv) |
Raw CAN export, narrow signals, or wide signals | Required only for raw CAN data |
MDF and CSV content is detected automatically. Database Manager supports per-channel DBC/ARXML assignments, mixed database formats, decode-coverage indicators, and a channel-0 fallback.
- Fast bulk loading and decoding for BLF, ASC, MDF/MF4, and CSV measurements.
- Searchable channel/message/signal tree with multi-select plotting and drag-and-drop.
- Indexed CAN Trace viewer for raw frames, filtering, and on-demand signal decode.
- Formula-based New Signal generation with arithmetic, comparisons, logical expressions, temporal operations, and a stateful diagnostic counter; generated definitions are saved in configurations.
- CSV and Excel (
.xlsx) export using a selected signal's timestamps or a manually entered recurrence time. - JSON configuration save/load for measurement paths, database mapping, generated signals, plotted order, groups, colors, visibility, axes, cursors, and display settings.
- YAML rule-based diagnostics for expressions, ranges, fault flags, and message loss; optional GitHub Models analysis is available through
Ctrl+Shift+A.
- Stacked is the default mode and gives each signal its own lane and Y scale.
- Normal overlays signals on one Y axis.
- Multi-Axis groups axes by unit, with an optional individual axis per signal.
- Dual draggable cursors provide values and delta time.
- Fit-to-window and vertical-fit work across all plot modes while preserving the relevant view range.
- Signals can be grouped, reordered by dragging, recolored, hidden, or removed.
- Show Data Points uses adaptive markers and thinner lines.
- Hide Line is enabled only when data points are shown; when ON, it displays points without signal lines.
Download the latest Windows ZIP from Releases, extract it, and run CANScope.exe. No installer or Python installation is required.
git clone https://github.com/dinacaran/canscope.git
cd canscope
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
python app.pyThe portable build and CI release build use Python 3.12.
- Select Open File and choose a supported measurement.
- If the file contains raw CAN frames, select Open Database and configure DBC/ARXML mapping.
- Select Load + Decode.
- Search the signal tree, then double-click, drag, press
Space, or use the context menu to plot signals. - Use cursors, plot modes, data points, grouping, and fit controls as needed.
- Select Save Config to preserve the session or Export to choose CSV/Excel and its timestamp source.
- Open CAN Trace when the source contains raw CAN frames.
| Key | Action |
|---|---|
F |
Fit X and Y to all visible data |
V |
Fit Y to the current X range |
Space |
Plot selected signal-tree entries |
C |
Change the selected signal color |
R |
Toggle both cursors |
Delete |
Remove selected plotted signals |
Ctrl+Z |
Undo the last plot action |
Ctrl+S |
Save configuration |
Ctrl+Shift+R |
Open CAN Trace |
Ctrl+Shift+- / Ctrl+Shift++ |
Collapse / expand signal-tree messages |
python -m pip install -r requirements.txt -r requirements-dev.txt
python -m pytestBuild the portable application with:
.\build_portable.batOutput is written to dist\CANScope\. Pushing a v*.*.* tag runs the Windows build workflow and publishes a release ZIP.
app.py Application entry point and version
core/readers/ BLF, ASC, MDF/MF4, and CSV readers
core/ Decode, signal storage, export, and generated-signal logic
core/diagnostics/ Rule engine and optional AI-assisted diagnostics
gui/ Main window, plots, database manager, CAN Trace, diagnostics
config/diagnostics/ User-editable diagnostic rules and documentation
resources/ Application icon and splash assets
tests/ Pytest regression suite
Runtime dependencies are maintained in requirements.txt.
Release binaries are currently unsigned, so Windows SmartScreen may show a warning on first launch.
CAN Scope is licensed under the Mozilla Public License 2.0.
MPL-2.0 is a file-level copyleft license. You may use CAN Scope freely, including inside commercial and proprietary products, and you may combine these files with files of your own under any terms you choose. The one obligation is reciprocal: if you distribute a modified version of a file that carries the MPL notice, the source of that modified file must be made available under the MPL.
Releases up to and including v00.00.59 were published under the MIT License and
remain available under those terms — see LICENSE-MIT. The change to
MPL-2.0 applies from v00.00.60 onward.
CAN Scope bundles third-party components under their own licenses, including
LGPL-3.0 components (Qt via PySide6, python-can, asammdf, chardet). They are used
unmodified and remain available from their upstream projects. See
THIRD_PARTY_NOTICES.md for the full component list, and
licenses/ for the complete license texts — both ship inside the portable build.
"CAN Scope" and "CANScope" are names used by this project. The license grants rights to the code, not to the project name.


