Raspberry Pi Compute Module 3 Development Kit - Review

Table of contents

RoadTest: Raspberry Pi Compute Module 3 Development Kit

Author: balearicdynamics

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?: Under some aspects the PI Compute Module 3 is comparable to the Raspberry PI 3, with some pros and cons on both the two products.

What were the biggest problems encountered?: A small hardware issue (can occur randomly due a defective product), unclear documentation on how to flash the eMMC version of the system and a too sparse documentation.

Detailed Review:

Unpacking and first view

A lot of thanks to Element14 team and Raspberry PI giving me the opportunity to test this board that confirmed most of my thought about the incredible possibilities offered by this kit.

Unpacking

The Compute Module 3Compute Module 3 box includes almost everything you need to start playing with the board. I say "almost" because while the CM3 can support up to 2 Pi Cam and 2 touch screen connected, inside the box you find only one adapter per type. At least in the package I received; just in case I want to buy some other adaptor as spare part I have not found it in the farnell catalogue.

I appreciated a lot the presence of both the two versions of the the board CM 3 and CM 3 Lite. This gave me the possibility to test the features in all the possible configurations.

First view

The-board kit does not implement all the peripherals we are used seeing available in the "traditional" Raspberry PI 3.

In my opinion this can be an advantage in developing a PI-based product. As a matter of fact the available peripherals on the CM 3 board kit are limited to a single USB port, a dual camera and-display adapter

and the HDMI standard connector.

Instead the exposed GPIO pins provide all the available I/O of the Broadcom SoC that by en engineering point of view sounds more interesting.

Looking more in-depth the board kit double dual-row pins include signals on one side and power and ground connections on the other. This contributes simplifying the circuit testing and bread boarding during the prototype development first steps.

 

Hardware issues

As you can see in the image above, unfortunately the board arrived with the CAM0 movable part of the connector broken. This was not a blocking issue; I just considered it an unlucky situation. The second issue instead appeared on the Compute Module itself, for which I spent a lot of time until I decided trying to solve buying a second kit to make test comparisons; this demonstrated that the problems was just in the CM3 small board but the reason remain at the date a sort of mystery.

 

Issue in detail: I2C protocol not working

The board seemed full responsive until I started to setup some connection via the I2C protocol with the I2C #1 channel. Channel #0 is usually reserved by default in the settings of the distribution and it seems used by the camera interface on the kit. None of the peripherals I tried was detected. As I tried the same connections on a second board everything worked fine. By one side, it was a mess that just only one protocol was not working correctly with a so weird behaviour. Seeing things under a different point of view I can say that the rest of the board was functioning perfectly: this is a good signal of robustness and reliability. The full thread with description of the issue and tests, suggestions, support by other community members can be found in Weird I2C Issue with Pi CM3 [SOLVED]

 

As shown in the above video it was very difficult discovering it was something hardware related. I spent a lot of time in testing: to be honest, without a second kit to make comparison I will never be sure.

The I2C documentation does not mention the internal bus resistor we are used having on the Raspberry PI3. In fact it is not present; to make the I2C bus working with several external devices I had to build a small I2C hub adding two 1.8K pull-up resistors.

 

Testing and integration

I have done tests trying to connect several peripherals via different protocols where the Raspberry PI Compute Module 3 demonstrated a very good behaviour and speed, maybe more than expected; this is one of the reasons it has ben chosen to be the compute module core of the PONF project.

 

Adding external storage

In past I have already experimented with the Raspberry PI3 adding an external SSD storage. The last try took advantage of the last PI3 firmware update giving the possibility to setup the board full booting from the SSD instead from the microSD. Here the scenario I figured is different; as the Compute Module 3 includes a 4Gb onboard eMMC memory flash the approach I followed was different:

 

  1. Flash the Compute Module 3 for booting from the internal memory
  2. Connect via the USB port a SSD
  3. Setup the file system on the SSD

 

