Smallest practical Compute Module 4 carrier board for network projects

Similar projects worth following
Carrier board for Raspberry Pi Compute Module 4.

- exactly same size as CM4
- support for both Lite and eMMC variants of CM4
- Gigabit Ethernet
- microSD slot (optional)
- Micro USB for power and USB 2.0 data transfer
- USB-OTG support

The basic idea of the project is to deliver smallest possible headless server with help of Compute Module 4 unit. To achieve that, the requirement was to have exactly the same size of the board as CM4 itself. Actually the only thing that is required for this kind of use case is Ethernet connector. However this board does not support PoE (yet?), so power has to be delivered externally, via Micro USB connector. Same USB serves also as an interface to rpiboot, so boards having eMMC could be flashed with it. Also there is OTG support, that was on CM4 connector out of the box, so most likely Raspberry with this board could serve as both host and slave USB device. For convenience, there is also Micro SD connector, which allows to boot from SD card on CM4Lite boards. Oh, and there is obviously UART header, so some basic troubleshooting can be done this way. Basically that's all you should need for your networking projects.

I can imagine that this kind of device could be used, most obviously, as a standalone server, saving a bit of space comparing to Raspberry Pi or similar device, maybe to play a bit with Kubernetes, Ansible or this kind of thing, without doing this directly on a laptop or VMs. Also this could work way better for building small Raspberry Pi clusters.

  • 1 × CM4/CM4Lite 1/2/4/8 GiB RAM 0/8/16/32 GiB eMMC
  • 1 × uCM4 PCB
  • 2 × Hirose DF40HC(3.0)-100DS-0.4v
  • 1 × Richtek RT9742CGJ5F
  • 1 × Diodes Incorporated 74LVC1G07SE-7

View all 22 components

  • More Ethernet testing

    Kamil Lorenc05/27/2021 at 06:36 0 comments

    Today, finally I was able to set up stable Gigabit Ethernet connection to my laptop. Did some quick test by sending random file from my laptop's SSD to CM4 and storing in /dev/null. Here is the result measured by nload:

    And I got quite nice ~700 Mbps. I still hope this is not maximum for CM4, but SSD was bottleneck this time. Let's see what iperf is gonna say. And it showed this:

    By the way you can see dd counting previous attempt. So, here we have ~860 Mbps. This I can believe in.

    Then the summary is that my board does its job nicely. I played quite a lot with trace length matching tool in KiCAD to make sure that all traces carrying Ethernet signals are of exactly same length. I'm curious what would be the result if I ignored that. But I think that spending money and time on next batch of test boards is not worth it :)

  • Test of Ethernet connection

    Kamil Lorenc05/25/2021 at 15:54 0 comments

    uCM4 carrier board was designed with network projects in mind, so the most important thing to check is how fast the internet connection could go.

    Today I did some quick tests on that matter. First test went rather unsuccessful, as definitely my laptop, that is sharing internet to CM4, opened connection at 100Mbps. I tried with few cables that claim to be Cat5e, but all of them worked as bad as first one.

    My PC suggesting that cable is the issue and synching at 100 Mbps:

    CM4 only tells me that I got 100 Mbps:

    Despite being unlucky with port speed, I tested nload to see how much do I get on 100 Mbps link. It showed ~90 Mbps. Nice.

    After trying 3 cables I decided to change tactics. I reminded myself that I have old Wandboard PICO-PI-IMX7 lying around and collecting dust. Fortunately it stills has working OS flashed, so let's try that:

    100 MBit/s crossed, so first small success.

    Wandboard clearly indicates 1 GbE link with its orange LED, instead of usual green, that I saw just a moment before with different cable:

    I wonder why they didn't do same on Raspberry Pi. Even if I used same UDE connector on my board, there is no signal indicating 1 GbE, instead of 100 Mbps, AFAIK. Weird.

    Next time, I will try to test connection from CM4 to Raspberry Pi 4, as I suspect Pico Pi is bottleneck here. At first I tested connection from Pico Pi to PC and got almost same ~120 MBit/s. i.MX7 is not the newest SoC, so it is not really a surprise, you can't get more from that. However, before testing Pi4, I have to prepare another OS, as till now I used card borrowed from my Pi4, so can't do that quickly, unfortunately.

  • Demo

    Kamil Lorenc05/24/2021 at 14:09 0 comments

    I felt that this project is incomplete without any demo video, showing at least startup of Linux. Here it is. Enjoy.

  • Board version 0.1.0 working

    Kamil Lorenc05/22/2021 at 15:41 0 comments

    I was working on this project from time to time for several months already. During that time, few weeks I spent waiting for the board to arrive from JLCPCB. I ordered them partially assembled with whatever was available to assemble. Last few afternoons was soldering those elements that JLCPCB was unable to solder with their basic service (or at all?). Today I solved last significant problem with microSD card slot, so I am now able to boot automatically into OS that used to work on Raspberry Pi 4 before. In the meantime I also tested RPIBOOT jumper, so it is now confirmed that shorting this when connecting the power results in jumping into rpiboot mode of bootloader, so it should be possible to flash eMMC from there. I have CM4Lite, though, so was not able to confirm that.

    These are the things that I was able to verify till now:

    1. With testpoints it is possible to verify that power to SD card slot can be cut by CM4
    2. PWR LED indicates that board is powered
    3. ACT LED shows that some activity is going on (was not blinking when I had SD issue - weird)
    4. RPIBOOT goes into BCM2711 Boot, when shorted
    5. USB connector delivers power to board, but also allow USB communication to SoC
    6. UART shows system log, when booting Linux
    7. After system startup it is possible to interact with the system
    8. Ethernet link is going up and green LED on connector indicates that
    9. Ethernet activity LED blinks, when something is going on
    10. Ethernet link works, when connected to PC sharing its connection

    As can be seen above, generally everything is working. But this cannot be so sweet in first iteration. In the meantime, I identified some problems, that I try to keep track of on Github. Most significant one is 5V power rail being too thin at the very short distance, so it is possible that two Hirose pins are more loaded with current than the rest. I am not an expert in electronics, but on my first prototype I made a jumper with wire for a reason that turned out to be my mistake. Due to that trace width problem, I left this bridge, just in case.

    Other minor errors I noticed are as of now:

    1. No vias near USB testpoints on production files (KiCAD source was fine at all times!).
    2. Very tight fitting of Ethernet connector. Reason for this problem was me, migrating from other connector of same manufacturer, that was almost the same, excluding 0.1 mm diameter of shield mounting hole and way more obvious LED pin locations.
    3. RPIBOOT jumper is hard to short.
    4. Soldermask around vias - some are not under soldermask, some are. It is not a problem, but is ugly and unprofessional :)

View all 4 project logs

Enjoy this project?



gplab-ide wrote 06/11/2021 at 01:03 point

It is useful for building a raspberry pi cluster

  Are you sure? yes | no

Kamil Lorenc wrote 6 days ago point

Exactly. My idea was to play with this kind of stuff on Raspberry, that is why I designed this board.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates