Pine64 SOQuartz CM4 Alternative Review

Pine64 SOQuartz CM4 Alternative Review
Pine64 SOQuartz CM4 Alternative Review

I recently reviewed the BIGTREETECH CB1 alternative to the Compute Module 4 and I was very surprised how well it worked with my existing I/O boards. Today we’re going to review my second one which is the Pine64 SOQuartz V1.1 module. This module features 2GB of RAM (with 4GB and 8GB options available). With twice as much RAM (or more) the hardware at least has the potential to outperform the CB1.

We will run the same benchmarking tool using the same SD card to get a direct I/O performance comparison between the CB1 and the SOQuartz. We’ll compare BIGTREETECH’s open-sourced kernel and image offerings to Pine64s and test the CM4 reference I/O board for compatibility. I was comfortable recommending the CB1 as an alternative to the CM4 (as long as running Raspbian isn’t necessary). Will the Pine64 SOQuartz get a similar recommendation?

Let’s find out!

Hardware Used

Pine64 SOQuartz - Bottom View
Pine64 SOQuartz

The Pine64 SOQuartz has a 1.8GHz ARM Cortex-A55 processor as well as a Mali-G52 Bifrost GPU. Onboard ram is LPDDR4 and has variants of 2GB, 4GB and 8GB available.

Links: Pine64.com

Geekworm Copper Heat Sink Set
Geekworm Copper Heat Sink Set

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.

Links: Amazon.com*, Amazon.ca*, Amazon.co.jp*, Amazon.co.uk*, Amazon.de*, Amazon.es*, Amazon.fr*, Amazon.it*

The heatsink kit applied to this board looks like this:

Pine64 SOQuartz - Geekworm Heat Sink Kit Applied
Pine64 SOQuartz – Geekworm Heat Sink Kit Applied

Specifications

  • Quad-core ARM Cortex-A55@1.8GHz
  • AArch32 for full backwards compatibility with ARMv7
  • Mali-G52 2EE Bifrost GPU@800MHz
    • Supports OpenGL ES 1.1, 2.0, and 3.2
    • Supports Vulkan 1.0 and 1.1
    • Supports OpenCL 2.0 Full Profile
  • Neural Process Unit (NPU) capability with processing performance of up to 0.8 TOPS
  • RAM Memory Variants: 2GB, 4GB, 8GB (LPDDR4)
  • Storage Memory: optional 128Mb SPI Flash and optional eMMC module (16GB up to 128GB)
  • WiFi 802.11 b/g/n/ac
  • Bluetooth 5.0

Comparing these specifications to the CB1 we can see that this is much more powerful with a 1.8GHz CPU vs. a 1.5GHz CPU on the CB1 respectively. The GPU is much more powerful as well. The RAM is LPDDR4 instead of DDR3.

Build Quality

The build quality for the board is decent. It’s nothing spectacular but the traces are easily visible.

I do have some unusually messy solder in the top right of the board. Here’s the top view:

Pine64 SOQuartz - Top View
Pine64 SOQuartz – Top View

And the bottom view:

Pine64 SOQuartz - Bottom View
Pine64 SOQuartz – Bottom View

On the right hand side of the bottom view you can see 3 droplet looking spots that almost look wet. These clearly don’t belong there. I was able to scrape these off with my fingernail completely so it wasn’t much of an issue but if get one of these and have something similar try just scraping it off with your fingernail.

The good news is the board feels very solid. Everything is very securely soldered to the board and it doesn’t feel flimsy or cheap. It’s actually very solid and doesn’t have very much flex which feels reassuring / comforting when mounting and unmounting from I/O boards.

Images Available

Like the CB1 the image selection available is pretty slim pickings. There is no Raspbian / Raspberry Pi OS image available.

The official image download page is available here on their Wiki.

At time of writing it consisted of:

  • Manjaro ARM image (many different desktop flavors)
  • Armbian image (not official, made by another user) that features kernel 5.19.7 as well
  • pgwipeout’s Quartz CI
  • Custom Debian image from user PBXForums

To explain why the image offering is so poor Pine64 says they are working toward mainline kernel support. This means they are trying to get all of the drivers necessary for the board inside the Linux kernel so that all distributions would support the board instead of having a small number of distributions that have a bunch of custom drivers to make it work. They have not reached this goal yet.

One new option available that I didn’t see on their wiki is that DietPi recently added support for the SOQuartz.

Testing Reference Board w/ Available Images

Manjaro with Reference Board

First up is the official reference board for the Compute Module 4. I wrote the Gnome desktop image to my SD card and fired everything up.

Nothing. No Ethernet and my display is giving me an error saying that it was outputting a very low resolution out of range of the display. It was time to hook up the USB to serial console so I could see what was happening:

Pine64 SOQuartz - USB to Serial Connection w/ Laptop
Pine64 SOQuartz – USB to Serial Connection w/ Laptop