The final configuration will be a boot from the internal flash memory and the complete file system and /home users folders on the external storage. This approach worked very well performing for any usage I set it up, but there are some details to take in account:

 

  • Due to the 4Gb size limits of the Compute Module 3 eMMC memory it is possible to install only the Raspbian Lite (headless) distribution. This means that to have a desktop environment - where needed = you should follow a second step after the external storage configuration with the desktop UI manual installation. The advantage is that you can chose between different graphical UI flavours instead of getting the distribution default one. A good guide to add desktop features to the headless Raspbian Lite is the guide Raspbian Lite with PIXEL/LXDE/XFCE/MATE/i3 GUI
  • You don't need to care too much on moving the entire boot mechanism to an external storage; the internal flash is a good choice for the boot area and some core components of the operating system that will remain on a different support than the file system and home users folders. The flash memory is easy to backup with a flashing application making easy to replicate the configuration on other machines.

The images below shows the SSD USB device setup

 

Tailoring the power usage

Aiming to design a custom Raspberry Pl Compute Module 3 platform it is easy to reach a good level of power optimisation choosing only the peripherals really needed by the application project.

Reducing the platform to a very low level power consumption in some cases, e.g. providing a standby mode when the platform is battery operated maybe a serious challenge on the Raspberry PI3: all the peripherals are always present on the board; four USB ports connected via USB hub, WiFi IC accessed internally through the same USB Hub and more. With the PI3 board we can only operate through software disabling when possible some of the undesired peripherals while on the Compute Module 3 we can exclude them from the design. Starting from the Compute Module (and the board Kit architecture whose schematics are feely available), it is possible to customise a platform where including only what we need reaching a deep stand-by mode consuming few micro Ampere for longer lasting of a battery charge.

To make the things easy i have setup a headless Compute Module 3 board equipped with only a WiFi dongle connected to the USB port powered with a 2. 4 A/h battery pack at boot. Through the Wifi connection I have kept alive the wireless connection via a ssh terminal session from a PC.

I was really surprised of the result: not a precise measure, sure, but a method that in my opinion will give a good idea of the possibilities. The board survived executing commands from remote for up to 32 hours after the boot.

 

Serial UART, I2C and SPI communication all together

Another test that demonstrated the stability of the system was to build a simple I2C bus Hub and connected together a series of test peripherals:

 

  • I2C : Arduino to control some DC brushed motors with the TLE94112LE shield and two buttons CAP Sense
  • UART : Pulse Train HAT stepper motors controller
  • SPI : control signals for the 7" touch screen monitor (and camera too)
  • USB : Non-powered 5 ports USB Hub with a USB-to-mSATA 500 Gb SSD

 

All the peripherals worked together without problems and the system was responsive as expected for every attached device.

Compute Module 3 graphic performances

Manually installing a X-Window interface over a headless Raspbian Linux distribution I have done a series of advanced testing to evaluate the performances and possibilities offered by the Compute Module 4 platform when working as desktop in a graphical environment with heavy images (24 Mp RAW files).

 

For more details the full road test desktop settings and performances is available in PONF Project: Road Testing the Compute Module 3 as Desktop

 

Documentation

It was not so easy finding a complete and satisfactory documentation set for this platform. There is a lot of useful and well done documentation but there is not a single place where to find it. I have identified two classes of documents:

hardware reference and data sheets, and software installation guides.

The CM3 board can be flashed with the same Raspbian images used for the standard Raspberry PI3 but the procedures differs a while and the exceptions are not all clearly explained.

 

Documentation best reference

Referring to the official Raspberry Pl documentation, including specific details for the Compute Module, this can be found on the GitHub Raspberry PI documentation repository.

This repository includes all the documents, tutorials and notes available in a not clear order on the raspberrypi.org official site; the repository is better organised and is the most frequently updated site. Who is interested can register following the updates receiving e-mail notifications on new issues, updates, changes and more (almost daily).

Following the Raspberry PI documentation repository updates I have discovered a lot of information and stopped searching here and there, a very time-consuming experience.

