Installing Brewblox on Ubuntu 20.04 on Raspberry Pi

@Bob_Steers, Is Brewblox supported and possible to run Brewblox on a RasPi on Ubuntu 20.04.

I have gotten to the point of

Brewblox-ctrl setup but get the following errors.


ERROR: for history  no matching manifest for linux/arm64/v8 in the manifest list entries

ERROR: for mdns  no matching manifest for linux/arm64/v8 in the manifest list entries

ERROR: for datastore  no matching manifest for linux/arm64/v8 in the manifest list entries

ERROR: for ui  no matching manifest for linux/arm64/v8 in the manifest list entries

ERROR: for emitter  no matching manifest for linux/arm64/v8 in the manifest list entries
ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries
Command 'docker-compose pull' returned non-zero exit status 1```

You’re using the 64 bit version of ubuntu (linux/arm64/v8). We currently only build for linux/amd64 and linux/arm/v7 (32 bit).

I just ran a quick test, and it seems like our build tooling can generate linux/arm64 images. A bigger problem is that I see “datastore” in your list of errors. That’s an external dependency, and not built by us.

For now I recommend switching to the 32 bit version of ubuntu 20.04 for raspberry. That should work out of the box.

ARM64 support is certainly on the horizon, but neither we nor Raspbian are quite there yet.

1 Like

Thanks @Bob_Steers, I’ll install 32bit…

Good Day,

I am trying to install brewblox on to a RPi4 with ubuntu download from the Rasperry pi site.
All has gone well until I come to install Brewblox.
The installation stalls at a point where docker is being installed with the following error
“E: Package ‘docker-ce’ has no installation candidate
Command ‘curl -sL get.docker.com | sh’ returned non-zero exit status 100”
Grateful for any pointers

cheers

Are you running the 32 or 64 bit version? (The 64 bit version is not supported)

Could you also please post the preceding output? It should mention somewhere in there which version it was trying to install.

Sorry for the delay in getting back. I just had to be sure that I had not been silly and made a mistake.

I downloaded the 32bit version of 20.04 from the RPi org site. Followed the instruction from the Brewblox getting started ran the command brewblox-ctl install: then I got the same result when the script tried to install docker

"INFO Installing docker…

Executing docker install script, commit: 26ff363bcf3b3f5a00498ac43694bf1c7d9ce16c

  • sudo -E sh -c apt-get update -qq >/dev/null
  • sudo -E sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
  • sudo -E sh -c curl -fsSL “https://download.docker.com/linux/ubuntu/gpg” | apt-key add -qq - >/dev/null
    Warning: apt-key output should not be parsed (stdout is not a terminal)
  • sudo -E sh -c echo “deb [arch=armhf] https://download.docker.com/linux/ubuntu focal stable” > /etc/apt/sources.list.d/docker.list
  • sudo -E sh -c apt-get update -qq >/dev/null
  • [ -n ]
  • sudo -E sh -c apt-get install -y -qq --no-install-recommends docker-ce >/dev/null
    E: Package ‘docker-ce’ has no installation candidate
    Command ‘curl -sL get.docker.com | sh’ returned non-zero exit status 100"

Does this provide you with the info to explain the exit code?

Cheers

https://github.com/docker/for-linux/issues/1035 suggests Docker is (again) dropping the ball.

According to the linked issue, you can fix this by running:

sudo nano /etc/apt/sources.list.d/docker.list

This opens an editor. Copy the following in there (replace existing content):

deb [arch=armhf] https://download.docker.com/linux/ubuntu eoan stable

Press Ctrl-X and then Enter to save and exit.

Then run:

sudo apt-get update
sudo apt-get install -y -qq --no-install-recommends docker-ce

If this didn’t raise new errors, you can check whether it installed ok by running

docker version

Afterwards, re-run brewblox-ctl install. It will detect that docker is already installed, and skip that step.

Good news,
Installation proceeded without a hitch this time.

Maybe i should have googled the cause and would have found the post in your first line - must try harder.

Many thanks for the quick response and support.

quick question, can you add tilt service to a simulate spark ? If this is the wrong place to ask please ignore.

Cheers

Me interpreting a google result is dependent on that I’m familiar with details of apt-get behavior, previous Docker issues, and how Docker interacts with Linux OS flavors. I wouldn’t worry about that =)

Spark and Tilts are completely independent: you can show Tilt data in a graph without any kind of Spark, simulated or real.

Any chance we can setup builds for 64 bit arm now? I am not seeing any errors besides eventbus (which I see eclipse/mosquitto has a 64 bit arm repo), ui, spark, and history. Attempting to install on a Pi 4 with 8 gigs of ram and a 64 bit OS.

Technically arm64 builds are possible already. We’re waiting for upstream changes that would make automated builds feasible.

We use https://www.piwheels.org/ for pre-compiled binaries for python libraries that use C code. They don’t support ARM64 yet, and without pre-compiled binaries, our automated build times jump from <10m to >1h. (ARM emulation on AMD build servers is slow)

If determined and reasonably familiar with Docker you can build images from source on your Pi. This will take a while, but be significantly faster than our build server.

Edit: it’s been a while since we actually tested it, so I fired up CI builds for the two repositories that would suffer most:

At time of writing, the history build is still running, but results are much better than expected. Apparently availability of ARM64 wheels on PyPi has improved since our last attempt. The Spark service build “only” took 20m. (~18 of which spent on ARM)

The Spark simulator is another story entirely, but if other repositories show comparable results, we’ll likely make the switch, and add ARM64 to the supported architectures.

Edit 2: it looks like ARM64 added ~10m to both the devcon-spark and history builds. That’s not too bad.

ARM64 is also supported by all of our base images (python, mosquitto, influx, node, redis, traefik, nginx, alpine, node-red). I’ll flip the switch for the develop builds, and do some testing on a Pi4. If that doesn’t yield any big problems, ARM64 will be supported in the next release. Firmware simulator support will likely be added at a later date - building the ARM32 version already is a pain.

1 Like

That is all great to hear as the extra memory per thread really speeds up the UI and with Apple pushing for 64 bit arm to go mainstream I can only expect the use cases to increase. Thanks for testing it out!

I just installed it on my Pi4 with Ubuntu server 20.04, and the base services seem to work out of the box.

We’ll keep testing it on this end. If you’re impatient, you can already install it by running brewblox-ctl install --release develop. After we release, you can edit the .env file to switch release track to edge (the production track).