Raspberry Pi Compute Module 3: Powerful Embedded Computing
A compact, industrial-grade module offering Raspberry Pi 3 performance for custom embedded designs.

The Raspberry Pi Compute Module 3 (CM3) is a versatile, SODIMM-form-factor system-on-module (SoM) designed for embedding the power of a Raspberry Pi into custom hardware. Unlike the familiar credit-card-sized Raspberry Pi boards, the CM3 is intended to be integrated onto a carrier board, which provides the necessary connectors and peripherals for interaction. This approach allows engineers and makers to design compact, specialized products while leveraging the extensive software ecosystem and processing power of the Raspberry Pi.
At its core, the CM3 utilizes the Broadcom BCM2837 System-on-Chip (SoC), the same powerful processor found in the popular Raspberry Pi 3 Model B. This quad-core 64-bit ARM Cortex-A53 processor, clocked at 1.2GHz, provides ample computational resources for demanding tasks, making the CM3 suitable for applications ranging from industrial control and IoT gateways to advanced robotics and multimedia systems. It represents a significant step up in performance from earlier Compute Modules.
Released in early 2017, the CM3 sits between the original Compute Module and the later Compute Module 4 in Raspberry Pi's product line. It was designed to offer a more powerful and flexible alternative for developers who needed more processing power than the original CM1 but didn't require the extensive I/O of the full Raspberry Pi 3 board. Its SODIMM form factor is reminiscent of laptop RAM modules, facilitating easy integration into custom PCBs. This makes it an excellent choice for projects requiring a robust, embedded Linux environment in a small footprint.
The CM3 is particularly well-suited for makers and embedded engineers looking to create production-ready devices or advanced prototypes where space is constrained and a full Raspberry Pi board is impractical. Its industrial design and reliance on a carrier board make it ideal for long-term deployment in embedded systems. While it requires a bit more effort to set up than a standard Raspberry Pi due to the need for a carrier board, the flexibility and power it offers are invaluable for serious embedded projects.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | Broadcom BCM2837 |
| Architecture | Quad-core 64-bit ARM Cortex-A53 |
| Clock speed | 1.2GHz |
| Flash / Storage | On-board eMMC flash memory (available in 8GB and 16GB variants for CM3+, CM3 has no on-board eMMC, relies on SD card via carrier board) |
| RAM / SRAM | 1GB LPDDR2 SDRAM |
| Operating voltage | 3.3V |
| Digital I/O pins | Up to 54 GPIO pins (depending on carrier board implementation) |
| Analog / ADC | โ |
| PWM | Yes (via GPIO) |
| Connectivity | Gigabit Ethernet (via carrier board), Wi-Fi and Bluetooth (via external module on carrier board) |
| USB | USB 2.0 (via carrier board) |
| Power input | Typically 5V via carrier board |
| Dimensions | 67.6mm x 31.3mm (SODIMM form factor) |
Pinout & pin functions
| Pin | Function |
|---|---|
| VCC (3.3V) | Power supply input |
| 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 |
| GPIO11 | General Purpose Input/Output 11 |
| GPIO12 | General Purpose Input/Output 12 |
| GPIO13 | General Purpose Input/Output 13 |
| 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 (PWM0) |
| 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 |
| SPI MOSI | SPI Master Out Slave In |
| SPI MISO | SPI Master In Slave Out |
| SPI SCLK | SPI Clock |
| SPI CE0 | SPI Chip Enable 0 |
| SPI CE1 | SPI Chip Enable 1 |
| I2C SCL | I2C Clock |
| I2C SDA | I2C Data |
| UART1 TX | UART1 Transmit |
| UART1 RX | UART1 Receive |
| RUN | System reset pin |
| SD_CMD | SD Card Command |
| SD_DATA0 | SD Card Data 0 |
| SD_DATA1 | SD Card Data 1 |
| SD_DATA2 | SD Card Data 2 |
| SD_DATA3 | SD Card Data 3 |
| SD_CLK | SD Card Clock |
Wiring & circuit basics
Powering the Compute Module 3 requires a stable 5V supply, typically provided by a carrier board. The CM3 itself operates at 3.3V logic levels, so any external components connected to its GPIO pins must also be compatible or use level shifting. It's crucial to ensure the power supply can provide sufficient current for the CM3 and any attached peripherals; a common recommendation is at least 2.5A for the 5V rail to handle peak loads. Incorrect voltage or unstable power can lead to erratic behavior or permanent damage.
The Compute Module 3 exposes a rich set of GPIO pins, alongside dedicated interfaces like I2C, SPI, and UART. For instance, to blink an LED, you would connect an LED (with an appropriate current-limiting resistor, typically 220-330 ohms) between a chosen GPIO pin (e.g., GPIO17) and ground. The GPIO pin would be configured as an output in software, toggled high to turn the LED on and low to turn it off. This simple setup demonstrates the fundamental interaction with digital outputs.
Connecting an I2C sensor, such as a BME280 environmental sensor, involves wiring its SDA pin to the CM3's I2C SDA pin (e.g., GPIO2) and its SCL pin to the CM3's I2C SCL pin (e.g., GPIO3). The sensor also requires VCC (3.3V) and GND connections. The CM3's I2C interface can then be used to communicate with the sensor to read temperature, humidity, and pressure data. Always consult the datasheets for both the CM3's carrier board and the peripheral device for correct pin assignments and voltage requirements.
Programming & getting started
The Raspberry Pi Compute Module 3 primarily runs embedded Linux distributions, most commonly Raspberry Pi OS (formerly Raspbian). This allows for a wide range of programming languages and tools, including Python (with libraries like RPi.GPIO or gpiozero), C/C++ (using the WiringPi library or direct system calls), and Node.js. For flashing the operating system and applications, you typically need a carrier board with an SD card slot or eMMC interface. The initial setup involves preparing an SD card with Raspberry Pi OS using tools like Raspberry Pi Imager, inserting it into the carrier board, and powering on the CM3.
For more bare-metal or real-time applications, developers might consider using frameworks like Zephyr RTOS or even attempting to port MicroPython, although this is significantly more complex than on dedicated microcontroller boards. The standard approach for most makers and embedded engineers is to develop applications on a running Raspberry Pi OS instance on the CM3, leveraging its full Linux capabilities. Remote access via SSH is common for development and deployment.