Skip to main content

Rubicon

View source on GitHub

This guide walks you through building and running the Rubicon development runtime on a Raspberry Pi 4 or 5. Rubicon gives you a batteries-included dev environment with USB gadget networking, WiFi, Docker, and Cockpit — connect your Pi over USB-C and start building.

Prerequisites

  • macOS 10.12+ or Linux (Ubuntu 22.04+, Fedora 39+)
  • Docker Desktop installed and running
  • The latest version of the Avocado CLI
  • Raspberry Pi 5 (or Raspberry Pi 4)
  • USB-C cable (for USB gadget networking) or WiFi network
  • SD card

Initialize

Clone the reference or initialize a new project from it:

avocado init --reference rubicon rubicon
cd rubicon

To use a Raspberry Pi 4 instead of the default Pi 5:

avocado init --reference rubicon --target raspberrypi4 rubicon
cd rubicon

Install

Install the SDK toolchain, extension dependencies, and runtime packages:

avocado install -f

Build

Build the extensions and assemble the runtime image:

avocado build

There are no compile steps — Rubicon is built entirely from overlay files and pre-built packages.

Deploy

SD card

Insert your SD card and provision:

avocado provision -r dev --profile sd

Insert the SD card into the Raspberry Pi and apply power.

Verify

USB gadget networking

Connect the Pi to your computer via USB-C. After boot, a virtual Ethernet interface appears on your host. The Pi runs dnsmasq on this interface and advertises itself via Avahi/mDNS.

SSH in:

ssh root@rubicon.local

The default password is empty.

WiFi

WiFi connects automatically if configured. Edit overlay/etc/wpa_supplicant/wpa_supplicant-wlan0.conf before building to add your network:

network={
ssid="YourSSID"
psk="YourPassword"
}

Serial console

Connect to the USB serial console:

screen /dev/tty.usbmodemXXXX 115200

Cockpit

Open http://rubicon.local:9090 in your browser for the Cockpit web management UI.

Docker

Docker is pre-installed and running:

docker run --rm hello-world

Multi-arch containers work via QEMU user-static binfmt:

docker run --rm --platform linux/arm64 alpine uname -m

Customize

Configure WiFi

Edit overlay/etc/wpa_supplicant/wpa_supplicant-wlan0.conf:

ctrl_interface=/run/wpa_supplicant
ctrl_interface_group=wheel
update_config=1

network={
ssid="MyNetwork"
psk="MyPassword"
}

Modify boot config

Target-specific Raspberry Pi boot configuration is in stone/<target>/bootfiles/config.txt.

Add or remove extensions

Edit avocado.yaml to add or remove extensions:

    extensions:
- rubicon
- config-dev
- avocado-ext-cockpit # remove to save space
- avocado-ext-docker # remove if Docker not needed
- avocado-ext-dev
- avocado-ext-sshd-dev
- avocado-ext-cli
- avocado-bsp-{{ avocado.target }}

Rebuild after changes

After any change, rebuild and reprovision:

avocado build
avocado provision -r dev --profile sd