Skip to main content

Raspberry Pi CM5 Boot Image eMMC
Problems installing System Software

Introduction Problem

For a new project, we decided to use the Raspberry Pi Compute Module 5 (CM5) as our hardware platform.

I received a development kit consisting of:

  • Compute Module 5 (4 GB RAM and 32 GB eMMC)
  • 27W USB-C Type-C PD Power Supply
  • Compute Module 5 IO Board
  • Antenna Kit
  • Compute Module 5 IO Case
  • 2 x HDMI® to HDMI® Cable
  • Cooler for Compute Module 5
  • USB-A to USB-C Cable.

Compute Module 5 IO Case

Goal

To simplify development, I wanted to run the system software (raspiOS) from a microSD card, since the Compute Module 5 IO Board includes a microSD card slot.

I used Raspberry Pi Imager to flash the latest Raspberry Pi OS onto a microSD card, inserted the card into the slot on the IO board, and powered on the system.

However, instead of booting into the OS, the display showed a terminal-like message saying “SD: card not detected”, and the system did not boot.

Cause and effect

After some research, I found the explanation in the Raspberry Pi documentation for the Compute Module 5:

  • microSD card slot (only for use with Lite variants with no eMMC; other variants ignore the slot)

This means that the microSD slot is only usable on the “Lite” variant, which does not include onboard eMMC storage. My CM5 has 32 GB eMMC, so the SD slot is disabled and ignored during boot.

Correct Way to Install System Software on CM5 with eMMC

To install the operating system on a CM5 with eMMC, follow the official instructions for setting up the IO Board.

A crucial step is to place a jumper on the J2 header on the IO board. This puts the CM5 into USB boot mode, allowing your host PC to access the eMMC like a mass-storage device.

Compute Module 5 IO Board

Issue with rpiboot and the Solution

On my development machine (Ubuntu 22.04), I initially tried installing rpiboot with:

sudo apt install rpiboot

However, this version didn’t work properly—likely due to it being outdated or incompatible with CM5.

Instead, I had to build rpiboot from source. Follow the steps here:

Clone the official repository:

git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot

Install dependencies and build:

sudo apt install git libusb-1.0-0-dev pkg-config build-essential
make

Run rpiboot

with the CM5 connected and the J2 jumper in place:

sudo ./rpiboot -d mass-storage-gadget64

The system will detect the CM5’s eMMC, and you can now flash the OS onto it using Raspberry Pi Imager or dd.

Summary

  • The CM5 SD slot only works on Lite (no eMMC) variants.
  • To flash a CM5 with eMMC, you must:
    ** Set the J2 jumper.
    ** Use rpiboot to expose the eMMC over USB.
  • If the packaged rpiboot doesn’t work, build it from source.

Once that’s done, you can flash Raspberry Pi OS directly onto the eMMC as if it were an SD card.