-
Notifications
You must be signed in to change notification settings - Fork 3
Getting Started macOS
This page walks you from "freshly-imaged Mac" to "Backyard Hero web UI open at http://localhost:1776". Tested on macOS 13 Ventura and newer, on both Intel and Apple Silicon Macs.
On an Apple Silicon Mac and just want to run and use the system? You probably don't need this page. Grab the one-click installer instead — no Docker, no Python, no Homebrew. See Host installer downloads. This from-source build guide is for when you intend to develop Backyard Hero, or for Intel Macs (which have no desktop installer build).
If you already have Docker Desktop and Python 3 installed, jump to Step 3.
Open Terminal and run the following one-liners. None of them require admin (sudo) password if you already have Homebrew set up.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"The easiest way is the GUI installer at https://www.docker.com/products/docker-desktop. Or via Homebrew:
brew install --cask docker
open -a Docker # launch Docker Desktop and let it finish startingWait for the Docker whale icon in the menu bar to stop animating. Test:
docker run --rm hello-worldBoth ship with macOS' Command Line Tools. Force the install if you've never compiled anything before:
xcode-select --installbrew install arduino-cliYou don't need this if you already received pre-flashed hardware or only ever plan to flash receivers over-the-air with the OTA flasher.
Read Production vs Development mode if you haven't yet.
| You want to… | Use this mode |
|---|---|
| Just run shows. Don't care about modifying the codebase. |
Production — pulls os4ivmb/backyardhero from Docker Hub. |
| Hack on the UI / daemon / firmware. | Development — clones the full repo, builds locally, hot-reloads. |
The rest of this page covers both. Skip the steps marked (dev only) if you're going production.
The launchers and compose files live under host/run/osx/. There's no slim "production-only" download — just clone the whole repo:
git clone https://github.com/os4-ivmb/backyardhero_pyro ~/byh
cd ~/byhYou can in principle delete byh_app/, pythings/, and devices/ after first run if you only ever plan to run prod (the container ships its own copy), but they're useful to keep around for firmware flashing.
Plug the dongle into a USB-C port. macOS will enumerate it as a USB-CDC serial device. List ports:
ls /dev/tty.usbmodem*
# Typical output: /dev/tty.usbmodem01If you see nothing, the dongle's firmware might be missing — flash it (see Flashing a Dongle).
Edit host/config/systemcfg.json and set the dongle_port to the value you saw:
{
"host_version": 0.08,
"system": {
"dongle_port": "/dev/tty.usbmodem01",
"dongle_baud": 115200,
"dongle_protocol": "BKYD_TS_HYBRID"
}
}If your port is different (e.g. /dev/tty.usbmodem1101), use that string verbatim. See Connecting the dongle if the port number changes between unplug/replug.
Skip this step if your receivers were pre-flashed for you.
# From the repo root:
devices/utils/build_receiver.sh # one-time, requires arduino-cli
devices/utils/flash_receiver.py --full --node 146 # provision a brand-new receiver as RX146Repeat for each receiver, picking a unique NODE_ID (1–254) for each one. The full reference is on Flashing a Receiver. You'll add each receiver to the web UI in Step 7.
cd ~/byh
./host/run/osx/start.shYou'll see:
- The script create a Python venv on first run and install
pyserial. - The TCP-to-serial bridge start (logs to the terminal).
- Docker pull
os4ivmb/backyardhero:latest(a few hundred MB on first run). - The container start, the daemon connect, and the web app come up.
cd ~/byh
./host/run/osx/start-dev.sh # uses docker-compose-dev.yml; mounts ./byh_app and ./pythingsTo stop everything cleanly: Ctrl-C in the terminal — the script will tear down both the bridge and the docker stack.
Open http://localhost:1776 in your browser. You'll see the dark Backyard Hero shell with the Console tab selected.
- Click Receivers in the top nav. You'll see an empty fleet.
- Click Add receiver and fill in:
-
Identifier: the same string you flashed (e.g.
RX146). -
Type:
BKYD_TS_24_1. -
Cues: click the cue grid to mark which cues this receiver controls (typically
1..8for one cue module,1..16for two, …).
-
Identifier: the same string you flashed (e.g.
- Save. Within a few seconds the receiver should turn green ("Online") in the list. Telemetry — battery, signal, success percentage — will start populating.
- If it never goes online, see the troubleshooting section in Flashing a Receiver.
Now hop to End-to-end show example for a complete walkthrough. The short version:
- Inventory tab → add at least one shell.
- Editor tab → create a show, drop the shell on the timeline, point it at a real cue.
-
Console tab → stage the show, click Load show, type the auth code from the editor, then physically arm the dongle (start switch to STOP, arming switch to ARMED). When the receivers report
loadComplete, click Launch, then flip the dongle's start switch to START. The countdown begins; the receiver fires.
Don't actually wire up real pyro until you've done a blind dry-run with no e-matches connected.
-
"docker compose: command not found" — the modern Docker Desktop uses
docker compose(a plugin) instead of the standalonedocker-composebinary. The launcher scripts auto-detect both. - Permission denied on /dev/tty.usbmodem01 — macOS doesn't usually require special permissions for USB-CDC. If you see this, close any other terminal/Arduino IDE that might be holding the port.
- Bridge keeps logging "auto-reconnect attempt N failed" — the dongle isn't enumerating. Try a different USB-C cable (some "charging only" cables don't carry data) and a different port.
-
macOS Gatekeeper blocks the launcher script —
chmod +x host/run/osx/start.shandxattr -d com.apple.quarantine host/run/osx/start.shif needed.
Getting started
- Overview
- Desktop installers (macOS / Windows)
- macOS
- Linux
- Windows
- Production vs Development
- Connecting the dongle
- Flash a receiver
- Flash a dongle
- OTA flashing
Raspberry Pi
System overview
Subsystems
Hardware
- Receiver firmware
- Dongle firmware
- RF protocol
- Contributor Portal — BOMs, schematics, and board resources
UI walkthrough
Reference
Downloads
- Firmware
- Installers
Module Build & User Guides
- Cue
- Receiver
- Dongle