Pi CM5 and IO board RoadTest

View table of contents ...  

RoadTest: Test out the Raspberry Pi Compute Module 5 Development Kit!

Author: Fred27

Creation date:

Evaluation Type: Development Boards & Tools

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: BigTreeTech CB1 / CB2

What were the biggest problems encountered?: Documentation was a little harder to find than I expected.

Detailed Review:

What will this RoadTest cover?

This RoadfTest is not intended to be a details investigation into the specs of the CM5. That information is readily available in datasheets - and anyway the answer is "much like a Pi 5". What I intend to do is answer the following questions:

  • What are the Compute Module 5 and the IO board?
  • Are they easy to work with?
  • Are they suitable for anything I might have planned?
  • If I've already got a Compute Module 4 should I be looking at the CM5 (and will I need a new IO board too)?

What's in the Compute Module 5 development kit?

image

The main 2 components of the "Raspberry Pi Development Kit for Compute Module 5" are a Compute Module 5 with 4GB RAM, 32GB eMMC flash and a Bluetooth/WiFi, and an IO board to which the Compute Module can be attached. It also includes a power supply (which should be appropriate for the country where it's ordered), a heatsink, a wireless antenna, a USB cable, and 2 HDMI cables.

There's almost everything you need to get started. The only tiny thing that's not included is a tiny jumper which you'll need to allow you to flash the eMMC on the Compute Module. Also, I personally feel the HDMI cables are probably the sort of thing you'd have anyway so don't really feel an essential part of the kit..

What's the Pi Compute Module for?

So, I expect everyone on E14 will be familiar with the Raspberry Pi. Fewer people will know about or have seen a Raspberry Pi Compute Module. It's a slightly more niche product but fills a useful gap. So, what is a Compute Module and is one right for your project?

Most Linux SBC projects start out as an idea, maybe a Raspberry Pi, some peripherals, and a mess of jumper wires. This is a great start and a good way to quickly test out your idea. If it's a one-off hobby project. This may also be where things finish. Nothing wrong with that at all. I'm sure we all have a few of these.

If you want to smarten things up a bit or need to make a few, then perhaps your prototype may progress to the "I'll design a PCB for a Pi Hat" stage. Nice! Now it's looking a bit more professional. Once again, this may be exactly the right fit for your polished project or small production run. Here's a simple example of a Pi Hat I created recently.

So, how about if you're producing a retail product that you expect people to part with their hard-earned cash for? There is always the option to spin up a PCB and create your own Raspberry Pi variant from scratch. A very nice solution, but it's quite a leap from that Hat. You're likely looking at a minimum of a 6-layer board. You'll be using BGA chips. Track lengths for the high-speed signals between the CPU and RAM will be critical. You're totally swimming in the deep end now. This is a far more complex prospect that probably means it's your full-time job or your new start-up.

So, what if there was something that bridged the gap between the Hat and the full-on custom SBC. No surprises for guessing that this is where the Raspberry Pi Compute Module comes in.

One commercial example that I have experience with is the BigTreeTech Manta board. Its has integrated Stepper Drivers and is intended to control a 3D printer and run Klipper. Klipper would normally be run on a separate Raspberry Pi, so when they decided to integrate the two, a Compute Module was a neater solution. BigTreeTech also made their own lower spec'd equivalents of the Compute Module and a board that (IMHO rather pointlessly) expands a Compute Module back to a Pi 4 form factor.

image

What's the Compute Module?

It's been around for a while and has taken a few form factors, but this Road test is all about the Pi 5 variant of the Compute Module. Imagine all the trickiest bits of designing an SBC have been done for you. The Broadcom SoC is there. The RAM and (optional) eMMC are there. If you need them, then the Wi-Fi and Bluetooth - including all the certification required - are there.

The slightly more manageable parts are left to you. There's no 40-pin GPIO header. There are no USB or Ethernet sockets. There's no HDMI or any other display connection. What you do have though is access to 200 pins spread across 2 fine-pitch connectors so that you can add any of this that suits your needs, and whatever else you want too. The custom SBC is now an attainable dream because you've had a helping hand with the toughest bits.

Much like its full-size brother, when selecting a Compute Module you have a number of options. You can pick 2,4,8, or 16GB of RAM. You can have 16, 32, or 64GB of onboard eMMC, or you can chose no eMMC at all and have to supply storage (such as a microSD card) yourself. You can also elect to have wireless support or leave it off.

Installing the CM5 on the IO board

The first thing you'll want to do is install the Compute Module on the IO Board, as the Compute Module can't be used on its own. It's not like a Pocket Beagle 2 that is a smaller but complete SBC. The end goal of a Compute Module may be to be installed on a custom board, but to get started you'll almost certainly install it on the IO board to load up the OS and do some testing.

The earlier incarnation - the CM4 and the CM4 IO board - were slightly simpler to get started with. You took the SM4, carefully lined up the fine pitch connectors and clicked it into place. The CM5 is slightly trickier because like its bigger sibling the Pi 5, it needs some cooling. You'll first need to add the Raspberry Pi Cooler (i.e. heatsink) which strangely needs to be connected using screws that go through the IO board. As the IO board is screwed to its metal case, you'll also have to remove this first.

There is documentation at https://www.raspberrypi.com/products/cooler/ and this is reasonably clear, apart from the fact that there are two lengths of plastic spacer - 1.5mm and 3mm - and you re supposed to use one or the other. I'm not sure exactly what the 3mm spacers are for, but I can assure you that the 1.5mm spacers are the right ones. Installing the spacers is particularly awkward, as you have to click the CM5 (with heatsink) onto the IO board and then slider the spacer in to a gap where it only just fits whilst inserting the screw.

image image

So, with the 4 screws holing the case together, the 4 screws securing the IO board to the case and the 4 screws holding the heatsink, CM5 and IO board together, that 12 tiny screws you need to undo and redo to mount the CM5!

Now that your cooled CM5 is installed on the IO board you can plug it in and get… absolutely nothing. As with a Pi, you'll need to install and OS. Unlike the Pi, you don't just do this with a micro-SD card.

Installing an OS

 

OK, so make sure you attach the jumper (oddly not supplied) to a header on the IO board so that you can install an OS. You didn't screw the case back together, did you? Undo those screws again and install that jumper!

There's one more step before you can use Pi Imager to write an OS to your CM5. You need to download, install and run rpiboot. This makes the CM5 (or other Pi boards) appear as a mass storage device so that Pi Imager can access it. From this point, the imaging process is familiar from the usual micro-SD writing process.

Once this is done, remove that jumper from the IO board. You didn't do those screws up, did you?

Once all this is done, the CM5 and IO board will boot. If you didn't look at the hardware, you'd feel you were using a standard Pi 5.

What is the IO board for?

So, if the Compute Module is intended to be embedded in your own custom version of the IO board, what is the IO board for? The answer is that it's more of a tool than a product.

image

Firstly, it lets you host the Compute Module and verify the software side of your design. Provided your design isn't too far from the basics, it can let you verify your software on a known good platform. However, in most cases you'll get as much verification from testing on a regular Pi 5 than you will on a CM5 with an IO board.

Secondly, it will provide enough connectivity let you load an OS image onto the Compute Module. When used for this purpose, the bolt-through heatsink rather gets in the way. I'm guessing that if you're just working your way through flashing a batch of Compute Modules then they will be just fine without any cooling. Best not to do any stress testing though!

However, if you are working with a large production run, then a more appropriate product has just been released - the Compute Module 5 Programming Jig. This product is not part of the RoadTest but is worth a mention. This is a full solution to rapidly program a CM5 and more on to the next. No bolting on heatsinks, it's pogo pins all the way. It's a standalone system that doesn't even require a PC. (I suspect there's something resembling a Raspberry Pi in there doing the work.)

