--- id: pyocd version: "0.45.1" license: Apache 2.0 license_treatment: permissive maintenance: active --- # pyocd — Cortex-M debugger for Python License: permissive · Maintenance: active · Downloads: 1.4M/mo ## What it is and what it does pyOCD is a cross-platform Python tool and library for programming and debugging Arm Cortex-M microcontrollers using a wide range of debug probes. It provides both a command-line interface with subcommands for common tasks (gdbserver, load, erase, reset, rtt, etc.) and a Python API for custom control and automation. The tool supports more than 70 popular MCUs natively and can extend support through CMSIS Device Family Packs to cover nearly every Cortex-M device on the market. The package is built on 17 runtime dependencies including capstone for disassembly, hidapi and pyusb for USB communication, pyelftools for ELF parsing, and cmsis-pack-manager for device pack handling. It offers memory read/write, register access, breakpoint and watchpoint management, flash programming, binary/hex/ELF file loading, SWO/SWV support, and CoreSight DP/AP access. Configuration is supported through config files, user scripts, and direct API use, making it suitable for both interactive debugging and CI/CD test automation. Use it for: - Debug Arm Cortex-M firmware interactively using gdb via the gdbserver subcommand with GUI debugger support. - Automate flash programming and testing in CI pipelines by loading binaries and controlling device execution via the Python API. - Stream Segger RTT I/O from any supported debug probe without needing vendor-specific tools. - Inspect and modify MCU memory and registers in real time using the commander interactive REPL. - Program multiple MCU variants by managing CMSIS Device Family Packs for devices without built-in support. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. pyOCD is a Python-based debugger and programmer for Arm Cortex-M microcontrollers that works with many debug probes across Linux, macOS, Windows, and FreeBSD. Yes. pyOCD is actively maintained, has low install friction, carries no security vulnerabilities, and is licensed permissively. It is the right choice if you need a Python-native, cross-platform debugger for Cortex-M development or CI automation. The only prerequisite is a supported debug probe and libusb; if you have those, installation and basic use are straightforward. ## Install pip install pyocd uv add pyocd poetry add pyocd ## Installing pyocd Before you install: Low install friction with a pure-Python wheel and 17 runtime dependencies that are widely available. Active maintenance with a release 24 days ago and ongoing repository activity. License in practice: Apache 2.0 is permissive, allowing commercial and private use without restriction or copyleft obligation. Quickstart: pip install pyocd from pyocd.core.target import Target from pyocd.probe.pydaplink import DAPLink probe = DAPLink.get_connected_probes()[0] target = Target(probe.create_target()) target.halt() memory = target.read_memory(0x0, 4) target.resume() Requires libusb and a supported debug probe (CMSIS-DAP, J-Link, STLink, etc.) connected via USB. Python 3.9.0 or later required. Verify before relying: - Whether the 70+ built-in MCU support claim is current or if that list has grown since v0.45.1. - Specific performance characteristics when handling large binary or ELF files during flash programming. - Compatibility matrix detail for all listed debug probes across different OS versions. ## Package facts - License: Apache 2.0 (permissive) - Python support: supports_current - Install friction: low - Maintenance: active - Downloads: 1.4M/month (top 5,000 on PyPI) - Known vulnerabilities: none known ## Tags arm cortex-m debugger, microcontroller programming tool, gdb remote server for embedded, flash programming python, debug probe interface, embedded systems debugging, cmsis-dap debugger, embedded-systems, arm-cortex, gdb-compatible [View on SkillFed](https://skillfed.io/packages/pyocd) · [View on PyPI](https://pypi.org/project/pyocd/)