book collections email follower instructable user
Picture of Design Your Own Raspberry Pi Compute Module PCB

If you’ve never heard of the Raspberry Pi Compute Module before, it’s basically a fully fledged Linux computer with the form factor a laptop RAM stick!

With it becomes possible to design your own custom boards where the Raspberry Pi is just another component. That gives you an enormous amount of flexibility as it allows you to have access to a much greater amount of IO pins, while the same time you get to choose exactly what hardware you want on your board. The on-board eMMC also eliminates the need for an external micro SD card, which makes the Compute Module perfect for designing Raspberry Pi based products.

Unfortunately, while the Compute Module allows you to do all this it still appears to be lacking in terms of popularity compared to the traditional Raspberry Pi Model A and B. As a result, there aren’t many open source hardware projects out there based on it. And for anyone who might want to get started with designing their own boards the amount of resources they have is rather limited.

When I first got started with the Raspberry Pi Compute Module a few months ago, that was exactly the issue I was faced with. So, I decided to do something about it. I decided to design an open source PCB based on the Compute Module, that is going to have all the basic features that make the Raspberry Pi great. That includes a camera connector, USB host, audio output, HDMI and of course a GPIO header compatible with the regular Raspberry Pi boards.

The goal of this project is to provide an open source design for a Compute Module based board, that anyone will be able to use as a starting point for designing their own custom board. The board was designed on KiCAD, an open source and cross platform EDA software package, in order to allow as many people as possible to take advantage of it.

Simply grab the design files, adapt them to your needs and spin your own custom board for your project.

Step 1: Parts and Tools

Picture of Parts and Tools

To get started with the Raspberry Pi Compute Module you are going to need the following parts:

1 x Raspberry Pi Compute Module 3 - I highly recommend getting the regular version which includes the on-board eMMC and not the Lite version. If you want to use the Lite version in your project you’ll have to make a few changes to the design, and that includes adding a micro SD card connector. Finally, I have only tested the board with the CM3 and I cannot guarantee that it will work with the first CM version that was released back in 2014.

Update 29/1/2019:
It appears that the Foundation has just released the Compute Module 3+ and not only that, but now it also comes with the option for an 8GB, 16GB or 32GB eMMC! According to the datasheet, it appears that the CM3+ is electrical identical to the CM3 which means that it’s basically a drop in replacement for the CM3.

1 x Compute Module IO Board - My design was intended to serve as a starting point for designing your own custom board based on it, not to be replacement for the Compute Module IO board. So, to make your life easier I highly recommend getting your hands to an IO board and use that for development before moving to a custom board. Apart from giving you access to every single pin of the CM plus a variety of connectors, the IO board is also needed for flashing the on-board eMMC. Which is something that you cannot do with my board, unless you do some changes to the design first.

1 x Raspberry Pi Zero Camera Cable or Compute Module Camera Adapter - On my design I’m using a very similar camera connector to the one used by the Compute Module IO Board and the Raspberry Pi Zero. So, in order to attach a camera you're either going to need an adapter cable designed for the Pi Zero or the camera adapter board that comes together with the Compute Module Development Kit. As far as I know, purchasing the adapter board separately is quite expensive. So, if you like me decided to buy your CM and IO Board separately to save some money, I advise you to get the camera adapter cable designed for the Pi Zero instead.

1 x Raspberry Pi Camera Module - I have only tested the board with the original 5MP camera module and not the newer 8MP version. But since the former appears to be working just fine I see no reason the later wouldn’t as it is supposed to be backwards compatible. Either way, the 5MP version can be found for less than 5€ on eBay nowadays which is why I’d recommend getting one.

4 x Female to Female Jumper Wires - You are going to need at least 4 for configuring the camera connector on the IO board, you’ll likely want to get more though. They aren’t needed for the custom board but can be useful if you plan attaching any external hardware via the GPIO header.

1 x HDMI Cable - I decided to use a full size HDMI connector on my board to eliminate the need for adapters. Of course, if you prefer using a mini or even a micro HDMI connector feel free to adapt the design to your needs.

1 x 5V Micro USB Power Supply - Your phone charger should probably do just fine for most cases as long as it can provide at least 1A. Keep in mind that this is just a general value, your actually power requirements are going to depend on the hardware you decide to include on your custom board.

1 x USB Ethernet Adapter - If you plan installing or updating pretty much any package on your system, you’re going to need at least temporary Internet access. A 2-in-1 Ethernet adapter plus USB hub is probably a good combo as you only have one USB port available. Personally I use the Edimax EU-4208 which works out of the box with the Pi and doesn't require external power, but it doesn't have a USB hub built in. If you are looking into buying a USB Ethernet adapter here you can find a list with ones that have been tested with the Raspberry Pi.

