pyOCD 0.45.0 released
Jul 15, 2026
Teo Mahnic
pyOCD v0.45.0 has been released and is available from PyPI. This version includes several improvements and bug fixes. Highlights include extended CMSIS-Pack debug sequence support and file-based RTT and SWV capture. The complete list of changes is provided below.
To upgrade pyOCD, just run pip:
pip install --upgrade pyocd
This release extends CMSIS-Pack debug sequence support with new
flash programming setup sequences. It adds FlashEraseSetup and FlashProgramSetup for flashinfo based regions, along
with a fallback to an FLM flash algorithm when a CMSIS-Pack does not provide flash programming debug sequences. The new
RunPythonScript function allows debug sequences to run Python scripts, while TraceCapture and TraceFlush hooks
extend support for trace capture.
RTT channels now support file-based input and output, making it possible to capture test output and supply scripted input to the target. The raw SWV trace stream can also be saved directly to a file for later processing. Together, these additions make it easier to integrate target output capture into automated workflows.
Standard I/O session options now use the stdio_* prefix instead of telnet_*, reflecting that standard I/O is not
limited to Telnet transport. Existing telnet_* option names remain supported as aliases.
CoreSight discovery now makes non-core components available to target-specific integrations and supports filtering components by their properties. This release also improves compatibility with newer J-Link DLLs and fixes issues affecting flash programming, CMSIS-DAP probe matching, and RTT memory access.
Thanks again to all the contributors who helped make this release possible! ❤️
v0.45.0 on GitHub
v0.45.0 on PyPI
Important note
With this release, support for Python 3.14 is enabled and Python 3.8 is no longer supported. The minimum Python version is now 3.9.0.
New Features
- Debug sequences:
- Introduce support for
FlashEraseSetupandFlashProgramSetupsequences used by flashinfo based regions - Add support for
RunPythonScriptfunction for running Python scripts from debug sequences - Fall back to an FLM algorithm when flash programming debug sequences are not provided by a CMSIS-Pack
- Add
TraceCaptureandTraceFlushsequence hooks, along with__traceclockinand__traceclockoutdebug access variables
- Introduce support for
- RTT:
- Enable file-based input and output for RTT channels, supporting automated test output capture and scripted target input
- SWV:
- Enable saving the raw SWV trace stream directly to a file
Improvements
- CoreSight:
- Attach discovered non-core components to the target, making them available to target-specific integrations
- Add support for filtering the components based on their properties
- J-Link:
- Improve J-Link compatibility with newer J-Link DLL releases (@dottspina)
Changes
- Standard I/O:
- Replace the
telnet_*session option names withstdio_*, reflecting that standard I/O is not limited to Telnet transport - Continue to accept legacy
telnet_*option names as aliases
- Replace the
- SWV:
- Move SWV trace management to the device layer for consistent behavior across subcommands
- Limit SWV console output to ITM Channel 0
- Flash programming:
- Improve smart flash reliability by updating flash page states after erase operations
Fixes
- CMSIS-DAP:
- Fix matching CMSIS-DAP probes that report an empty serial number
- Flash programming:
- Suppress disconnect errors while closing a session after programming
- Fix flashinfo subregion bounds when it covers more than one defined memory region
- Command line:
- Fix the
n_srstreset-type mapping
- Fix the
- RTT:
- Fix target memory access for RTT up-channels
Other
- CI:
- Drop Python 3.8 and add support for Python 3.14
- Update workflow dependencies
Full Changelog: v0.44.1…v0.45.0