It just looked like Manjaro was trying to boot and then nothing happened:

Model: Pine64 RK3566 Quartz64-B Board                                           
Net:   No ethernet found.                                                       
Hit any key to stop autoboot:  0                                                
switch to partitions #0, OK                                                     
mmc1 is current device                                                          
Scanning mmc 1:1...                                                             
Found /extlinux/extlinux.conf                                                   
Retrieving file: /extlinux/extlinux.conf                                        
1:      Manjaro ARM                                                             
Retrieving file: /initramfs-linux.img                                           
Retrieving file: /Image                                                         
append: initrd=/initramfs-linux.img console=ttyS2,1500000 earlycon=uart8250,mmis
Retrieving file: /dtbs/rockchip/rk3566-soquartz-cm4.dtb                         
Moving Image from 0x2080000 to 0x2200000, end=3a90000                           
## Flattened Device Tree blob at 0a100000                                       
   Booting using the fdt blob at 0xa100000                                      
   Loading Ramdisk to 7d6c4000, end 7deec391 ... OK                             
   Loading Device Tree to 000000007d6a6000, end 000000007d6c3503 ... OK         
                                                                                
Starting kernel ...                                                             
                                                                                
:: running early hook [udev]                                                    
Starting version 251.6-2-arch                                                   
:: running early hook [plymouth]                                                

What is supposed to happen is I’m supposed to be taken to a prompt where I have to set everything up (in the serial console). This did not happen. Perhaps I needed to make more dtb modifications to get the reference board to work?

I think not. That’s a fail. Why am I having to use the serial console to log in for the first time? Why can’t it output the correct resolution to my HDMI screen so I can just do it with a keyboard? What are they thinking?

It’s time to move onto another image as we still have DietPi and the unofficial Armbian image.

DietPi with Reference Board

Let’s try a newer flavor that isn’t even on the official wiki yet. I’m going to try the DietPi image I linked to in the images section earlier. I downloaded the latest image and wrote it to the SD card. I had the USB to serial adapter all connected to see what happened:

U-Boot 2017.09 (Jul 15 2022 - 09:39:12 +0000)

Model: Pine64 RK3566 Quartz64 Board
PreSerial: 2, raw, 0xfe660000
DRAM:  2 GiB
Sysmem: init
Relocation Offset: 7d39f000, fdt: 7b9f9f78 
no mmc device at slot 1
dwmmc@fe2b0000: 1 (SD), dwmmc@fe2c0000: 2, sdhci@fe310000: 0
Bootdev(atags): mmc 1
MMC1: Legacy, 50Mhz
PartType: EFI
No misc partition
boot mode: None
FIT: No boot partition
No resource partition
Failed to load DTB
Failed to get kernel dtb, ret=-19
io-domain: OK
** Invalid partition 3 **
Using default environment

Model: Pine64 RK3566 Quartz64 Board
rockchip_set_serialno: could not find efuse/otp device
CLK: (sync kernel. arm: enter 816000 KHz, init 816000 KHz, kernel 0N/A)
  apll 816000 KHz
  dpll 528000 KHz
  gpll 1188000 KHz
  cpll 1000000 KHz
  npll 24000 KHz
  vpll 24000 KHz
  hpll 24000 KHz
  ppll 100000 KHz
  armclk 816000 KHz
  aclk_bus 150000 KHz
  pclk_bus 50000 KHz
  aclk_top_high 300000 KHz
  aclk_top_low 200000 KHz
  hclk_top 150000 KHz
  pclk_top 50000 KHz
  aclk_perimid 300000 KHz
  hclk_perimid 150000 KHz
  pclk_pmu 50000 KHz
Net:   clk_get_by_name(master_bus) failed: -22eqos_probe_resources() failed: -22No ethernet found.
Hit key to stop autoboot('CTRL+C'):  0 
## Booting FIT Image FIT: No boot partition
FIT: No FIT image
Could not find misc partition
ANDROID: reboot reason: "(none)"
optee api revision: 2.0
TEEC: Waring: Could not find security partition
Not AVB images, AVB skip
android_image_load_by_partname: Can't find part: boot
Android image load failed
Android boot failed, error -1.
switch to partitions #0, OK
mmc1 is current device
Failed to mount ext2 filesystem...
** Unrecognized filesystem type **
Failed to mount ext2 filesystem...
** Unrecognized filesystem type **
MMC error: The cmd index is 0, ret is -110
mmc_init: -110, time 5
starting USB...
Bus dwc3@fcc00000: usb maximum-speed not found
Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
Bus dwc3@fd000000: usb maximum-speed not found
Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
scanning bus dwc3@fcc00000 for devices... 1 USB Device(s) found
scanning bus dwc3@fd000000 for devices... 1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found