If you want to add more USB ports and even Etherent directly on your custom board, I’d suggest having a look at the LAN9512 from Microchip. It is the same chip used by the original Raspberry Pi Model B and is going to give you 2 USB ports and 1 Ethernet port. Alternatively, if you need 4 USB ports consider having a look at its cousin LAN9514.

1 x DDR2 SODIMM RAM Connector - This is probably the most important component of the entire board and likely the only one that can't be easily substituted. To save you from the trouble the part that you should get is the TE CONNECTIVITY 1473005-4. It is available from most major suppliers including TME, Mouser and Digikey, so you should have no problem finding it. Be very careful though, double check and make sure that the part you’re ordering is in fact the 1473005-4. Don’t make the same mistake I did and get the mirrored version, these connectors aren’t cheap.

For the rest of the parts that I choose to include on the board you can take a look at the BOM to get more information, I tried to include links to the datasheets for most of them.

Soldering Equipment - The smallest components on the board are the 0402 decoupling capacitors, but the HDMI as well as the camera and the SODIMM connectors can also be a bit challenging without any kind of magnification. If you have good experience with SMD soldering thought it shouldn’t be a big issue. Either way, if you happen to have access to a microscope I highly recommend it.

elidav29 days ago
Any way you could provide a tutorial for how to recreate your pcb schematic....i.e. breakdown of why each capacitor was added, power distribution, etc? Like a video where you create the design and explain all the design decisions? Design files are great but still a big leap to understand your schematic for intro EE student...Alternatively are you aware of a resource that breaks down schematic design in a similar way (for a practical board such as this one)
magkopian (author)  elidav28 days ago

Unfortunately, I don't have the time to do a tutorial where I recreate the schematic and explain step by step why I pick each component. However, if you have any specific questions I'd be happy to answer. I do believe though that most things are pretty straightforward to understand.

For example regarding the power I'm not even using a switching regulator, 5V is provided by the power input and the 3.3V and 1.8V by the two REG1117 linear regulators. Why I picked two 10uF tantalum capacitors for each of them? Well, apart from these being basically standard values it's what's also recommended by the datasheet. As for the 100nF capacitors that you can see everywhere in the board, you should know that when dealing with digital circuits it's standard practice to place an 100nF ceramic cap as close as possible to each pair of power pins.

javier63 months ago
Hello Manolis,

Very nice post, it has been really helpfull.
I have a question regarding the 100 & 90 ohm differential pair routing. How did you determined the values for lenght trarck width and track gap?
Thanks again for sharing!

magkopian (author)  javier63 months ago
I used a piece of software called Saturn PCB Design Toolkit. You can download it for free though it's only available for windows, but it does run just fine under Wine if you are on Linux like me. In order to use the right numbers I had a look at the Standard PCB Manufacturing Capability sheet for ALLPCB, but I did make a couple of assumptions regarding the distance between the copper layers (Conductor Height) as it doesn't appear to be mentioned by ALLPCB.
javier6 magkopian3 months ago
Hello Manolis. Thanks for your reply. Will try the software.
wittend5 months ago
Very helpful! My question: after a couple of months, how has your experience been with this design? Has everything behaved as you expected?

I see that someone has put this design up on OSHPark (without attribution). Perhaps not the best long term choice for board production, but possibly a way to get it into people's hands to test.
magkopian (author)  wittend5 months ago
No, I haven't noticed any issues with the design so far and neither I have received any reports from others that did. As for the OSHPark listing you're referring to is it this one,

Honestly, I don't really mind if someone wants manufacture and sell boards based on my design even unchanged. The fact though that the said person decided to upload just the gerber files without including the source KiCAD files, or at least a link to the GitHub repository so other can easily find them is something I don't particularly like. Thanks for letting me know, I'm not familiar with OSHPark but I'll see if I can find a way to contact the owner of the particular listing.
WesleyF307 months ago
Here's a nice compact board someone I know is coming out with, that exposes both camera inputs:
magkopian (author)  WesleyF307 months ago
Yeah, I've seen that project before, though the goal of my own project was a bit different. What I was trying to do is design a board that can work as a base for designing your own custom PCB. For this reason the design had to be as simple as possible, while still maintaining the majority of the most popular features found on the other Raspberry Pi boards.

StereoPi may be nice and compact but in reality it's a quite complex board, so not really what I was after with mine. Changing my design to include a second camera connector isn't actually that hard. The thing is that that's a pretty niche feature that not many people need for their projects, so it didn't make much sense to include it on the board by default and make the design more complex for no good reason.

