Livepeer on ARM

Summary

This post is a brief update on some work to run Livepeer on systems using ARM (arm64) architecture.

It follows work by Ethereum on ARM (a project supported by The Ethereum Foundation). @ethereumonarm on Twitter

Devices currently running arm64 include the RaspberryPi 4B (from $35) and NVIDIA Jetson Nano (from $99) mini-devices.
image image

Context

Livepeer Core currently releases pre-built Linux binaries for amd64 architecture on their go-livepeer github releases page. These cater primarily towards infrastructure running in most data centres and mining farms today.

Elsewhere, work is ongoing to release version 2.0 of Ethereum’s currency and smart-contracting network. Incentives for running validator infrastructure in the network will favour distributed clients, over co-located clients, by increasing validator penalties for nodes going offline concurrently with other nodes (e.g. failure of a data centre running multiple nodes).

Projects such as dAppNode and Ethereum on ARM are developing solutions for miniPCs and RaspberryPi, to help decentralise the physical infrastructure running the Ethereum network, instead of having it clustered in mining farms and data centres.

With the expansion of fiber networks into homes and small offices, coupled with the prospect of 5G networks (even for backup), we may be fast approaching a world where the software and the hardware to run “Web 3.0” can realistically be decentralised.

And finally, NVIDIA’s intended acquisition of ARM Holdings for $40bn appears to be a strong statement-of-intent by NVIDIA to develop into the micro-device / IoT space in future, creating “the premier computing company for the age of artificial intelligence”.

Livepeer on ARM

There are currently no pre-built binaries for Livepeer to run on arm64 architecture.

  1. The primary focus of this work was to publish the first pre-compiled binaries for arm64.

  2. Some additional rudimentary testing of livepeer in -broadcaster mode, and in -orchestrator -transcoder mode was also performed.

Build Environment

The build environment comprised a RaspberryPi 4B, 8GB RAM, running this arm64 RaspberryPi Operating System image.

Configuration of the build server was done using ssh over WiFi, and further details are below:

  Operating System: Debian GNU/Linux 10 (buster)
            Kernel: Linux 5.4.42-v8+
      Architecture: arm64
Build Process

The build process used the Source Code from Livepeer’s 0.5.10 release of go-livepeer.

go-livepeer “build from source” documentationon github was used to help run the following commands:

Update, and install pre-requisites:

sudo apt update
sudo apt upgrade
sudo apt install -y build-essential pkg-config autoconf gnutls-dev git curl

Install golang:

wget https://golang.org/dl/go1.15.2.linux-arm64.tar.gz
sudo tar -C /usr/local -xzf go1.15.2.linux-arm64.tar.gz
export PATH=$PATH:/usr/local/go/bin

Get source code:

wget https://github.com/livepeer/go-livepeer/archive/v0.5.10.tar.gz
tar -xzf v0.5.10.tar.gz

Install ffmpeg and build with make:

cd go-livepeer-0.5.10/
./install_ffmpeg.sh 
PKG_CONFIG_PATH=~/compiled/lib/pkgconfig make

Test the software:

./test.sh
Summary Test Report

When running ./test.sh unit tests, the test reported FAIL.

Further manual testing involved:

  • -broadcaster mode - running a node with the command ./livepeer -broadcaster

    • The node was able to receive content on rtmp and serve via http
    • Test streams were run for 72 hours uninterrupted, using ffmpeg to generate a test signal.
  • “BOT network” mode - running livepeer as Broadcaster, Orchestrator and Transcoder.

Released Binaries

The binaries built via this build process are available in the releases page of livepeerOnArm.

Ongoing R&D

The following projects are ongoing, and relate to the ability for Livepeer to run effectively on arm64 chipsets:

Livepeer TV Box (Concept)

Livepeer TV Box is an ultra-low-cost device to be connected to a screen in your home, to allow you to:

  • Transcode content
    • e.g. using a device’s GPU, earning fees on Livepeer network.
  • Consume content
    • Display on the screen e.g. 4k HDMI display
    • This could be free-to-play or pay-to-play content
  • Store content
    • e.g. a device owner’s personal recordings
  • Serve content being consumed live, or from storage
    • e.g. to another node in a distributed content distribution network
  • Broadcast content
    • e.g. from the device’s camera, or from a connected camera device
    • Perhaps also display on the screen.

Livepeer TV Box is currently at concept stage, and may in future may include software from Ethereum 1.0 / 2.0, Livepeer, Swarm, IPFS/Filecoin, ENS, dAppNode, gPhoto, ffmpeg, OBS Studio or VLC to create a device for end-users to interact with, and help run video infrastructure in Web 3.0.

It will also look nice in your home.

Livebulb (Prototype)

Livebulb is a light-bulb-like device to install into a standard lightbulb fitting, which starts streaming from a built-in camera when the light is switched on.

This may be used to stream content for free-to-play or pay-to-play audiences.

Early prototype of Livebulb, using RaspberryPi Zero W with camera module.

This project is looking for collaborators on a Livebulb configuration app.

Next Steps

If anyone is interested in discussing any of the above in any more detail, please feel free to reach out to me on Livepeer’s Discord.

5 Likes

Wow. Nice update. The issue you highlighted related to transcoding failing on ARM is where I would expect things to break at the moment, and is probably the most important low hanging fruit to get sorted. It should unlock a lot.

1 Like

Here is a new toy which some of you might like… The Radxa Rock5b is an arm64 single-board-computer, with a HDMI-in port (as well as 2 HDMI-out).

tl;dr it presents as /dev/video and can support video input up to 2160p@60Hz. Maybe no more need for capture cards?

Here is a link to buy it Rock5 Model B – ALLNET China

Here are the docs: Rock5/guide/hdmiin - Radxa Wiki