I’ve reviewed the Pine64 SOQuartz compute module alternative in the past. While it works great Pine64 is working toward mainline support and doesn’t have very many choices available for a well-supported image as mainline kernel support for that board is not quite complete yet.
The Radxa Rock 3 Compute Module (CM3) is Radxa’s current production alternative to a Raspberry Pi Compute Module 4. They promise that “Radxa CM3, CM3 SODIMM will remain in production until at least Sep 2029” meaning that they have made a very long term commitment to support this board.
In this review I’m going to be taking a look at the Radxa Rock 3 compute module and see how it stacks up against the Pine64 SOQuartz as well as the Raspberry Pi CM4. Let’s begin!
The Geekworm copper heat sink set is designed to fit many different single board computers. It uses thermal conductive adhesive which many “cheap” heat sink kits for SBCs don’t have. Eliminates hot spots and reduces throttling. Can be further enhanced by powered cooling over the heat sinks.
|55 mm × 40 mm
|32 mm x 67.6 mm
|Rockchip RK3566, Quad core Cortex-A55 (ARM v8) 64-bit SoC @ 2.0GHz
|1GB, 2GB, 4GB or 8GB LPDDR4 (depending on variant)
|8GB, 16GB, 32GB, 64GB, 128GB (depending on variant) high performance eMMC
|– Optional wireless LAN, 2.4GHz and 5.0GHz IEEE 802.11b/g/n/ac wireless, BT 5.0, BLE with external antenna
– Onboard Gigabit Ethernet PHY
– 1 x USB 2.0 Host port ( highspeed ), 1 x USB 2.0 OTG, 1 x USB 3.0 port ( 5Gbps )
– 1 x PCIe 1-lane Host, Gen 2 ( 5Gbps )
– 2 x SATA ports, one shared with USB 3, one shared with PCIe
– 50 x GPIO supporting
|– 1x HDMI up to 4K x 2K@60HZ
– 1x eDP four lanes, 2.7Gps per lane
– 2x MIPI DSI four lanes, 1.6Gbps per lane
– 1x LVDS four lanes(mux with MIPI DSI0)
– PDM, support mic array
|– VP9/H.264/H.265 decode 4K@60HZ
– H.264/H.265 encode 1080P@100HZ
– OpenGL ES 3.2/OpenCL 2.0/Vulkan 1.1 GPU
|3x 100P 0.4mm pitch B2B connector
|Radxa CM3, CM3 SODIMM will remain in production until at least Sep 2029, CM3 Industrial will remain in production until at least Sep, 2032
Let’s start with the packaging. The module came in a box like this:
It was wrapped with a ton of bubble wrap and actually shipped in a box to prevent it getting smashed. I’m kind of surprised to see someone shipping a SBC in a box like this as my last 10+ reviews or so they have all came in clear hard shells (that can’t be smashed nearly as easily).
Here’s a look at the bottom of the packaging which has more information about the product:
This is exactly how Raspberry Pi 4 CM4s come though (in a very small box just like this) so I suppose that is what they are going for.
Now let’s take a closer look at the board:
In the top right hand of the board you can see a U.FL antenna connector to attach an external antenna. We can see that the version / revision of the board I got was V1.31A.
If you follow the U.FL connector and go left from there past the WiFi chip there’s actually a small button right to the left of the WiFi chip. It is the most yellow looking piece on the board with the small black dot in the middle of it. This button disables the eMMC.
In the top left hand in the board you will notice there is an unpopulated spot where there are only pads. Those pads are for a SPI flash chip and a button to disable it. My model did not come with the SPI flash obviously here.
And for the bottom of the board:
Now this is interesting, there’s a third connector on the left hand side of the board that the CM4 doesn’t have!
Fortunately this doesn’t break compatibility with any of the existing CM4 boards. It will still plug in them and function normally. The third connector gives you more available I/O options than are available on the CM4 if you have a I/O board that is capable of using them.
In other words it’s optional and boards can be designed to take advantage of it. You only need to change the .dtb file to switch between Raspberry Pi CM4 compatibility mode and Radxa CM3 compatibility mode (more on that later).
The overall build quality is excellent. The board is very solid and the traces are very clearly visible. It’s easy to find which components wire where just by looking at the board.
Available Operating Systems
As far as I can tell there are only two available operating systems. These include the following:
- Debian Bullseye XFCE Desktop
- Ubuntu Server (Focal)
That is it as far as I can tell. It’s an even worse offering of operating systems than the Pine64 SOQuartz. Substantially worse actually.
None of the third party images listed will work. That is just because they combined the CM3’s download section with the Rock 3 series of boards (another puzzling choice). Almost everything you see on that page won’t work with the CM3 unless it has CM3 specifically listed in the image name.
Testing CM4 I/O Board
Right off the bat you’re going to have to make some configuration changes. Even if you got a model with the eMMC the dtb files it came with are not compatible with the Raspberry Pi CM4 I/O boards. This is very disappointing but I’ll beat the hell out of them in the conclusion for it. Let’s just talk about how to fix it here for now.
Basically if you only bought the module like I did (and none of the Radxa I/O boards) you’re going to need to plug it into your CM4 I/O board and disable the eMMC boot pins so you can plug the I/O board into your PC and image the eMMC. *Groan*. Not exactly an convenient thing to do with a compute module.
The commands to fix this (from the running device) are:
cd /boot/dtbs/$(uname -r)/rockchip/ sudo mv rk3566-radxa-cm3-io.dtb rk3566-radxa-cm3-io.dtb.bak sudo cp rk3566-radxa-cm3-rpi-cm4-io.dtb rk3566-radxa-cm3-io.dtb sudo reboot
If you want to use these with the eMMC that’s going to be very hard to do without using the USB to TTY serial console. I don’t want to download rkdeveloptool and reflash the board. All I wanted to do was edit the files but that is actually really hard without just booting off a SD card first (at which point you will be able to access and mount the eMMC and change the files that way).
To be fair Raspberry Pi also makes you use a proprietary tool for flashing from the PC and doesn’t just show up as a drive. In other words this is a problem with the Raspberry Pi as well. It’s part of the reason this form factor sucks frankly and neither Radxa or Raspberry Pi are doing the form factor any favors by not having the eMMC just show up as an accessible drive on the PC. It’s just a miserable technology to work with frankly and it has been since day 1 (especially compared to other Raspberry Pi products, my goodness).
I imaged a SD card and then performed the above fix to make my DTB file compatible with the CM4 I/O boards:
james@pop-os:~$ sudo mount /dev/sda1 /mnt james@pop-os:~$ cd /mnt/dtbs/4.19.193-58-rockchip-gbac1feba87f0/rockchip james@pop-os:/mnt/dtbs/4.19.193-58-rockchip-gbac1feba87f0/rockchip$ sudo mv rk3566-radxa-cm3-io.dtb rk3566-radxa-cm3-io.dtb.bak james@pop-os:/mnt/dtbs/4.19.193-58-rockchip-gbac1feba87f0/rockchip$ sudo cp rk3566-radxa-cm3-rpi-cm4-io.dtb rk3566-radxa-cm3-io.dtb
I then attempted a boot and…. nothing. Are you kidding me? I’m going to really have to get a USB to TTY serial console out to get this to boot off ANYTHING even SD card?
How about no. I’m failing this board right now. This board is going into the drawer of shame and I doubt I’ll ever touch it again. Not even within the same league as the Raspberry Pi 4 Compute Module 4 or even the Pine64 SOQuartz. There’s literally no point in continuing. This is a terrible offering.
Cancelled due to being such a nightmare to work with that I was done with the board before we even got to this.
Adding a third connector was theoretically a really good idea from Radxa if they would have done it correctly. The implementation is problematic though. Why didn’t Radxa map the I/O with 100% compatibility with the Raspberry Pi Compute Module 4? Why am I having to change .dtb files (even within the same image) to switch between different I/O boards?
When I bought this product what I expected to happen is that I could use it interchangeably between Compute Module 4 I/O boards and Radxa I/O boards. I figured it would map the I/O in a way that maintained compatibility with the other images. It doesn’t though. You have to change the .dtb files between the two.
I’m sure Radxa has a very technical explanation of why they did things this way but I would argue they’ve missed the point of using a compute module form factor like this. The whole idea is that I should be able to plug it into any I/O board and have it work. By adding a third I/O connector and having to switch operational modes by changing the .dtb files they’ve completely erased any advantage of using a form factor like this. It’s now just an additional headache added to the many headaches there already are when working with compute modules (even in ideal circumstances).
In other words I think the third connector took this product in the wrong direction. It doesn’t make sense to me anymore. This really isn’t an easy product to use with Raspberry Pi Compute Module 4 I/O boards because you have to mess with the .dtb files. They say they have been working on an image that has this change built-in but it’s not available still. You have to do it manually.
I hate to say it but this has to be Radxa’s least compelling offering I’ve ever reviewed. I called the Radxa Rock 5B the new king of SBC performance in comparison. I will recommend the Radxa Zero over the Raspberry Pi Zero 2W all day long as well.
For this product to make sense to use you would probably want to bundle it with Radxa I/O boards so all of the images work without any further modification and customization. The issue is I see no reason why you would want to start over and invest in Radxa’s compute module ecosystem from the ground up. You can be sure that none of their gear with the third connector will play nice with the original CM4 (or at least it would be seriously hindered if it’s even possible by lack of the third I/O connector on the CM4).
I legitimately would recommend the Pine64 SOQuartz over this board just because that board doesn’t have any weird I/O mapping issues going on with a third connector requiring changes to your dtb files to swap between the different I/O board solutions.
I know Radxa has an extremely powerful CM5 model coming up that has an incredible 8 cores and will absolutely stomp the CM4 in performance. I’m honestly less excited for it though after trying this version.
That’s because with having to change your dtb files to move between the different I/O boards no matter which image you’re using is honestly really gross to me. It’s exactly the kind of jankiness that Raspberry Pi fans (rightfully in this case) are pointing out as to why it’s an inferior experience and I don’t see how it can be overcome on this board series as it’s a design issue.
I legitimately don’t know who this board is for (other than giant clusters of them) because if it’s not for CM4 fans then as I’ve explained who is it going to make sense for? Who else is going to have invested in this form factor already and have the super expensive I/O boards? Why not use microcontrollers or a regular single board computer? There are much more compelling offerings in both of those categories that cost less money / have more flexibility / enjoy better compatibility.
My constructive criticism to Radxa would be to get those images out that have the dtb changes built-in. It’s still a terrible solution but it’s still a lot better than making the users modify their dtb files just to switch I/O board types. This board is straight up disqualified from being a Raspberry Pi alternative/replacement in any way until that happens. If the Radxa CM5 launches with the same issues it will also be automatically disqualified for consideration as a Raspberry Pi alternative for the same reason. You are offering an inferior experience in this case and that is not the case with your other product offerings Radxa!
I kind of am doubting the compute module form factor altogether anyway to be honest. Playing with them again recently has made me feel like I’m playing with obsolete technology after my recent dive into microcontrollers. I’ve been so much more impressed by the microcontroller ecosystem (particularly ESP32). The microcontroller ecosystem seems like where things are really going to me and not to compute modules. I think this form factor is going to fail.
There’s nothing convenient or nice about how this compute module market and the I/O boards surrounding it are developing. The CM4 I/O boards are generally super expensive anyway especially compared to the microcontroller world. Just a regular CM4 I/O board is more expensive than an entire microcontroller solution that comes with all the components soldered to the board that you want already good to go (with even the CPU included via the microcontroller). My entire microcontroller projects cost less to build with everything combined than just the compute module I/O boards cost let alone adding a Compute Module 4 or Radxa CM3 on top of that.
The compute module was a great idea (at the time) but microcontrollers are becoming so powerful so quickly that I really don’t see any reason to keep living in Raspberry Pi / Radxa compatibility hell when microcontrollers are so powerful now (and will continue to become more powerful). Raspberry Pi couldn’t ever produce enough of these to make it a really well-established necessary form factor. I wouldn’t expect Radxa to be able to establish it themselves either especially given they are competing more with microcontrollers now than with Raspberry Pi since Raspberry Pi has been flailing around for years not shipping anything (relatively speaking).
We already have a great modular component ecosystem and it’s not Raspberry Pi or Radxa. It’s generally ESP32 / microcontrollers. Adafruit is making really interesting microcontroller products that I’ve done a lot of coverage on the site that are so much better than anything going on in the compute module market. You can connect individual components together over I2C and build incredible modular projects powered by microcontrollers in the modern age. Without soldering.
I really would encourage people to embrace microcontrollers (even if it’s the RPI Pico / RP2040) instead of compute modules at least for maker builds. They’re so much more compatible with each other already than single board computers ever were / are. They’re also much more pleasant to use frankly. Modern microcontrollers have a lot more power than people realize. They’re already dual core (which is more than the Pi Zero W can say) and typically have built in WiFi/Bluetooth.
If you need the power of a full single board computer then get the Radxa Rock 5B. If you need the form factor of a Pi Zero 2W then get the Radxa Zero. If you need small / modular / expandable then the microcontroller world is infinitely better than anything you’re going to be able to do with these compute modules. It’s only people who are building a small 1U cluster of a whole bunch of these together that this might make sense for and people are already doing that with the Pine64 SOQuartz Blade.