{"id":24486,"library":"pyxcp","title":"pyxcp - Universal Calibration Protocol for Python","description":"Python implementation of the XCP (Universal Measurement and Calibration Protocol) for ECU access via CAN, Ethernet, USB, etc. Current version 0.29.7, regular releases with critical bugfixes. Requires Python >=3.10.","status":"active","version":"0.29.7","language":"python","source_language":"en","source_url":"https://github.com/christoph2/pyxcp","tags":["XCP","ECU","calibration","automotive","CAN","Ethernet","USB"],"install":[{"cmd":"pip install pyxcp","lang":"bash","label":"PyPI"}],"dependencies":[{"reason":"Raw Ethernet XCP transport (install as pyxcp[ethernet])","package":"pylibpcap (optional)","optional":true},{"reason":"CAN transport (install as pyxcp[can])","package":"python-can (optional)","optional":true},{"reason":"USB transport (install as pyxcp[usb])","package":"cffi (optional)","optional":true}],"imports":[{"note":"Master is directly exposed at package level","wrong":"from pyxcp.master import Master","symbol":"Master","correct":"from pyxcp import Master"},{"note":"Old internal module path removed in v0.27","wrong":"from pyxcp.slave import SlaveProperties","symbol":"SlaveProperties","correct":"from pyxcp import SlaveProperties"},{"note":"types is a submodule; wildcard import not supported","wrong":"from pyxcp.types import *","symbol":"types module","correct":"from pyxcp import types"}],"quickstart":{"code":"from pyxcp import Master, SlaveProperties\nimport pyxcp.transport.can as can\n\nmaster = Master(can.CanCCPSlave(channel='can0', baudrate=500000))\nprops = master.getSlaveProperties()\nprint(f\"Slave ID: {props.slaveId}, Protocol: {props.protocolVersion}\")\nmaster.disconnect()","lang":"python","description":"Connect to an XCP slave over CAN and read slave properties."},"warnings":[{"fix":"Upgrade to pyxcp >=0.28.0","message":"DAQ InterleavedMode calculation bug: setting interleavedMode=True could cause ERR_OUT_OF_RANGE. Fixed in v0.28.0.","severity":"breaking","affected_versions":"<0.28.0"},{"fix":"Upgrade to pyxcp >=0.27.1","message":"CAN-FD padding corruption: variable-length CAN FD frames could have corrupted padding bytes. Fixed in v0.27.1.","severity":"breaking","affected_versions":"<0.27.1"},{"fix":"Use 'from pyxcp import SlaveProperties'","message":"Import path changed: SlaveProperties no longer available from pyxcp.slave. Import from pyxcp directly.","severity":"gotcha","affected_versions":">=0.27.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Upgrade to pyxcp >=0.28.0 or disable interleavedMode","cause":"Sequence counter byte not included in overhead calculation (fixed in v0.28.0)","error":"ERR_OUT_OF_RANGE when configuring DAQ with interleavedMode=True"},{"fix":"pip install --upgrade pyxcp","cause":"Older pyxcp version or wrong installation (Master is only available from pyxcp package top-level)","error":"ImportError: cannot import name 'Master' from 'pyxcp'"},{"fix":"Use CanCcpslaveInterface instead (case-sensitive)","cause":"Class renamed in v0.27.0; old name still works but triggers deprecation warning","error":"pyxcp.transport.can.CanCCPSlave is deprecated: use CanCcpslaveInterface instead"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}