Device 0: unknown device
clk_get_by_name(master_bus) failed: -22eqos_probe_resources() failed: -22clk_get_by_name(master_bus).
clk_get_by_name(master_bus) failed: -22eqos_probe_resources() failed: -22Config file not found
clk_get_by_name(master_bus) failed: -22eqos_probe_resources() failed: -22clk_get_by_name(master_bus).
clk_get_by_name(master_bus) failed: -22eqos_probe_resources() failed: -22clk_get_by_name(master_bus).
clk_get_by_name(master_bus) failed: -22eqos_probe_resources() failed: -22=> 

Wow. This is not going anything like the CB1. I literally have not been able to just write an image and get it to boot so far. Armbian maybe?

Armbian with Reference Board

I was losing patience at this point and beginning to question whether I had a defective module or what on earth could be going on. Can Armbian save the day and verify my sanity and that I indeed know how to write an image to a SD card correctly?

Pine64 SOQuartz - Armbian Successful Boot
Pine64 SOQuartz – Armbian Successful Boot

YES! Armbian for the win. This thing does actually work after all. I have display and link lights so this is looking much more promising. USB is working on the reference board here and I’m able to use my wireless (via dongle) keyboard.

I fully updated the device with:

sudo apt update && sudo apt full-upgrade -y

Once the updates were complete I rebooted. I then verified to make sure WiFi and Bluetooth were working (they are).

Now that we can finally boot into a working OS let’s see what the board can do performance wise!

Benchmarking I/O Performance

It’s time for benchmarks! Theoretically this board should outperform the CB1 given the more powerful CPU and LPDDR4 RAM.

You can verify the performance of your SD card on Pi Benchmarks using the following command:

sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash

Here are the results:

     Category                  Test                      Result     
HDParm                    Disk Read                 22.72 MB/s               
HDParm                    Cached Disk Read          22.77 MB/s               
DD                        Disk Write                15.8 MB/s                
FIO                       4k random read            2253 IOPS (9014 KB/s)    
FIO                       4k random write           755 IOPS (3021 KB/s)     
IOZone                    4k read                   9441 KB/s                
IOZone                    4k write                  2198 KB/s                
IOZone                    4k random read            8340 KB/s                
IOZone                    4k random write           3038 KB/s                

                          Score: 1,081

The full Pine64 SOQuartz benchmark can be viewed here on Pi Benchmarks.

The CB1’s score on the benchmark was 1,070. We outperformed it but honestly by less than I thought we would for sure! I did use the exact same SD card as the CB1 a few days ago.

This is a fantastic performance score with I/O performance really similar to a Pi 4. Both the CB1 and the SOQuartz perform very well. To get a Pi that would perform as well as either of these modules would cost you something like 3x-8x roughly than what you can get these modules for easily from most places in the world (as long as you wait the few weeks for shipping).

Pros / Cons

Pros

  • Easy to order individual modules
  • Price of $35 for the 2GB module is much less expensive than a CM4 in this market
  • Hardware is more powerful than the BIGTREETECH CM1 (as well as having much larger memory selections)

Cons

  • Extremely limited image selection due to Pine64 working toward mainline support rather than offering official images
  • Not currently available in many marketplaces like Amazon or AliExpress — you generally need to order directly

Conclusion

Pine64’s strategy of going for mainline kernel support before having any kind of official image has left it pretty hard for newcomers. The CB1 pretty much “just worked” with everything I threw at it using their official image. I wish I would have tried Armbian with this board first. Definitely don’t waste your time on anything but Armbian.

Once you get a working Armbian installation the performance is fantastic. The hardware is quite powerful. I got the least powerful version of the board at 2GB as well since it can go to 4GB/8GB. Hopefully Pine64 is close to getting mainline support finished for this board. I definitely see the power of their dream / vision to have a mainline kernel supported drop-in CM4 replacement. For now you will definitely have to expect to use Armbian until that happens (or more images come along).

I think I would still recommend this as a Compute Module 4 alternative as I did the BIGTREETECH CB1! I would just say definitely use Armbian or you will have a bad time. These are available for $35 from the Pine64.com web site (and that is where I ordered mine from, I still don’t see an AliExpress listing). That’s quite a bit more than the CB1 modules but they’re easier to buy individually than the CB1 modules.

Other Resources

I’ve also reviewed the Pine64 SOQuartz Blade here

A great soldering iron by Pine64 is called the Pinecil which I’ve reviewed here

See my BIGTREETECH CB1 Review for another CM4 alternative

Ubuntu can now run on RISC-V boards like the MangoPi MQ Pro here

See all of the rest of my SBC reviews here

Subscribe
Notify of
guest

2 Comments
Inline Feedbacks
View all comments
Aaron Peterson
Aaron Peterson
4 months ago

I had the exact same problem with sd card booting. If you boot from an emmc module, manjaro and the others work fine. I too was frustrated but in the end I will say this: The pine64 discord channel is absolutely amazing and the community is beyond helpful when it comes to ironing this stuff out. You can talk to pgwipeout himself as well as a host of other experts. Very cool write up and thanks for sharing.