Designing the Raspberry Pi Compute Module 4

Raspberry Pi Compute Module 4 designer Dominic Plunkett was kind enough to let us sit him down for a talk with Eben, before writing up his experience of bringing our latest board to life for today’s blog post. Enjoy.

When I joined Raspberry Pi, James, Eben and Gordon already had some ideas on the features they would like to see on the new Compute Module 4, and it was down to me to take these ideas and turn them into a product. Many people think design is a nice linear process: ideas, schematics, PCB, and then final product. In the real world the design process isn’t like this, and to get the best designs I often try something and iterate around the design loop to get the best possible solution within the constraints.

Form factor change

Previous Compute Modules were all in a 200-pin SODIMM form factor, but two important considerations pushed us to think about moving to a different form factor: the need to expose useful interfaces of the BCM2711 that are not present in earlier SoCs, and the desire to add extra components, which meant we needed to route tracks differently to make space on the PCB for the additional parts.

Breaking out BCM2711’s high-speed interfaces

We knew we wanted to get the extra features of the BCM2711 out to the connector so that users could make use of them in their products. High-speed interfaces like PCIe and HDMI are so fast coming out of the BCM2711 that they need special IO pins that can’t also support GPIO: if we were to change the functionality of a GPIO pin to one of the new high-speed signals, this would break backwards compatibility.

We could consider adding some sort of multiplexer to swap between old and new functionality, but this would cost space on the PCB, as well as reducing the integrity of the fast signals. This consideration alone drives the design to a new pinout. We could have tried to use one of the SODIMM connectors with extra pins; while this would give a board with similar dimensions to the existing Compute Modules, it too would break compatibility.

Compute Module 4 mounted on the IO Board
Compute Module 4 mounted on the IO Board

PCB space for additional components

We also wanted to add extra items to the PCB, so PCB space to put the additional parts was an important consideration. If you look carefully at a Compute Module 3 you can see a lot of tracks carrying signals from one side of the SoC to the pins on the edge connector. These tracks take up valuable PCB space, preventing components being fitted there. We could add extra PCB layers to move these tracks from an outer layer to an inner layer, but these extra layers add to the cost of the product.

This was one of the main drivers in changing to having two connectors on different edges of the board: doing so saves having to route tracks all the way across the PCB. So we arrived at a design that incorporated a rough split of which signals were going to end up on each of the connectors. The exact order of the signals wasn’t yet defined.

Trial PCB layouts

We experimented with trial PCB layouts for the Compute Module 4 and the CM4 IO Board to see how easy it would be to route the signals; even at this stage, the final size of the CM4 hadn’t been fixed. Over time, and after juggling parts around the PCB, I came to a sensible compromise. There were lots of things to consider, including the fact that the taller components had to go on the top side of the PCB.

The pinout was constantly being adjusted to an ordering that was a good compromise for both the CM4 and the IO Board. The IO Board layout was a really important consideration: after we made the first prototype boards, we decided to change the pinout slightly to make PCB layout on the IO Board even easier for the end user.

When the prototype Compute Module 4 IO Boards arrived back from manufacture, the connectors hadn’t arrived in time to be assembled by machine, so I fitted them by hand in the lab. Pro tip: if you have to fit connectors by hand, take your time to ensure they are lined up correctly, and use lots of flux to help the solder flow into the joints. Sometimes people use very small soldering iron tips thinking it will help; in fact, one of the goals of soldering is to get heat into the joint, and if the tip is too small it will be difficult to heat the solder joint sufficiently to make a good connection.

Compute Module 4 IO Board

New features

Whilst it was easy to add some headline features like a second HDMI port, other useful features don’t grab as much attention. One example is that we have simplified the powering requirements. Previous Compute Modules required multiple PSUs to power a board, and the power-up sequence had to be exactly correct. Compute Module 4 simply requires a single +5V PSU.

In fact, the simplest possible base board for Compute Module 4 just requires a +5V supply and one of the connectors and nothing else. You would need a CM4 variant with eMMC and wireless connectivity; you can boot the module with the eMMC, wireless connectivity gives you networking, and Bluetooth connectivity gives you access to IO devices. If you do add extra IO devices the CM4 also can provide a +3.3V supply to power those devices, avoiding the need for an external power supply.

We have seen some customers experience issues with adding wireless interfaces to previous Compute Modules, so a really important requirement was to provide the option of wireless support. We wanted to be as flexible as possible, so we have added support for an external antenna. Because radio certification can be a very hard and expensive process, we have a pre-certified external antenna kit that can be supplied with Compute Module 4. This should greatly simplify product certification for end products, although engineering designers should check to make certain of meeting all local requirements.

Antenna Kit and Compute Module 4