By the way, do you know where I can find the design files for the StereoPi? Because I've looked and I couldn't figure out where to get them.
SgtSiff7 months ago
This is a great write up, just a few questions if I may:

What drove your decision to power VBAT with 5V, and not 3.3V? Smaller 3.3V regulator required?

In the CM3 datasheet (7.1 Supply Sequencing) it specifies that supplies must be brought up either sequentially, or at exactly the same time to prevent forward biasing the internal on-chip diodes. Have you experienced any lock ups with your design as it appears the there is no facility for this on the 3.3/1.8V rails? On the official IO board they use a dual regulator and have created an RC delay between the enable pins to ensure they are brought up sequentially.
magkopian (author)  SgtSiff7 months ago
What drove your decision to power VBAT with 5V, and not 3.3V? Smaller 3.3V regulator required?
One of my goals for the board was to have a 40 pin GPIO header that will be pin to pin compatible with the preexisting Raspberry Pi boards. This makes it easier for people (including me) who have already designed a project around let's say a RPi3, and want to transition to a single Compute Module based PCB. Furthermore, it maintains compatibility with preexisting Raspberry Pi HATs which is nice.

Have you experienced any lock ups with your design as it appears the there is no facility for this on the 3.3/1.8V rails?
No, I haven't had such issues, but since I'm using two linear regulators both powered from the same 5V power source and having the same input/output capacitors, they should be coming up pretty much at the same time. I haven't made any rise time measurements though to be honest.

On the official IO board they use a dual regulator and have created an RC delay between the enable pins to ensure they are brought up sequentially.
That was actually what I was planning doing at first, but I opted to using a couple of linear regulators to keep things simple and also make sure that my power rails are nice and noise free.
Wapata7 months ago
Too bad that Compute Module IO board still required, it cost a lot !
But your project seem really nice and could be cheap for a device without gpio and screen ... And wifi. Well, with just USB and Ethernet. And there is a lot of them ! Router, Expander, Domotic server, 3D printing Octopie, RecalBox game station...
But the Compute Module IO board put the price to high for all these projects.

But, congratulations, your instructable is really good and well written, thanks !!
magkopian (author)  Wapata7 months ago
Well, not strictly required, with a few changes on the design you could make the flashing of the eMMC possible without the need for the IO board. However, if you need to do any serious development you need the IO board as it gives you access to a lot more connectors to experiment with and all the GPIO pins of the CM. The IO board itself may be a bit pricey but you only have to buy it once and you can use it for the development of any project.
Snowsongwolf7 months ago
Is Autodesk monitoring me? I was just saying yesterday how I was interested in the Compute modules but didn't know how hard it would be to design a board for them, and then today this is in my Instructables email. Bravo! I'm definitely trying this out!
magkopian (author)  Snowsongwolf7 months ago
And not only that, but literally a day after publishing my project the Raspberry Pi Foundation releases the CM3+. I really don't think the timing could be any better.
In fact a news article about that in my feed is what reminded me they exist. I've been trying to figure out dual display setups for Pi and somehow the Compute, which supports 2 display connections, never came up in my searches.
mglaske7 months ago
Really professional looking build! There's one Pi Board that I'm always on the lookout for, and that's a simple board with PoE ethernet onboard to be used for automation and control applications. With integrated things like 5v level shifters and RS485. If you're looking for another project!
magkopian (author)  mglaske7 months ago
Thanks, actually I was also thinking about working on a board that will feature Ethernet with PoE for quite some time. Maybe this will be one of my next projects.
iWinR7 months ago
This is pretty cool. I am just getting into the whole electrical side of the nerd world. How much did the project end up costing? And how noob ?
magkopian (author)  iWinR7 months ago
Honestly, the particular board was probably the most expensive personal project I've worked on so far. The PCBs alone ended up costing me near 80€, but that's to be expected from a medium size 4 layer PCB with gold finish plus the cost of DHL shipping from China. As for the components, I think I ended up paying roughly 100€ and that without including the Compute Module. And that's partly because when I design a new board I tend to buy genuine parts from reputable suppliers like TME and Mouser in order to avoid headaches.

This project though is probably not a very good example on what to expect regarding the cost of designing a custom PCB. For example, if I only needed a 2 layer board of the same size and without gold finish which is most often the case, I'd probably wouldn't have paid over 25€ for 10 boards. Also, some parts like the SODIMM connector are quite pricey but that's a type of connector you don't use often. I'd say 50€ total for each project that involves a custom PCB is probably a good average.

As for the complexity of the project, yeah, if you are just starting out you probably want to start with something simpler. Maybe start playing around with an Arduino and from there start learning about PCB design and eventually move your project to a custom board.