In terms of available documents, in attach to this review you can find what I considered essential about the Raspberry PI compute Module platforms (1 and 3):

 

  • The compute Module data sheet
  • The board kit-schematics
  • The guide to connect the board with the camera and the 7" touch screen LCD

 

CM3 Normal and Lite version: a short comparison between the two boards and the PI3

 

I have read here and there that one of the limitations of the Compute Module boards (including the previous version) is it is targeted to industrial applications and a different, higher price range. At first glance the Raspberry PI Compute Module 3 respect the cheaper Raspberry PI 3 is reduced to the bare essential components to run an operating system. In my opinion this is not the right answer and things are significantly different.

Take a look to the products listing below:

 

  1. Raspberry PI Compute Module 3 (with 4Gb eMMC) - About 36$
  2. Raspberry PI Compute Module 3 Lite (no eMMC) - About 30$
  3. Raspberry PI Compute Module 3 Development Kit Platform (includes both versions of the Compute Module) - About 212$
  4. Raspberry PI 3 - About 42$

 

So the right comparison - price and features - should be between the devices at points 1 and 2 and the Raspberry PI 3 (point 4). Prices are compatible while the two kind of boards are complementary: The Raspberry PI3 is an all-in-one embedded computer - a Linux computer that can run Windows too - with a lot of features at a very reasonable price; perfect for education, making and almost for any external kind of project where there is the need to control GPIO, sensors, motors, signals etc.

The Compute Module - the small board whose form factor is SODIMM mechanically compatible - has nothing of this onboard but all the pinout of the Broadcom SoC are exposed through the connector. Sounds perfect for any kind of compact or customised project - and obviously industrial applications - It is expected  the user has the ability to build a real design around the board.

 

We asked and investigated, reverse engineering when possible, on how the Raspberry PI is built, how is its internal architecture design. Makers, creators and hobbyists complains on the forums of the poor information and no schematics availability for the PI3. After approaching the compute Module architecture I started seeing the things under a different point of view. The Raspberry PI is (also) a Linux embedded machine. There are few or not at all information on its internal design, but

 

  • Runs several operating systems

  • The compatible linux distributions are open

  • All the information needed to connect the machine to the real world are available and fully documented

  • Hardware accessible via software is almost documented

  • Supports a lost of languages and hundred of software portings

 

What we can't do is to put our hands inside; the Raspberry PI3 is not an Arduino. It is not my intention starting here a discussion comparing the Pl3 with other same-class embedded computers like the Beagle Bone boards family. The point is that most appearing a limiting factor in the Raspberry Pi3 it is the opposite in the case of the Compute Module 3 device. The kit is few more than the main board break-out  In the Compute Module 3 camera signals and touch screen hardware details remain the only two undocumented parts on these boards. A last consideration in terms of comparison: it is true that the Raspberry PI3 is equipped with four USB ports, ethernet connector and WiFi, Bluetooth. But most of the peripherals are connected through the USB device tree.

 

The two Compute Module versions

 

What differentiate the Compute Module 3 Lite is the absence of the 4Gb eMMC flash memory chip present instead on the Compute Module 3. Lite version needs booting from an external microSD memory card as well as the Raspberry PI 3. The two versions present pro and cons covering a wide range of possible designs.

eMMC flash memory limits the size of the boot image for which we should use the Lite versions of the Raspbian images. This limitation can be workaround expanding the file system over an external USB storage device. The advantage is that the eMMC flash is faster and more reliable than the microSD card. The Lite versions of the Linux distributions does not include the X-Window interface by default but can added including only the needed software and applications.

 

Conclusions

After testing and using the Compute Module platform developing a custom project my conclusion is extremely positive. I think that there is again a lot of job to be done in terms of support and documentation, at least what is expected to be available on the official sites, but the platform is performing very well. It should not be so difficult for makers adopting this platform in their more challenging PI projects, accessing to an incredible flexibility to customise the most challenging prdesigns.

Anonymous