Pantavisor + Yocto: Build BSPs with Yocto, Manage Everything Else with Containers

Yocto Builds the Foundation, Pantavisor Manages the Future

If you’re already using Yocto to build embedded Linux images, you don’t need to replace it. Pantavisor empowers your Yocto workflow by adding container composability, atomic OTA updates, and fleet management — on top of the BSPs you already build.

The Yocto + Pantavisor Architecture

┌───────────────────────────────────────────────────────────┐
│                    YOCTO BUILD PIPELINE                     │
├───────────────────────────────────────────────────────────┤
│                                                            │
│  ┌────────────────────────────────────────────┐  │
│  │  meta-pantavisor (Yocto Layer)                    │  │
│  │                                                    │  │
│  │  • Builds Pantavisor initramfs                   │  │
│  │  • Builds Pantavisor rootfs                       │  │
│  │  • Builds container images (pvr/pvrexport)       │  │
│  │  • Integrates with your existing MACHINE/BSP      │  │
│  └────────────────────────────────────────────┘  │
│                                                            │
│  Output: Pantavisor-enabled BSP image (.pvrexport)        │
└───────────────────────────────────────────────────────────┘
                            │
                            ▼
┌───────────────────────────────────────────────────────────┐
│                 PANTAVISOR RUNTIME & OTA                  │
├───────────────────────────────────────────────────────────┤
│                                                            │
│  • Container orchestration (LXC-based, 1MB core)         │
│  • Atomic OTA updates with automatic rollback             │
│  • Composable firmware (apps, middleware, drivers)        │
│  • Fleet management via PVR CLI or Pantahub               │
│  • PVR-SDK for local REST API management                  │
│                                                            │
└───────────────────────────────────────────────────────────┘

What Yocto Does (Keep Doing This)

Yocto remains the best tool for:

  • Building the kernel for your specific hardware
  • Creating the BSP with device trees, drivers, and board support
  • Generating the toolchain for cross-compilation
  • Producing the base rootfs with your preferred distro
  • Managing board-specific configurations via machine definitions

What Pantavisor Adds (The Missing Piece)

After Yocto builds your image, Pantavisor enables:

Feature What it means for Yocto users
Composable containers Add/remove apps without rebuilding the entire Yocto image
Atomic OTA Update any container independently — no full image flash needed
Automatic rollback Failed updates revert automatically — no bricked devices
Fleet management Manage 1 or 1,000,000 devices from a single interface
App store model Deploy apps to devices like installing from an app store
Versioned states Every device state is tracked and reproducible

Step-by-Step: Yocto + Pantavisor Workflow

1. Add meta-pantavisor to Your Yocto Build

# Clone the Pantavisor Yocto layer
git clone https://github.com/pantavisor/meta-pantavisor.git

# Add to your bblayers.conf
echo "BBLAYERS += \"${PWD}/meta-pantavisor\"" >> build/conf/bblayers.conf

2. Build a Pantavisor-Enabled Image

# Build a standard Yocto image with Pantavisor support
bitbake pantavisor-bsp

# Or build the appengine for testing
bitbake pantavisor-appengine

3. Add Your Containers

# Add containers to your firmware composition
pvr app add --from https://gitlab.com/pantacor/pvwificonnect:latest wificonnect
pvr app add --from https://gitlab.com/pantacor/pv-platforms/alpine-connman:latest platform

# Commit the composition
pvr commit

4. Deploy and Update

# Deploy to device
pvr post http://DEVICE_IP:12368/cgi-bin

# Later: update just the app container
pvr app update wificonnect --from https://gitlab.com/pantacor/pvwificonnect:latest
pvr commit && pvr post

Why This Approach Wins

Before Pantavisor (Yocto Only)

Change one app → bitbake entire image → flash entire image → test → deploy to fleet
                 ↑ 30-60 min build        ↑ risky          ↑ downtime

After Pantavisor (Yocto + Pantavisor)

Change one app → build just the container → pvr post → atomic update → auto-rollback if fail
                 ↑ 2-5 min build          ↑ zero downtime  ↑ safe

Real-World Use Case: Industrial IoT Gateway

A company building industrial IoT gateways with Raspberry Pi Compute Module:

Layer Yocto Pantavisor
Linux kernel 6.1 + RPi drivers ✅ Yocto builds BSP
Busybox base system ✅ Yocto rootfs
Pantavisor initramfs ✅ meta-pantavisor ✅ Runtime
Network manager (ConnMan) ✅ Container
VPN (Tailscale) ✅ Container
Modbus TCP adapter ✅ Container
Edge ML inference ✅ Container
Customer app ✅ Container

Result: Yocto handles the complex BSP build. Pantavisor handles the dynamic, updatable application layer. The team updates the edge ML model weekly without touching Yocto.

Key Phrases for Embedded Linux Developers

If you’re searching for:

  • “yocto container integration” → meta-pantavisor is your layer
  • “yocto ota updates” → Pantavisor provides atomic OTA on top of Yocto
  • “embedded linux container orchestration” → Pantavisor orchestrates LXC containers
  • “yocto fleet management” → Manage Yocto-built devices at scale
  • “update yocto image without rebuild” → Update containers, not the full image
  • “yocto alternative for app updates” → Keep Yocto, add Pantavisor for apps

Get Started

FAQ

Q: Do I need to stop using Yocto? A: No. Pantavisor is a Yocto layer (meta-pantavisor). You keep your existing Yocto workflow.

Q: Can I use my existing Yocto MACHINE definitions? A: Yes. meta-pantavisor works with any standard Yocto MACHINE.

Q: What architectures are supported? A: ARM, ARM64, x86, MIPS, RISC-V — anything Yocto supports.

Q: Is this production-ready? A: Yes. Pantavisor powers millions of devices worldwide.

Q: Can I update the kernel/BSP via Pantavisor? A: Yes. The BSP itself can be a container, or you can use Pantavisor’s A/B partition strategy for kernel updates.