This application is provided as is, and you use it at your own risk.
I am not responsible for any damages or injuries resulting from the use of this application.
VERY IMPORTANT: This application is for educational purposes only and should be used with extreme caution on real vehicles!
PyPSADiag is a Python application for sending diagnostic frames over CAN-BUS to PSA/Stellantis based vehicles. This educational tool supports various automotive diagnostic protocols including UDS, KWP2000, and more.
📋 Based on Original Project: This is a fork/enhanced version of the original PyPSADiag by Barracuda09 with additional VCI support and improvements.
- Compatible with arduino-psa-diag hardware
- See ludwig-v arduino-psa-diag for hardware info
⚠️ VCI DRIVER REQUIREMENT: You must have VCI drivers installed- Required: Install Diagbox or compatible VCI drivers
- Critical:
C:\AWRoot\drv\VCIAccess.dllmust be present on your system - 32-bit Python: Required for VCI DLL bridge communication
- Supports multiple protocols: UDS, KWP2000, KWP_ON_CAN_FIAT
Currently supporting:
- JSON Configuration for example BSI2010 to setup GUI
See more JSON Configuration Files - Reading Zones that are listed in JSON Configuration file
- Saving Zones to CSV file
- Saving changed Zones (as an list) to ECU
What I would like to support:
- More ECU JSON Files
Help in any way is appreciated, just send me an email with anything you can contribute to the project, like:
- More ECU JSON Files
- Python coding
- GUI design
- ideas / feature requests
- test reports
- spread the word!
- Install Python 3.12 or above
- Get code
git clone https://github.com/halloworld007/PyPSADiag-VCI.git
OR use this Download ZIP - Create virtual enviroment
python -m venv /path/to/PyPSADiag-VCI/.venv - Goto virtual enviroment with
/path/to/PyPSADiag-VCI/.venv/Script/activate - Install requirements, within path of PyPSADiag-VCI with
pip install -r requirements.txt - Run with:
python main.py --lang nlOpen Zone Fileand select an ECU JSON fileConnectto correct Arduino hardwareReadZones- RISK: You can save the Zones to the ECU by using the
WriteButton.
Always Check that these zones look correct
For example to make a translation for Dutch use this command:
pyside6-lupdate EcuMultiZoneTreeWidgetItem.py EcuZoneTreeView.py EcuZoneTreeWidgetItem.py PyPSADiagGUI.py DiagnosticCommunication.py main.py -source-language en_EN -ts ./i18n/PyPSADiag_nl.qt.tspyside6-linguist ./i18n/PyPSADiag_nl.qt.tspyside6-lrelease ./i18n/PyPSADiag_nl.qt.ts -qm ./i18n/translations/PyPSADiag_nl.qmpython main.py --lang nl
For manual translation, you can use the desktop application QT Linguist.
Open, for example, the ./i18n/translations/PyPSADiag_translated_nl.qt.ts file, edit the sentences, and save the result.