We got a CM3588 + NAS board combo recently since we've been wanting a NAS.
We saw Mr. Tech Tip talk about it, and had been wanting a NAS exclusively with M.2 drives (or at least as many as possible) as we wanted something small, with re-usable drives (e.g. in case you wanna put them in a desktop or laptop) and quiet (meaning no hard drives, even more so when they're so likely to fail).
The main selling points for it were this (and why we were interested):
- low power consumption
- a good SoC with nice AArch64 CPUs, possible video decoding/encoding support
- 4x M.2 slots with a PCIe Gen3x1 lane each (bifurcated from a hardware PCIe Gen3x4)
- A Realtek 2.5GbE Ethernet NIC
- Possible capture card via the input HDMI port and hardware
- and not expensive for those points!
The boasted power consumption seemed good (though we have no way of verifying that currently, but it's definitely less than 25W) and it was an AArch64 SoC, with reasonable performance and RAM, for a pretty good price considering all of those things.
There's a hiccup, though: it's a Rockchip SoC. A RK3588, specifically. Rockchip isn't exactly known for having good Linux mainline support, though it's improving thanks to Collabora (and for U-Boot too).
Here's our current setup, in the end:
- The CM3588 compute module, with 8GB of RAM (16GB was out of stock) and a 64GB eMMC
- The NAS carrier board (it came preinstalled in our case)
- Some DC power adapter I had on an external HDD enclosure which could provide 12V 2A, so I don't have to use (or buy) some China-to-EU plug adapter (I find their plugs as dangerous as NA ones)
- 2x M.2 Crucial P3 Plus 4TB drives (planning to add more if needed, but for now more than enough for our needs)
- The drives are setup in a BTRFS RAID1 configuration.
- We use an SiliconPower 64GB SD card as the boot drive, both for practical reasons but also because it was the most convenient for trying to get everything running with what I did.
- Running Tailscale (for access everywhere and anywhere) and Samba (for file sharing and macOS Time Machine support) on it.
As for the Linux mainline support: that's where the struggle is.
There is somewhat-okay-ish Armbian support, but I wouldn't recommend it; and I am a Certified Debian Hater™️. It uses the vendor's U-Boot, no EFI, and a lot of surprising kernel patches and tweaks on top of the Collabora kernel tree.
Here's what I did (if you ever want full details or a guide, feel free to ask):
- I patched and compiled Collabora's u-boot with Armbian's U-Boot DeviceTrees, and took Armbian's kernel DeviceTree. I configured it to load that kernel DeviceTree and then boot the EFI boot manager.
- I then partitioned my SD card in a better way than Armbian did (at least, for my tastes): the RK3588 boots up by loading data from sector 64 of the eMMC or SD card, and Armbian did not protect that section or set up partitions; they only had one partition that started off later to compensate, but made the space show as unused otherwise (when it is in fact used!) So I made that a partition, and also another partition for the U-Boot TPL (required on Rockchip).
- Then, I plopped the SD card into qemu-aarch64 with a Fedora Server ISO, did a minimal install and let it add the partitions it wanted (including EFI, as I wanted EFI-based boot).
- I added the linux-next COPR so I could have the linux-next branch kernel builds (best for the hardware support I wanted, as Linux 6.9 wasn't out yet), and added configuration files to force Dracut to include the required drivers for mounting the rootfs as they weren't built-in by the kernel.
Fedora boots up, Ethernet works, the M.2 work, though USB3 doesn't work (annoying but I wasn't planning on using it yet). I haven't tried out the display output (or capture either), and the video decoding/encoding HW & GPU support isn't quite there yet either.
There are big issues and a few reasons why I can't recommend it (yet, at least):
- The mainline driver support is still in progress. This should be far better by Linux 6.10.
- We're getting random crashes via CPU hard lockups (which are fairly uncommon; it took more than a week to get one), and booting up can be really hard for no reason for the same reason (like, you have an Ethernet cable plugged in but to a different device, or you have a flash drive connected to a USB port). I've yet to investigate why that happens.
- The standoffs for the M.2 drives do NOT take M.2 screws (why!?). That requires you to get M.3 screws, apparently. We're getting a set of M.2, M.2.5 and M.3 soon, hopefully we can screw them in...
- The overall Linux support. It really requires a lot of patience and tinkering if you want to get something clean or recent running.
Still, it's a neat board. I'll keep tinkering with it and hopefully solve those issues, because I do still quite like it! With more driver support this could be a perfect Jellyfin + NAS board combo for homes.