Raspberry Pi Compute Module 5: Powerful Embedded Computing for Makers
The Raspberry Pi Compute Module 5 offers the immense processing power of the Raspberry Pi 5 in a compact, SODIMM-style form factor for custom embedded designs.

The Raspberry Pi Compute Module 5 (CM5) represents a significant leap in embedded processing power, bringing the capabilities of the flagship Raspberry Pi 5 to a versatile module designed for integration into custom hardware. Unlike its single-board computer (SBC) siblings, the CM5 lacks built-in connectors for peripherals like USB, HDMI, or Ethernet. Instead, it exposes its extensive I/O through a high-density 200-pin interface connector, making it ideal for industrial applications, custom IoT devices, and advanced maker projects where space is constrained or a specific form factor is required.
At the heart of the CM5 is the Broadcom BCM2712 System-on-Chip (SoC). This powerful 64-bit quad-core Arm Cortex-A76 processor, clocked at a remarkable 2.4GHz, provides a substantial upgrade over previous compute modules, enabling complex computations, advanced machine learning inference, and high-throughput data processing. Paired with options for 4GB, 8GB, or even 16GB of LPDDR4X RAM, the CM5 is capable of handling demanding tasks that were previously out of reach for many embedded platforms. This makes it an excellent choice for developers looking to build sophisticated, standalone systems.
The Compute Module 5 continues the legacy of the Raspberry Pi family by offering a robust and accessible platform for innovation. While previous compute modules were often paired with Raspberry Pi OS, the CM5's immense processing power and extensive I/O make it suitable for a wider range of operating systems and bare-metal development. It targets experienced makers, embedded engineers, and students undertaking advanced projects who require significant computational resources and the flexibility to design their own carrier boards. Its design prioritizes flexibility and integration, moving beyond the typical hobbyist board to a component for serious product development.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | Broadcom BCM2712 |
| Architecture | 64-bit Quad-core Arm Cortex-A76 |
| Clock speed | 2.4GHz |
| Flash / Storage | External (via SD card or eMMC on carrier board) |
| RAM / SRAM | 4GB, 8GB, or 16GB LPDDR4X-4267 SDRAM |
| Operating voltage | 3.3V (core logic) |
| Digital I/O pins | Up to 100 configurable GPIO via 200-pin connector |
| Analog / ADC | โ |
| PWM | Up to 16 PWM channels |
| Connectivity | Gigabit Ethernet (via carrier board), Wi-Fi 5 (802.11ac), Bluetooth 5.0 / BLE |
| USB | USB 3.0 (via carrier board), USB 2.0 (via carrier board) |
| Power input | Typically 5V DC via carrier board (requires adequate current) |
| Dimensions | 67.6mm x 30.5mm (SODIMM form factor) |
Pinout & pin functions
| Pin | Function |
|---|---|
| VCC (3V3) | 3.3V Power Output |
| GND | Ground |
| GPIO0 | General Purpose Input/Output 0 |
| GPIO1 | General Purpose Input/Output 1 |
| GPIO2 | General Purpose Input/Output 2 |
| GPIO3 | General Purpose Input/Output 3 |
| GPIO4 | General Purpose Input/Output 4 |
| GPIO5 | General Purpose Input/Output 5 |
| GPIO6 | General Purpose Input/Output 6 |
| GPIO7 | General Purpose Input/Output 7 |
| GPIO8 | General Purpose Input/Output 8 |
| GPIO9 | General Purpose Input/Output 9 |
| GPIO10 | General Purpose Input/Output 10 (SPI MOSI) |
| GPIO11 | General Purpose Input/Output 11 (SPI SCLK) |
| GPIO12 | General Purpose Input/Output 12 |
| GPIO13 | General Purpose Input/Output 13 (SPI MISO) |
| GPIO14 | General Purpose Input/Output 14 (UART0 TX) |
| GPIO15 | General Purpose Input/Output 15 (UART0 RX) |
| GPIO16 | General Purpose Input/Output 16 |
| GPIO17 | General Purpose Input/Output 17 |
| GPIO18 | General Purpose Input/Output 18 |
| GPIO19 | General Purpose Input/Output 19 |
| GPIO20 | General Purpose Input/Output 20 |
| GPIO21 | General Purpose Input/Output 21 |
| GPIO22 | General Purpose Input/Output 22 |
| GPIO23 | General Purpose Input/Output 23 |
| GPIO24 | General Purpose Input/Output 24 |
| GPIO25 | General Purpose Input/Output 25 |
| GPIO26 | General Purpose Input/Output 26 |
| GPIO27 | General Purpose Input/Output 27 |
| GPIO28 | General Purpose Input/Output 28 |
| GPIO29 | General Purpose Input/Output 29 |
| GPIO30 | General Purpose Input/Output 30 |
| GPIO31 | General Purpose Input/Output 31 |
| GPIO32 | General Purpose Input/Output 32 |
| GPIO33 | General Purpose Input/Output 33 |
| GPIO34 | General Purpose Input/Output 34 |
| GPIO35 | General Purpose Input/Output 35 |
| GPIO36 | General Purpose Input/Output 36 |
| GPIO37 | General Purpose Input/Output 37 |
| GPIO38 | General Purpose Input/Output 38 |
| GPIO39 | General Purpose Input/Output 39 |
| GPIO40 | General Purpose Input/Output 40 |
| GPIO41 | General Purpose Input/Output 41 |
| GPIO42 | General Purpose Input/Output 42 |
| GPIO43 | General Purpose Input/Output 43 |
| GPIO44 | General Purpose Input/Output 44 |
| GPIO45 | General Purpose Input/Output 45 |
| GPIO46 | General Purpose Input/Output 46 |
| GPIO47 | General Purpose Input/Output 47 |
| GPIO48 | General Purpose Input/Output 48 |
| GPIO49 | General Purpose Input/Output 49 |
| GPIO50 | General Purpose Input/Output 50 |
| GPIO51 | General Purpose Input/Output 51 |
| GPIO52 | General Purpose Input/Output 52 |
| GPIO53 | General Purpose Input/Output 53 |
| I2C0_SDA | I2C Bus 0 Data |
| I2C0_SCL | I2C Bus 0 Clock |
| I2C1_SDA | I2C Bus 1 Data |
| I2C1_SCL | I2C Bus 1 Clock |
| SPI0_CE0 | SPI Bus 0 Chip Enable 0 |
| SPI0_CE1 | SPI Bus 0 Chip Enable 1 |
| SPI0_MOSI | SPI Bus 0 Master Out Slave In |
| SPI0_MISO | SPI Bus 0 Master In Slave Out |
| SPI0_SCLK | SPI Bus 0 Serial Clock |
| UART1_TX | UART Bus 1 Transmit |
| UART1_RX | UART Bus 1 Receive |
| PWM0 | Pulse Width Modulation Channel 0 |
| PWM1 | Pulse Width Modulation Channel 1 |
| RUN | System Run Control |
| PGOOD | Power Good Indicator |
| VSYS | System Power Input (via carrier board) |
Wiring & circuit basics
Powering the Compute Module 5 requires a stable and sufficient power supply connected to the carrier board. The CM5 itself operates on 3.3V logic, but the carrier board typically handles the voltage conversion from a higher input, commonly 5V DC, to the necessary rails. It is crucial to provide a power supply that can deliver adequate current, especially under heavy load, to prevent brownouts and ensure stable operation. Always consult the carrier board's documentation for specific power input requirements and recommended power supplies. Incorrect power can lead to unpredictable behavior or damage.
The Compute Module 5 uses 3.3V logic levels for its GPIO pins. This means that when interfacing with external components, you must ensure compatibility. Connecting a 5V device directly to a 3.3V GPIO pin can damage the CM5. For components operating at 5V, a logic level shifter is necessary to translate the voltage levels safely. Conversely, 3.3V components are generally safe to connect to the CM5's GPIOs. Always verify the voltage requirements of your sensors, actuators, and other peripherals before connecting them.
A common beginner project involves blinking an LED. To do this, connect a GPIO pin (e.g., GPIO17) to one end of a current-limiting resistor (e.g., 220-330 Ohms). Connect the other end of the resistor to the anode (longer leg) of an LED. Connect the cathode (shorter leg) of the LED to a GND pin. When the GPIO pin is set to HIGH (3.3V), current flows through the resistor and LED, illuminating it. Setting the pin to LOW (0V) turns the LED off. This simple circuit demonstrates basic digital output and current limiting.
Programming & getting started
The Compute Module 5, being a powerful embedded processor, can be programmed using various tools. For embedded Linux development, Raspberry Pi OS is the primary choice, offering a familiar desktop environment and extensive libraries. Developers can use languages like Python, C++, or Node.js within Raspberry Pi OS. For bare-metal or real-time applications, the Raspberry Pi Pico SDK (though primarily for RP2040, principles apply) or specialized RTOS frameworks can be adapted. PlatformIO, an open-source ecosystem for IoT development, also supports the CM5, providing a unified framework for managing libraries, build systems, and device debugging across different IDEs like VS Code.
To upload your first program, assuming you are using Raspberry Pi OS on a carrier board with storage (like an SD card or eMMC), you would typically SSH into the CM5 or use a monitor and keyboard connected to the carrier board. For a simple Python script to blink an LED connected to GPIO17, you would write the script using a text editor, save it (e.g., as `blink.py`), and then run it from the terminal using `python3 blink.py`. The `RPi.GPIO` library is commonly used for GPIO control in Python. For more complex projects or bare-metal development, flashing might involve using tools like `dd` or specialized bootloaders depending on the carrier board and desired firmware.