My experience of building a full Iota node on an ARM64 board

Ron Kamphuis
Feb 9, 2018 · 5 min read

It was October 2017 when I first heard of the possibility to run a full node to support the IOTA network. I was intrigued by the concept of the Tangle, and wanted to contribute to the network myself by running a full node. But I did not feel much for a vps server. I wanted to have it running on my own device. One that I could maintain myself and play around with.

But running on a pc would mean I had to leave my pc on 24/7. This goes against my believe in blockchain technology. I lost my enthusiasm for Bitcoin because of the huge amount of energy that’s being wasted by mining farms. It would be silly if I would waste more power than needed on a full node. This is when I started to look into low power devices. Of course I first looked at Raspberry Pi. It is the most popular device on the market and it was also the only device I knew about back then.

How hard could it be?

But the raspberry Pi turned out to be incapable for running a full node because of its 2GB memory limit. This is when I looked at other, more powerful, boards, and my eye felt on the Rock64. It had all the specifications needed to run a full node.

Image for post
Image for post
Rock64 board from Pine64

Unfortunately, I couldn’t find anyone on the web with experience or a tutorial about setting up a node on a Rock64, but because of my enthusiasm I thought: “let’s deal with that later. How hard could it be anyway?”

I had no experience with Linux at all, nor did I ever compile any code. But in my daily job I’m Principal Tech Artist at a gamestudio named ForceField VR. They make VR titles for companies like Oculus. My job varries from creating complex shaders, to improving the workflow of artists. I often create scripts in various languages to support this. So I do have technical knowledge and this helped me a lot during this project.

Google was my friend

When I ordered my Rock64 I had it all figured out. I needed a HDD that I connected via a USB3 to SATA cable. Furthermore I needed a power plug and a SD card. I still had an old HDD lying around so that was already covered. Later I discovered that a heatsink would have been a good idea as well. I bought this somewhere else because the shipping itself would cost more than the heatsink.

Image for post
Image for post
HDD Connected to the Rock64

My Rock64 arrived somewhere late December. I was completely ready to start building the node. Ok, let’s start: Google: How to install Linux. A huge list of possible Linux images crossed my screen. I was overwhelmed by it and after trying to find out what the best one was, I just picked one randomly.

It turned out to be a bad choice of course. I can’t remember which image I choose, but it had a laggy desktop. Before I continued I started wondering: “If this desktop is already so laggy and slow, how much resources does the desktop then take?” I didn’t even start profiling it. Instead, I did some more image research and picked a new one. An image with only the bare minimal: Debian ayufan minimal.

With the Linux image installed and running I was ready for the next step. I wanted to put my root on the HDD instead of the SD card. I read somewhere on the internet that this could improve stability and possibly read/write times, so I gave it a go. I followed a tutorial and it already went wrong at step one:

“apt-get update”

This gave me a lot of errors. Great! This is really motivating…

It turned out to be a network issue. Because I flashed a minimal version of Linux, I had to manually set the correct settings.

My first code compiling

Bit by bit I got myself further along the process. Of course I encountered lots of problems, but with the help of google, people in discord, and a colleague (Who is a C++ programmer and familiar with Linux) I got myself pretty far. I wrote down everything I did, because I knew I wanted to create a tutorial of this, so people don’t have to experience the same problems I encountered.

The biggest challenge was that for a lot of packages the ARM64 version is missing. In this case, you need to download source code, compile it for ARM64, and hope it doesn’t give any errors. Of course 9 out of 10 times it did return errors, and I had to find out what caused it. Missing includes, errors in the code, mismatch versions, I think I've seen all the problems you can encounter when compiling.

Image for post
Image for post
Scale reference of the node

Sorry my dear wife

I spent about 10 evenings of around 6 hours each on getting the node up and running. Every evening I got a little bit closer to my goal, and that was what made me keep trying. My wife is pregnant and by the time I was working on setting up the node she was very tired so she went to bed early. This gave me all the time in the world, something I hadn’t experienced anymore in a couple of years. But it also meant that I went to bed at ridiculous times. 2 A.M, 3 A.M, and even once 3.30 A.M. I always tried to sneak into my bedroom, hoping she wouldn’t hear me. But the next day she frequently asked me: “I though you said you wouldn’t make it late last night?” Of course I had to go to work the next day as well, with the alarm set at 6.30 A.M.

I must have walked around like a zombie at some time, and I think it’s also the reason that I became ill after 2 weeks of working. But I was done. The node was running and I’ve not felt myself so proud anymore in a long time. Without any Linux experience, and without ever compiling anything in my life, I got myself a node running on an ARM64 Rock device. Dedication and believe in IOTA brought me this far.

Image for post
Image for post
I embedded the Rock64 into a NesPi casing.
Image for post
Image for post
Image for post
Image for post

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store