Sunday, October 25, 2026 4,350 lists 78,100 records on file
List your app or device

  1. Home
  2. Debuggers
  3. pyOCD

pyOCD

What it is

pyOCD is a free, Python-based 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 write firmware and data images to internal or external flash, or load images into RAM. The Python API controls target devices and can be used in CI setups or custom test and debug tools. More than 70 common Arm Cortex-M devices have built-in support, and CMSIS Device Family Packs can extend device coverage. Features include semihosting with console and file I/O, SWV output and streaming, 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 support comes through 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. Remote probe connections are disabled by default; enabling them may expose the server to any internet node unless protective measures are used. The code is licensed under Apache 2.0.

For and against

For

  • Free and licensed under Apache 2.0.
  • Built-in support for more than 70 Arm Cortex-M devices.
  • Can program flash or load images into RAM.
  • Supports command-line and named IDE debugging workflows.
  • Runs on macOS, Linux, FreeBSD, and Windows.

Against

  • Requires Python 3.9 or later.
  • Remote probe connections can expose the server if enabled without protection.
  • Unlocking a locked supported device can erase all chip data.
  • CMSIS-Pack support uses one memory map for all CPUs.

The verdict

pyOCD combines GDB debugging, firmware programming, and Python-based device control for Arm Cortex microcontrollers. Check the Python requirement and the remote access and device-unlocking limits before using those features.

Who it suits

pyOCD suits developers working with Arm Cortex-M microcontrollers who want command-line, IDE, or Python API debugging. Its remote probe option may also suit CI configurations that need shared probe access.

Plans and prices

pyOCD

Free

Open source project · Apache 2.0 license

Every plan, in full

On the record

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.pyocd.io · read 8 Oct 2026
Community support
The project directs users to GitHub issues and discussions, a public Slack workspace, and a mailing list for announcements and news.pyocd.io · read 8 Oct 2026
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.pyocd.io · read 9 Oct 2026
Flash programming
It can program firmware and data images into internal or external flash, and load images into RAM.pyocd.io · read 9 Oct 2026
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.pyocd.io · read 9 Oct 2026
GDB server
Its GDB server supports debugging from the command line or an IDE.pyocd.io · read 8 Oct 2026
IDE integrations
The site names Arm CMSIS Debugger, Cortex-Debug, and Eclipse Embedded CDT as supported GDB integrations.pyocd.io · read 8 Oct 2026
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.pyocd.io · read 9 Oct 2026
License
The project code is licensed under Apache 2.0.pyocd.io · read 9 Oct 2026
Operating systems
The installation guide says pyOCD runs on macOS, Linux, FreeBSD, and Windows and requires Python 3.9 or later.pyocd.io · read 8 Oct 2026
Other debug features
The homepage lists semihosting, SWV, and CMSIS-Pack support among its features.pyocd.io · read 8 Oct 2026
Pack management
pyOCD can manage CMSIS-Packs and install them by device part number.pyocd.io · read 9 Oct 2026
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.pyocd.io · read 9 Oct 2026
Purpose
pyOCD is a Python based tool and API for debugging, programming, and exploring Arm Cortex microcontrollers.pyocd.io · read 9 Oct 2026
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.pyocd.io · read 9 Oct 2026
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.pyocd.io · read 8 Oct 2026
Remote probe access
A server and client allow debug probes to be shared and accessed over TCP/IP, including for CI configurations.pyocd.io · read 8 Oct 2026
Security limitation
Unlocking a locked device can require a mass erase and erases all data on the chip.pyocd.io · read 8 Oct 2026

Alternatives to pyOCD

Every alternative, ranked