PCIe

This is probably the most exciting new interface to come to Compute Module 4. On the existing Raspberry Pi 4, this interface is used internally to add the XHCI controller which provides the USB 3 ports. By providing the PCIe externally, we are giving end users the choice of how they would like to use this interface. Many applications don’t need USB 3 performance, so the end user can make use of it in other ways — for NVMe drives, to take one example.

Ethernet

In order to have wired Ethernet connectivity with previous Compute Modules, you needed to add an external USB-to-Ethernet interface. This adds complexity to the IO board, and one of the aims of the new Compute Module 4 is to make interfacing to it simple. With this in mind, we added a physical Ethernet interface to CM4, and we also took the opportunity to add support for IEEE1588 to this. As a result, adding Gigabit wired networking to CM4 requires only the addition of a magjack; no extra silicon is needed. Because this is a true Gigabit interface, it is also faster than the USB-to-Ethernet interfaces that previous Compute Modules use.

Raspberry Pi Compute Module 4

Open-sourcing the Compute Module 4 IO Board design files

Early on in the process, we decided that we were going to open-source the design files for the Compute Module 4 IO Board. We used our big expensive CAD system for Compute Module 4 itself, and while we could have decided to do the design for the IO Board in the big CAD system too and then port it across to KiCAD, it’s easy to introduce issues in the porting process.

So, instead, we used KiCAD for the IO Board from the start, and the design files that come out of KiCAD are the same ones that we use in manufacture. During development I had both CAD systems running at the same time on the computer.

Easier integration and enhanced possibilities

We have made some big changes to our new Compute Module 4 range, and these should make integration much simpler for our customers. Many interfaces now just need a connector and power, and the new form factor should enable people to design more compact and more powerful products. I look forward to seeing what our customers create over the next few years with Compute Module 4.

High-density connector on board underside

Get your Compute Module 4

The new Raspberry Pi Compute Module 4 is available from our network of Approved Resellers. Head over to the Compute Module 4 product page and select your preferred variant to find your nearest reseller.

Can’t find a reseller near you? No worries. Many of our Approved Resellers ship internationally, so try a few other locations.

33 comments
Jump to the comment form

Avatar

Excellent! Can’t wait to design an IO board for a new UMPC project. So many possibilities!

Reply to Grimwood Builds

Avatar

I am confused about dual DSI and dual HDMI. What can be used simultaneously? The same with the CSI, does it interact with the DSI/HDMI ports?
Can I really use 4 displays? or just 2.

Reply to Jim Welch

Avatar

As I’m doing some driver development atm I’ve made a quick&dirts test with KMS on RPi4 (5.9 kernel): three is possible – https://www.raspberrypi.org/forums/download/file.php?id=40716
But keep in mind that not all combinations of displays will be possible as they use the same SoC blocks

Reply to aBUGSworstnightmare

Avatar

Excellent! Thanks for testing and sharing the results.

Reply to Nigel

Avatar

I wonder how easy it is to flash the eMMC, because I’m used to just plug in the microSD card and be done with it. I’m also spoiled with 128 MB card, instead of 32.
If this is good, the addition of WiFi means that it has a great potential to use as “keychain” computer, with VNC interface to chromebook. I wonder, though, whether or not I can solder the power wire directly to the board, as I cannot find any marking on the board indicating power pads. Any help with these concerns is appreciated. Thanks.

Reply to Harry Hardjono

Avatar

don’t attempt to solder wires to the connectors directly as they are not intended for such kind of miss-use! Design a small carrier board with just one (or both) board-to-board connectors, add your 5V power supply to that board (or just some solder pads for wires) and if 32GB of flash is to less for you add a uSDcard socket and use CM4lite.

Reply to aBUGSworstnightmare

Avatar

Thank you for your response. Such hardware project is unfortunately beyond my ability. Hopefully somebody else will pick it up. A micro SD interface, power line with LED and switch, should do the trick. Pair that with rechargeable battery pack, or just use the power USB from chromebook, and it’s good to go!

I’m currently using RaspiZeroW. Strangely enough, when I transferred the microSD to plain RaspiZero, it stops working! I transferred it back to Raspi ZeroW and it still doesn’t work! I think there’s a hidden change in setting somewhere because it works direct connection in both cases.

Reply to Harry Hardjono

Avatar

