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.
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.
-
The primary focus of this work was to publish the first pre-compiled binaries for
arm64
. -
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 viahttp
- Test streams were run for 72 hours uninterrupted, using
ffmpeg
to generate a test signal.
- The node was able to receive content on
-
“BOT network” mode - running
livepeer
as Broadcaster, Orchestrator and Transcoder.- The Transcoder process was observed to fail when a stream began. This issue on
go-livepeer
github contains more detail.
- The Transcoder process was observed to fail when a stream began. This issue on
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.