· 10 min read
DTV Electronics - the CM3Rat
DTV has taken a slightly different path that is more aligned to their FOSS ethos (Umbrel is not fully FOSS) by partnering with Citadel as their default OS. I was excited to try Citadel as I have pushed Umbrel to its limits in a number of ways and while I am a strong supporter, I am open to a new experience.
Late last year I saw a post on X from DTV (Don’t Trust Verify) Electronics looking for people to “give an honest review” of their CM3rat alpha release - a hardware carrier board designed specifically to run a Bitcoin node. DTV Electronics is an Estonian company founded on bitcoin first principles. The board is the culmination of their vision to support self-sovereignty by running your own bitcoin node. You can learn more here:
Thanks for reading LIFEonBTC! Subscribe for free to receive new posts and support my work.
As many of you already know, this is something that I am very passionate about - I run two nodes and a lightning node myself all on the Umbrel OS.
DTV has taken a slightly different path that is more aligned to their FOSS ethos (Umbrel is not fully FOSS) by partnering with Citadel as their default OS. I was excited to try Citadel as I have pushed Umbrel to its limits in a number of ways and while I am a strong supporter, I am open to a new experience.
Now, before I dive right into my first-hand account, I want to share an incredibly well researched review of the CM3rat by Andrea Carnimeo of Blockdyor - DTV Electronics CmRat Review: An Affordable Bitcoin Node (blockdyor.com) Having read this myself I wasn’t sure that I could really offer much more than what Andrea provided as his review was quite thorough. For hardware specs, company background, the default Citadel experience and Citadel performance specs - read his review as it is excellent and highly recommended.
That said my journey was quite a bit different. I could not get Citadel to install and while the TG group was helpful and I am sure we would have gotten it resolved eventually - I am a bit impatient, I like to tinker and decided to go my own way.
Before we take that journey let me be very clear that I am NOT making this a Citadel versus Umbrel comparison. I hit a roadblock, did some trouble shooting, checked all the steps, redid my work got the same result and while waiting for an answer went down another route as is my nature. I will get Citadel running on the CM3Rat in the near future and will post an update once I do.
The Hardware
Since my review is much more about my journey of getting an OS onto the board, I better get my thoughts out about the hardware itself right away. All in all, this is a rock-solid piece of kit with a very unique form factor (small) and so damn quiet I wouldn’t even know it was there if it weren’t for the flashing LED’s. As you will read further on, I have flashed the microSD card many, many times and had no issues with the board. It has been hard powered off (storm killed the electrics) and not even blinked. If I had one single critique it is that I don’t like the location of the flash card as it is almost entirely covered by the NVME. Yes, you can pop it in and out while the NVME is installed but it is difficult and can feel a bit dicey. Outside of that - it is pretty much perfect. I am excited to play with the GPIO port at some point but as a plug and play BTC node - it is great as is. I cannot wait to see the full production unit in a case preloaded and ready to plug in! This is a very solid alternative to much pricier options and even some of the DIY options I have used (beelink minipc) in the past.
Setting the stage
I received the board between Christmas and New Years from DTV Electronics. Everything looked good no damage in shipping BUT I was missing some key parts (I knew I had to supply these) namely a microSD flash card and an NVME SSD. So, I placed an order on Amazon.de (I am in Portugal) and waited. Shipment lost, order replaced, waited and finally arrived January 11th. Ripped it all open (had to keep the boxes away from the huskies) and realized I did not have a POE injector for power. Back to Amazon and FINALLY had everything I needed by Sunday the 14th.
Houston we have a problem
So, setting this up is simplicity in itself the process involves a few major steps that anyone who has worked with a Raspberry PI will be familiar with:
Flash the OS image to the microSD using the Citadel installer or Balena Etcher if you are not on Windows.
Pop the microSD into its slot on the bottom of the board.
Install the NVME
Plug in your POE ethernet cable, make sure you see LED’s light up and the fan spinning.
Wait 3-5 minutes and fire up your browser at citadel.local
Step 1 is where I hit my first snag. For some reason when I used the Citadel Installer the flash would fail complaining the drive was not FAT formatted. No worries - fire up Balena Etcher and wham image flashed no problem. Carry on!
Got to step 5 and browser reports “Error- connection refused“ hmmmm. ok checked my router - device is there it has an IP address let me try that and same result. Did some digging joined the telegram group, looked through other people’s posts - did not seem as if others had my issue but found the ssh details. Perfect let’s see if this thing is alive.
I fired up a terminal session and was able to connect to the device via ssh. Great! Checked around a bit and could see that the Debian base was there but citadel was not running. I went to the scripts directory and executed sudo ./start. The install began to proceed and then failed with an http error while trying to download an image. hmmm ok I know this issue as my ISP seems to not resolve a LOT of DNS lookups going to GitHub and similar places. I decided to fix this network wide, (I have been thinking about this for a while now.) installed Pi-Hole, disabled DHCP on my router and long story short -no more DNS resolution issues!
So, we are back at the terminal after rebooting (to make sure we were getting an IP from Pi-Hole), ran sudo ./start and the install went past the image download point and then failed again. As I mentioned before I reached out for support. Tried the same image but this time from the TG group link, had the same issue and waited.
Go with what you know
At this point, I am waiting and not getting a quick reply. This isn’t a statement about DTV support - the people on the group are awesome, helpful and supportive. I’m just not very patient. So, I am poking around, and a light bulb goes off - hey this is Linux - why not just install Umbrel? So I did.
Using the base already provided I followed a familiar path which is running Umbrel on Ubuntu (linux) and installing via the terminal. Since I already had Debian running, I could skip the Ubuntu install. Into the terminal went: sudo curl -L https://umbrel.sh | bash and…… Umbrel was up and running lickety split!
It recognized that docker was already there and offered me to back out but I let it proceed and lo and behold it worked! Or so I thought but more on that in a minute. So I installed the Bitcoin core app and began happily syncing the blockchain. I was feeling pretty stoked, let the TG know my progress and that I was going to see where this road led. Out of curiosity I checked the Umbrel settings page and then it dawned on me - oh shit! This is all running on the 128gb microSD! Umbrel did not see the NVME card at all and the blockchain sync was going to fail pretty quick as it would run out of space.
Additional drives are not natively supported in Umbrel. You can make it work and I have contributed my method to the Umbrel community to safely add other volumes even network volumes to apps when running Umbrel on Ubuntu (Linux). I probably could have left the install as is and just added a volume to the bitcoin app BUT I decided to delete Umbrel and then reinstall with an alternate installation path so Umbrel would be on the NVME as mounted by Citadel. This in short did not work. Permission issues and all kinds of other problems. I however had seen a path and would not be denied.
The Radxa Rock 3 Compute Module with Raspberry Pi Compute Module 4 IO board.
After combing through the CM3Rat TG group, the installation notes, background story etc. I finally found the repository for Debian and Ubuntu Linux images that were supported by the board the CM3Rat is built off. It is VERY important that you use the right image as the base Rock3 board image will NOT see the NVME. Frankly it took me longer than it should have to find and flash the right image but once I did, I was finally set up for success!
Here is the link for anyone who wants to go this way:
https://github.com/radxa-build/radxa-cm3-rpi-cm4-io/releases/tag/b15
MAKE sure you click on the latest release link on this page as new builds come out monthly.
Putting Umbrel where you want by moving the /home directory
As I mentioned prior you can tell Umbrel where to install by specifying a path in the install command and I could have gone that way again, but I prefer to separate the /home directory from the OS on Linux as a data preservation best practice. So, after getting Debian installed (seemed to have better support by Radxa then Ubuntu) I hit the terminal to make sure the NVME was recognized by the OS, and everything looked as expected. Next, I changed the path for the home directory (default Umbrel install location) to the NVME drive with the following steps:
use lsblk to identify the drives and UUID
format the NVME if needed
- sudo mkfs.ext4 /dev/nvme0n1
Create a mount point for the new home directory
- sudo mkdir /mnt/newhome
Mount the new partition:
- sudo mount /dev/nvme0n1 /mnt/newhome
Copy the data from the existing home directory
- sudo rsync -aXS —exclude=’/*/.gvfs’ /home/. /mnt/newhome/.
Update Fstab using the UUID of the NVME you identified in step 1
- sudo nano /etc/fstab
Add a new line for the NVME drive replacing your-UUID with the correct UUID
- UUID=your-UUID /home ext4 defaults 0 2
Reboot - sudo reboot and then make sure the new /home is correctly mounted on the nvme using:
- df -h
You could add a step in here to back up the original /home directory and delete it at the end. I did not do this as it was a brand-new install and if I did mess up I would just reflash and try again.
Install Umbrel
So we are finally ready to install Umbrel and can do so by entering:
curl -L https://umbrel.sh | bash
Assuming everything goes well we will get a success message along with an IP or hostname to connect to the web UI. As you can see from the settings page Umbrel is up and running the latest version on the 1 TB NVME with all 8 GB of RAM recognized. Since I took this after installing the Bitcoin app the storage is already being happily eaten up with the Bitcoin blockchain!
I am on day two of syncing the blockchain (minus a few hours from the power outage) and it seems to be syncing on par or even slightly faster than my Ubuntu machine on the beelink and WAY faster than my raspberry pi based “the bitcoin machine” setup. I’ll do some performance testing as well once it is all synced up and then…. tear it down and try Citadel again.
Look forward to a full report - hopefully it is easy and brief!
Thanks for reading LIFEonBTC! Subscribe for free to receive new posts and support my work.