Lastly, and perhaps most importantly, the IO board provides some inspiration for your own design. If you want Ethernet, HDMI, USB, etc. as part of your design then you'd be wise to borrow from the IO board's design files. Anything completely custom is of course up to you, but at least you've had as much help as possible!

Previous iterations

The Compute Modules have gone through some revisions over the years. It all started with the CM3 - a Raspberry Pi 3B in the unusual format of a DDR2 SODIMM module. I'm guessing that this misuse of a connector was down to the availability of a cheap fine pitch connector, but I must admit I find it a little reckless. There was of course an IO board to go with this.

Then came the CM3 and CM3+ in the same form factor with a slightly updated IO board that would also take the CM1.

After this was the CM4 and CM4 IO board which takes the same form factor as the CM5 and CM5 IO board. More on this later…

image

Then came the rather out-of-step CM4S which is a CM4 in the same SODIMM outline as the earlier modules. This seemed to be to allow more computing power to be added to existing designs based around the earlier form factor. It's an odd one but shows that Raspberry Pi doesn't abandon older versions of their products. You can still by a Raspberry Pi 1 B+ today.

Interoperability between the CM4 and CM5

There has been a significant upgrade of the SoC between the CM4 and CM5, and the addition of the RP1 I/O processor. However, changes between their respective IO boards have been minimal. This made me wonder if you were moving from the CM4 to the CM5, could you get by with using your existing CM4 IO board. Let's find out. It may not be obvious, but in this photo the Compute Modules and IO boards have been swapped. the CM5 is on the IO board for the CM4 and vice versa.

