Skip to content
SPECIFICTION
Get listed

pyOCD

pyocd.io

Free plan WindowsmacOSLinuxAPISelf-hosted
Visit pyocd.io
Spec score 8.6 #3 of 27 in Debuggers

What it is

pyOCD is a Python tool and API for debugging, programming, and exploring Arm Cortex microcontrollers. Its GDB server supports command-line debugging and IDE workflows, including Arm CMSIS Debugger, Cortex-Debug, and Eclipse Embedded CDT. It can program firmware and data images into internal or external flash, or load images into RAM. The Python API controls target devices and can support CI setups and custom test or debug tools. More than 70 common Arm Cortex-M devices have built-in support, with CMSIS Device Family Packs available for additional devices. Features include semihosting, SWV, and CMSIS-Pack support. Built-in probe plug-ins include CMSIS-DAP, Raspberry Pi Picoprobe, SEGGER J-Link, STLink, and pyOCD remote; PE Micro Cyclone and Multilink require a separate plug-in. A server and client can share probes over TCP/IP. pyOCD requires Python 3.9 or later and runs on macOS, Linux, FreeBSD, and Windows. It is free, with code licensed under Apache 2.0. Unlocking a supported locked device can require a mass erase, which erases its data.

Spec sheet

Purpose
pyOCD is a Python based tool and API for debugging, programming, and exploring Arm Cortex microcontrollers.Read 9 Oct 2026 · pyocd.io
Support
The project directs users to GitHub issues and discussions, a public Slack workspace, and a Google Groups mailing list.Read 9 Oct 2026 · pyocd.io
License
The project code is licensed under Apache 2.0.Read 9 Oct 2026 · pyocd.io
CMSIS-Pack limitations
The guide says pyOCD currently supports only one system memory map for all CPUs, which can cause issues with conflicting or overlapping regions.Read 8 Oct 2026 · pyocd.io
Community support
The project directs users to GitHub issues and discussions, a public Slack workspace, and a mailing list for announcements and news.Read 8 Oct 2026 · pyocd.io
Device support
More than 70 common Arm Cortex-M devices have built-in support, and additional devices can be accessed through CMSIS Device Family Packs.Read 9 Oct 2026 · pyocd.io
Flash programming
It can program firmware and data images into internal or external flash, and load images into RAM.Read 9 Oct 2026 · pyocd.io
GDB debugging
Its GDB server supports debugging from the command line or IDEs, including VSCode with Arm CMSIS Debugger or Cortex-Debug and Eclipse Embedded CDT.Read 9 Oct 2026 · pyocd.io
GDB server
Its GDB server supports debugging from the command line or an IDE.Read 8 Oct 2026 · pyocd.io
IDE integrations
The site names Arm CMSIS Debugger, Cortex-Debug, and Eclipse Embedded CDT as supported GDB integrations.Read 8 Oct 2026 · pyocd.io
Installation
The stable package is available from PyPI and can be installed or upgraded with pip; the documentation also recommends pipx for an isolated virtual Python environment.Read 9 Oct 2026 · pyocd.io
Operating systems
The installation guide says pyOCD runs on macOS, Linux, FreeBSD, and Windows and requires Python 3.9 or later.Read 8 Oct 2026 · pyocd.io
Other debug features
The homepage lists semihosting, SWV, and CMSIS-Pack support among its features.Read 8 Oct 2026 · pyocd.io
Pack management
pyOCD can manage CMSIS-Packs and install them by device part number.Read 9 Oct 2026 · pyocd.io
Probe integrations
Built-in probe plug-ins include CMSIS-DAP, Raspberry Pi Picoprobe, SEGGER J-Link, STLink, and pyOCD remote; PE Micro Cyclone and Multilink support is a separate plug-in.Read 9 Oct 2026 · pyocd.io
Python API
The Python API provides control of target devices and is described as suitable for CI, bespoke test and debug tools, and security research.Read 9 Oct 2026 · pyocd.io
Remote access security
The probe server disallows remote connections by default; enabling them may expose the server to any internet node unless protective measures are used.Read 8 Oct 2026 · pyocd.io
Remote probe access
A server and client allow debug probes to be shared and accessed over TCP/IP, including for CI configurations.Read 8 Oct 2026 · pyocd.io
Security limitation
Unlocking a locked device can require a mass erase and erases all data on the chip.Read 8 Oct 2026 · pyocd.io
Security support
The security guide lists NXP Kinetis and Nordic nRF52 families as currently supported for target security features.Read 8 Oct 2026 · pyocd.io
Semihosting and SWV
Features include semihosting with console and file I/O, SWV basic printf output, raw SWO streaming over TCP/IP, and Python SWO event processing.Read 9 Oct 2026 · pyocd.io
Supported systems
pyOCD requires Python 3.9 or later and runs on macOS, Linux, FreeBSD, and Windows.Read 9 Oct 2026 · pyocd.io
Target security
The documented security features currently support NXP Kinetis and Nordic Semiconductor nRF52 target families, including built-in and CMSIS-Pack targets.Read 9 Oct 2026 · pyocd.io
Unlocking limitation
Unlocking a locked supported device typically requires a mass erase, which erases all data on the chip.Read 9 Oct 2026 · pyocd.io

Plans and prices

pyOCD Free Open source project · Apache 2.0 license Read 9 Oct 2026 · pyocd.io

Every pyOCD plan and price →

Strong points and limits

Strong points

  • Free and licensed under Apache 2.0.
  • Built-in support for more than 70 Cortex-M devices.
  • Programs flash or loads images into RAM.
  • Supports several built-in debug probe plug-ins.

Limits

  • Requires Python 3.9 or later.
  • Unlocking a locked device can erase all chip data.
  • Remote probe connections are disabled by default.

Who it suits

pyOCD suits developers debugging or programming Arm Cortex-M devices from a command line, IDE, Python tool, or CI setup. It also supports remote probe access over TCP/IP.

Verdict

pyOCD combines GDB debugging, device programming, Python control, and probe sharing across several operating systems. Check device support and the data-erasure consequence before unlocking a locked target.

Where Specifiction places it

Alternatives to pyOCDAll alternatives →