This is a “known, reported” bug. Unfortunately, when you swap SD cards between certain Pis, the wifi gets knocked out :-(

Reply to Michael Horne

Avatar

Thank you for letting me know about the bug. I just wish that the changes aren’t hidden. I ended up restarting the whole process from scratch, being careful that I installed dnsmasq before proceeding.
I am now happy that I found a use for the old Raspberry Pi Zero; the original, not the W model. It does make a nice bubblegum computing when paired with my chromebook.
Thanks again.

Avatar

Can you guys patch the vcgencmd command to report correct negative temperatures, please?
https://www.youtube.com/watch?v=RbzKM5XxlOA
The CM4 will certainly be used in some colder environments than indoors, and some people would wonder why it reports 4 million degrees Celsius…
The code is AFAIK only some printf unsigned format specifier being used instead of signed one when reporting temperatures. I can’t locate the place exactly, downloaded source code from github, no time to fiddle with it. Thanks.
Linux kernel now reports negative temperatures correctly.

Reply to CooliPi

Avatar

vcgencmd “only” passes messages from Linux to the firmware (and prints the firmware’s reply). So if the measure_temp command is still reporting negative values incorrectly, you should report it at https://github.com/raspberrypi/firmware/issues

Reply to AndrewS

Avatar

The bottleneck is the temperature support. Anyone interested in CM family is probably looking to use it in a low volume commercial or industrial project and the new product does not support the correct requirements of industrial environments.
It is still possible to use it in commercial projects but the commercial projects usually have a much higher volume and might worth to design a full system rather than modules.

Reply to Mahdi

Avatar

By any chance do we have IO bord with industrial graded connectors and industrial-grade case exposing all the connectors and sensors?

Can we use the PCI to connect AI accelerators [ex- coral]?

Reply to Suman

Avatar

I’m starting to like this product more and more. It’s just a tad large for my existing application with the IOBoard, but I’m considering just fabricating custom mounts to ‘squeeze’ it’s 6.25″ width onto my 6″ backplane and give it the edge the end offset of the 4B so that all of the external interfaces extendout out of the case faceplate. I’ll stack a mini backplane above it to house the components that are displaced by the IOBoard’s size. Perhaps it worth it for the external wifi antenna and eMMC/NVMe options.

Reply to SonoraTechnical

Avatar

Innovative form factor.
I guess you still have the option to remove the 4 holes (or at least two of them) since it is now fixed by the connectors.

Reply to Ebrahim

Avatar

Assuming that the CM4 is held in place by the connectors and therefore the corner mounting holes can be done away with removes the possibility of using the CM4 with just a minimal set of wiring in a flying lead. As noted above, you need run little more than 5V power to make the board useful.

Reply to Sgllama

Avatar

Good job, Dominic! It was the right choice to go to the new form factor, and I’m excited about the many new possibilities the CM4 opens. Indeed, making the power supply sequencing easier is a big win, I believe many more designs should pop up now. Also, of course native PCI Express will allow to do wild things with the new carrier boards – looking forward to introduce some of our own :-)

Reply to Max

Avatar

How long do you plan on keeping the new form factor? I’m thinking of a possible rasPi 5 ;) It would be nice to be able to replace only the CM and not need to redesign my PCB.

Reply to Matthew

Avatar

The CM4 looks like a game-changer. Hopefully we will see a healthy market for 3rd party IO boards develop. I, for one, would love to see an IO board that supports NVMe SSDs directly.

Reply to Geoff

Avatar

Can the Disp0 or Disp1 display connectors be used with any mipi DSI LCD? Or only with RaspberryPi official ones?

Reply to pierre-louis boyer

Avatar

Will you also release the PCIe express board CAD? Such as the 4 USB 3.0 board? Such that we can integrate that in our IO board.

Reply to Pierre

Avatar

How to write a system image into emmc?

Reply to modric

Avatar

This CM4 Looks good. How long are you planning to keep the new form factor?

Reply to Srinivasa Chaithanya

Avatar

Great! CM4 Looks very good. new form factor is cool

Reply to Reetesh Haldonkar

Avatar

Great! CM4 Looks very good. new form factor is cool

Reply to Raspberry Pi Modelleri

Avatar

Well, I think that the extra space on the PCB component is really a great idea. I always wanted to customize it but I was short of space.

Reply to ABHI

Avatar

Does anyone know if RPF have any plans to release additional antennae? Like a patch antenna? Their current one is huge and won’t fit our product. If not, is it correct to say that as long as we use an antenna that is the same gain or weaker, it will still be certified?

Reply to Ryan

Avatar

Such informative content. Thank you for sharing with us.

Reply to Aman pathak

Avatar

You got a lot done there even after facing so many issues. Backward compatibility and improved PSU are definitely great, keep up the good work!

Reply to Rajat Bansal

Avatar

The CM4 is improved on many level with nice features especially added power to external IO devices. Can’t wait it try it out.

Reply to Sabari

Avatar

nice blog learned some thing new but still some confusion about io boards

Reply to Premium Printers

Leave a Comment