image

Visually, there are some obvious differences between versions 4 and 5 of the IO board. These are mostly to support features that the CM5 (and Pi 5) have over their previous iterations. There's the M.2 connector on the right-hand side of the IO5 where the IO4 has a PCIe connector. The USB connectors are now USB3. There's the new metal case with cooling fan for the IO5. The IO4 never had an official case, although there were some aftermarket ones. The IO5 also combined the MIPI display and camera ports so reduced these from 4 down to 2.

The most optimistic outcome for swapping the Compute Modules and their IO board would be that the shared functionality would work. I wouldn't expect the PCIe or M.2 connectors to be any use, and I would expect USB to be capped at USB2.0.

The first thing I tried was putting a ready-flashed CM5 on the IO4 board. This seemed to work fine. There was HDMI output, I could connect over Ethernet and the USB ports worked - with basic peripherals such as a keyboard and mouse at least.

However, things didn't work so well when trying to use the IO4 board for its other purpose - flashing a new OS. Despite making sure I followed the same process I used for flashing a CM4, rpiboot could not detect the CM5 and expose its eMMC for flashing.

image

The process was even less successful when putting a working CM4 on the IO5 board. I powered it up using the power supply provided and got nothing at all. No power LED. No network activity. No HDMI output. These seem completely incompatible. On the plus side, once the CM4 was returned to the IO4 it still worked. Nothing had been damaged.

Summary

So, it's time to answer my original questions.

Is the Compute Module development kit easy to work with? With a couple of caveats - yes. The process to flash the OS is not obvious, but once you've looked at the documentation it's OK. The way the heatsink is attached means that you can't swap diferent modules quickly for programming. However, the heatsink isn't really needed if you're just flashing an image, and if you're flashing a lot of devices then perhaps the Programming Jig is for you. If you have one CM5 semi-permanantly attached to you IO board for developing code, etc. then getting the heatsink on is not going to cause you a problem.

Is it suitable for anything you might have planned? Well, that's up to you. If you have a project that isn't well served by sticking a hat on a standard Raspberry Pi then it's just the thing.

If I have a CM4 then do I need the CM5 (and a new IO board). If your project would benefit from a Pi 5 over a Pi 4 then "yes" to both. Like the regular Pi 5 the performance gains come at the cost of heat. For manay cases a Pi 4 is a more sensible choice ands the same applies to the Compute Modules. The Pi 5 is better, but do you need it? If you do decide to go for a CM5 then I'd say you definitely need the matching IO board. The fact that you can't flash the OS onto a CM5 without the matching IO board is the killer.

Anonymous