pyOCD 0.46.0 released
Oct 19, 2026
Teo Mahnic
pyOCD v0.46.0 has been released and is available from PyPI. This version includes several improvements and bug fixes.
Highlights include enhanced trace support, GDB Server operation without a connected client, and the new info subcommand.
The complete list of changes is provided below.
To upgrade pyOCD, just run pip:
pip install --upgrade pyocd
This release expands trace support and its integration with CMSIS-Toolbox. SWO and Trace Buffer capture can now be
configured through
*.cbuild-run.yml,
with raw trace output sent to files or TCP servers. Note that Trace Buffer capture requires a Device Family Pack (DFP)
that provides the necessary trace debug sequences (see Open-CMSIS-Pack-Spec documentation).
Trace generation is configured separately using
*.ctrace-run.yml,
with synchronization on resume. The setup is applied automatically before the target resumes. While the target is
halted, you can also apply it manually using the monitor ctrace reload command.
For debug sequence configuration, the device-settings node in *.cbuild-run.yml now allows you to set debug
sequence variables directly. These values take precedence over settings in *.dbgconf files.
Alongside these trace enhancements, the GDB Server now supports SEGGER RTT and SystemView through *.cbuild-run.yml
configuration. RTT channels can be connected to standard I/O, files, or TCP servers, while SystemView recordings can
be saved to files or streamed live to the SystemView application. Trace, RTT, SystemView, and semihosting remain
active even when no GDB client is connected.
For a quick overview of the connected hardware, the new info subcommand displays debug probe and target
information.
Reliability improvements round out the release, with better handling of sleeping cores, more robust RTT control block discovery, and more reliable GDB Server connections and shutdown. Fixes address SWO timestamp decoding, and HID probe connections hanging on Windows, as well as issues in CoreSight and flash programming.
Thanks again to all the contributors who helped make this release possible! ❤️
v0.46.0 on GitHub
v0.46.0 on PyPI
New Features
- Trace:
- SWO and Trace Buffer setup using configuration from
*.cbuild-run.ymlwith raw trace output to files or TCP servers - Trace generation setup using configuration from
*.ctrace-run.ymlwith synchronization on resume - Optional command
monitor ctrace reloadto manually apply trace generation setup while the target is halted - Support trace related DFP debug description enhancements
Note: Trace Buffer capture requires a DFP with the necessary trace debug sequences
- SWO and Trace Buffer setup using configuration from
infosubcommand:- Add
pyocd infoto display debug probe and target information
- Add
- GDB Server:
- Add support for SEGGER’s RTT and SystemView, configured via
*.cbuild-run.yml - Support RTT channels association with STDIO, files or TCP servers
- Support SystemView recording to files, and live streaming to the SystemView application
- Keep Trace, RTT, SystemView and semihosting working without a connected GDB client
- Add support for SEGGER’s RTT and SystemView, configured via
- Debug sequences:
- Support
device-settingsin*.cbuild-run.ymlto configure debug sequence variables, taking precedence over*.dbgconfsettings - Support new trace related sequences
TraceCaptureandTraceFlush - Support buffer transfers through the APv2 (ADIv6) top-level access port address space
- Support
Improvements
- GDB Server:
- Allow stepping and resuming over
BKPTinstructions - Handle semihosting requests during stepping
- Improve connection, disconnection, and shutdown reliability
- Preserve breakpoint and watchpoint stop reasons when they coincide with debugger interrupts
- Allow stepping and resuming over
- RTT:
- Retry control block discovery until it is initialized by the application
- Keep debugger commands responsive during discovery
- Reduce repeated warnings during discovery and polling failures, and report recovery
- Target:
- Improve handling of sleeping cores during debugging, memory and register access, reset, and flash programming
- Add
live.status_fault_retry_timeoutsession option to configure retry behavior for failed target status reads ingdbserverandrunmodes - Improve connection error messages when no target is detected
- CMSIS-DAP:
- Add udev rules for Linux:
- Raspberry Pi Debug Probe (CMSIS-DAP)
- Artery Technology CMSIS-DAP (@mlasch)
- Arduino UNO WiFi R4 CMSIS-DAP (@rolaca11)
- Add udev rules for Linux:
- SWV:
- Keep SWV capture running after trace parser errors
Fixes
- GDB Server:
- Fix stop notifications and acknowledgements in non-stop mode
- Bypass incorrect thread id handling in older GDB versions, which prevented running and stepping in RTOS threads (thread control block located at address > 0x7fffffff)
- Commander:
- Fix returned exit status (@aamir-azeez)
- SWO:
- Fix local timestamp packet handling that could cause incorrect decoding of subsequent trace data
- Correctly skip global timestamp packet payloads to prevent subsequent trace data from being misinterpreted
- CoreSight:
- Fix DP and AP register caching affecting reset debug sequences in DFPs
- Fix root component address discovery on DPv3 targets
- Correct the reported number of FPB literal comparators
- DAP access interface:
- Fix HID debug probe connections hanging on Windows (@Hoohaha)
- CMSIS-DAP:
- Fix handling of captured JTAG data in debug sequences when trace logging is enabled
- J-Link:
- Fix SWO reads failing when no trace data is available (@adityaanikam)
- Correct probe connection state reporting (@dottspina)
- STLink:
- Fix connection when using
pre-reset
- Fix connection when using
- Flash programming:
- Honor the erased byte value specified by CMSIS-Pack flash algorithms (@swimmingbrain)
- Fix LPC4088 flash region
page_size(@alramlechner)
- Helpers:
- Fix yellow color leaking into Probe/Board selection for invalid choice (@alexapostolu)
New Contributors
- @adityaanikam made their first contribution in #2021
- @alramlechner made their first contribution in #2015
- @mlasch made their first contribution in #1902
- @GaryLeutheuser made their first contribution in #2017
- @alexapostolu made their first contribution in #1890
- @swimmingbrain made their first contribution in #2032
- @aamir-azeez made their first contribution in #2037
Full Changelog: v0.45.1…v0.46.0