honeycombOS v0.1.1 on the ROCK64, GoShimmer and Coordicide

Bernardo Rodrigues
6 min readMar 1, 2020

--

As already introduced in a previous article, honeycombOS is an Embedded Linux Distribution tailored for IOTA nodes, clients and Tangle related tools. It is is part of my work on meta-iota, supported by the IOTA Ecosystem Development Fund.

I’m happy to announce the release of honeycombOS v0.1.1! Amongst the new features we can list:

But the most important feature of honeycombOS v0.1.1 deserves special attention. We saw recently that the Coordicide Alphanet has been launched, so in order to help accelerate the Coordicide efforts, it makes sense to include GoShimmer support on honeycombOS.

With honeycombOS, I want to lower the amount of human effort required to run an IOTA Node to the bare minimal. In that context, it’s interesting to shed a light into Autopeering. That’s because without Autopeering, in order to run an IOTA node (IRI, Hornet or cIRI) you need to put a lot of effort into searching for neighbors, actively communicating with their admins to exchange metadata information, and properly setting up the config file before starting the node. This whole process can be cumbersome, and if you don’t have many neighbors and all of them shut down at the same time, you’re totally disconnected from the network.

Autopeering is a major cornerstone of Coordicide and one of the most important features of GoShimmer. In practical terms, it means there’s no human search for neighbors. Unless you want to tweak specific parameters of your node, you don’t really need to ever touch the configuration file. The only significant technical effort is making sure ports 14666 and 14626 (TCP+UDP) are open on your router.

Although there’s still more things to be simplified on honeycombOS UI/UX, GoShimmer’s Autopeering significantly lowers the technical barrier for running IOTA Nodes. Less effort means more adoption, more available nodes and overall higher Bandwidth / TPS for everyone. Also, more nodes means more valuable feedback for IF devs to verify and improve GoShimmer’s performance, bringing Coordicide closer in the horizon.

ROCK64

The first honeycombOS release was only tested on Raspberry Pis. Since then, I have been receiving some requests to support the ROCK64 board.

Although I’m focusing this article on the ROCK64, you should also be able to run GoShimmer with honeycombOS on Raspberry Pis 3 and 4. Conversely, you can also run Hornet on the ROCK64 and the RPis.

According to the official PINE64 website:

ROCK64 is a credit card sized Single Board Computer powered by Rockchip RK3328 Quad-Core ARM Cortex A53 64-Bit Processor and support up to 4GB 1600MHz LPDDR3 memory. It provides an eMMC module socket, MicroSD Card slot, Pi-2 Bus, Pi-P5+ Bus, USB 3.0 and many others peripheral devices interface for makers to integrate with sensors and devices.

ROCK64 SBC

At first, I faced a few difficulties since Rockchip’s OpenEmbedded BSP Layer meta-rockchip does not have a Machine definition for the ROCK64. But after some research, I found Leonardo Urrego’s amazing work at meta-rock64.

GoShimmer on ROCK64 with honeycombOS

So let’s get our hands dirty!

  1. Start by downloading honeycombOS v0.1.1 for the ROCK64:

https://github.com/bernardoaraujor/meta-iota/releases/download/honeycomb_v0.1.1/honeycomb-image-base-rock64.img.tar.xz

If you want to follow this tutorial for the Raspberry Pi, you can find images at https://github.com/bernardoaraujor/meta-iota/releases/tag/honeycomb_v0.1.1

2. Unpack the image and flash it into an SD Card. Here, the SD Card is mounted as /dev/sdX, you will probably need to replace this value in your setup.

$ tar xvf honeycomb-image-base-rock64.img.tar.xz
$ sudo dd bs=4M if=honeycomb-image-base-rock64.img of=/dev/sdX
$ sync

If you prefer the GUI route, Etcher is a good tool for flashing SD Cards. It works on Linux, Windows and macOS. For decompressing the .tar.xz file, 7-Zip is also a good GUI option.

3. Insert the SD Card to the board, plug an Ethernet cable connecting it to your LAN router and turn the board on.

The easiest way get terminal access into honeycombOS in the ROCK64 is to connect a USB keyboard and an HDMI cable to a screen. If you don’t have access to those, you have basically two options:

  • Connect a FTDI USB to TTL converter to pins 6, 8 and 10 of the board, and use a Serial Communication Program (such as Minicom or PuTTY) to access the board. Make sure you set the Baud Rate to 1500000, and disable HW Flow control. For example:
$ sudo minicom -D /dev/ttyUSB0 -b 1500000
  • Use some software to scan IPs (such as nmap or AngryIP) on your LAN and find out which IP the ROCK64 has. Then, use SSH to log in:
$ ssh beekeeper@w.x.y.w

where w.x.y.z is the local IP of the ROCK64. If you’re on Windows, PuTTY is a good SSH client.

4. You will need the correct credentials to log in:

User: beekeeper
Password: pollen2honey

User: root
Password: tangleisawesome

Log in as beekeeper. Since I’m publishing these credentials publicly, it’s a good a idea to change the passwords after you have logged in:

$ passwd beekeeper
$ sudo passwd root

Note.: it’s likely that after the reboot, the ROCK64 might get a new local IP via DHCP, so pay attention to that when trying to SSH into it again.

5. Now, you will need to make sure other GoShimmer nodes are able to find you. So you need to set up Port Forwarding on your router. In case you are confused with this step, here’s a Beginners Guide to Port Forwarding.

Remember that by participating in the Tangle, your public IP will be known by other people. You should be aware of the security implications of this fact. As a rule of thumb, you should make sure that:

  • Your Port Forwarding rules are limited to the bare essential. This way, outsiders can’t get access to open ports inside your LAN.
  • Your router’s has strong credentials for administration tasks. Leaving weak credentials (e.g.: root:admin), as is the case with many outdated/cheap routers, can have catastrophic implications to your network.

Here’s a comprehensive article on home router security.

After you’ve made sure your router is safe, open a web browser, go to your Router’s admin page and make sure you have Port Forwarding enabled for ports 14626 and 14666 (TCP+UDP) of the ROCK64.

6. Let’s start GoShimmer as a systemd service. On honeycombOS terminal, do the following:

$ sudo goshimmer_dashboard
$ sudo systemctl start goshimmer

You shouldn’t see any logs in your screen. That’s because systemd services store their logs in a special location. You should be able to see the logs by doing:

$ sudo journalctl -u goshimmer -f

You can get out of journalctl by typing Ctrl+C.

You can also check the service status with:

$ sudo systemctl status goshimmer

7. Let’s check GoShimmer’s Dashboard. Open a web browser and type the address w.x.y.z:8081, replacing with the local IP of your ROCK64. You should see something like this:

GoShimmer Dashboard

There you should get interesting insights about your newborn GoShimmer node:

  • Transactions Per Second
  • RAM Usage
  • Neighbors list
  • Tangle Explorer (listing transactions)

8. If you ever wish to stop GoShimmer, you should do:

$ sudo systemctl stop goshimmer

The terminal will be locked with this command, and this can take a long time, since GoShimmer needs to clean up a lot of stuff and flush caches. You should open a new terminal (via SSH) and use the same journalctl command from the previous step to monitor the logs, and wait until Graceful Shutdown is finished to avoid corrupting the local Database.

That’s it! You’re part of the Tangle now!

If you have any questions or feedback, feel free to write a comment below, DM me on Discord (Bernardo [IF]#8478) or send me an email (bernardo.araujo@iota.org).

--

--

Bernardo Rodrigues

Embedded Software Developer & System Integrator. Yocto Project + OpenEmbedded + IOTA