Start here

QLab runs your show from a laptop you often can’t see. QLAB Buddy is a small touchscreen that puts the show back in front of you, and lets a cue fire a prop too.

What it does

  • Shows the cue you are on, its notes, and a timer, on your table or in your hand.
  • Fires a prop from the cue. The cue that starts the music can also start the effect.
  • Runs the show from the screen, so the Mac can stay in its case.

What you need

  • The board. A Waveshare ESP32-S3 Touch LCD 3.5″. Links are in Hardware.
  • QLab 5 on a Mac, or Go Button on an iPhone. Either one.
  • WiFi that the Buddy and your show share. No internet needed.
  • A USB cable to the Mac also works for watching and running the show. Props live on the WiFi, though, so to fire them the Buddy must be on it too.

How to set it up

Plug it in USB-C Flash it One click Give it WiFi Settings cog → WiFi Open your show QLab or Go Button when ready Pair props optional, anytime
Get the hub running first, then add props whenever you’re ready — see Pairing Devices.
  1. Hold the board’s BOOT button while you plug it into your computer, then let go. This is boot mode. A dark screen means it worked.
  2. Click Install in Flash Firmware, in Chrome or Edge.
  3. On the board, tap the cog (top right), then WiFi, then +. Type your network name and password.
  4. Open your show. The Buddy finds it within a few seconds. First time with a show file? QLab and Go Button each need two one-time settings or nothing connects. See QLab or Go Button.

Props are optional and come later. See Pairing Devices.


Hardware

Four boards, each a small ESP32 board with a USB-C port. You only need the Buddy. Add the others when a show calls for them.

Every board flashes from this page, in Flash Firmware.

DeviceWhere to buy the board
QLAB Buddy Waveshare ESP32-S3 Touch LCD 3.5″ 480×320 Waveshare · Amazon US · UK · EU · Canada
RF Relay LilyGo T-Embed CC1101 Plus LilyGo · Amazon
Universal Controller NULLLAB Maker-ESP32 NULLLAB · Amazon US
Universal Controller DFRobot Romeo Mini ESP32-C3 DFRobot
QLAB Buddy Mini Waveshare ESP32-S3-Touch-AMOLED-1.8 (V2) Waveshare · Amazon US

QLAB Buddy

Current firmware: v… · built checking… · Release History

The hub. A 3.5″ touchscreen that shows your show live (the cue, its notes and a timer) wherever you can see it. Every prop pairs to it. It works with QLab 5 on a Mac, or Go Button on an iPhone with no Mac at all.

📺Live cue viewName, notes, cue type and timer, live from the show.
🎬GO and PANICA tap of BOOT fires GO, and a 5 s hold fires PANIC. Hold the left or right edge of the screen to step back or forward a cue.
📱Go Button modeShow timer and cue nav from an iPhone. No Mac required.
🔌USB-C, WiFi, hotspotUSB-C and WiFi run side by side. The show hotspot is the Buddy’s own WiFi, with its own name and password, for when there is no router. Props can live on it too.
🪄Hub for propsProps pair to it, then take their network, address and updates from it, and follow it when it changes WiFi.
🔥Fire props from cuesIn QLab, a Network cue fires the prop. In Go Button, a short tag typed into the cue’s own name does it.
🎛️RF Springboard 0.13.2Turn the screen into a panel of big buttons that fire your RF Relay’s remotes. See RF Springboard.

Hardware

Board
Waveshare ESP32-S3 Touch LCD 3.5" 3.5″ touchscreen, 480 × 320 · ESP32-S3 · 4 MB flash, 8 MB PSRAM · three buttons (BOOT, PWR, RST) · USB-C · ~$35
Waveshare  ·  Amazon US  ·  UK  ·  EU  ·  Canada

Want to print a case and add a battery? See the case + battery in Community Mods.

Screens

Three tabs across the top, and a cog for Settings.

PageWhat it’s for
LIVEThe cue the show is on, its notes and a timer. Hold the left or right edge to step a cue.
DEVICESEvery paired prop, with PING to find it. Tap + in the corner to pair a new one.
APILive readouts from outside services. See Magic API.
⚙ SettingsWiFi, Hotspot, Workspace (pick the show), OSC Access, RF Springboard, Software and, on the 3.5″, Brightness.

Before 0.13.2, Settings and Pair Devices were buttons at the foot of the Devices tab.

A tour of the BuddyIts three tabs and the cog
BOOTRSTPWRmicroSDUSB-C
  1. 1LIVE: the cue QLab is standing on. Press GO in QLab and it moves on
  2. 2DEVICES: every paired prop with its address. PING asks one to show itself
  3. 3API: Magic API readouts. Sync To Network offers them to other Buddies
  4. 4The cog: Settings. WiFi keeps up to eight networks; Hotspot runs the show network
  5. 5Workspace: pick which QLab show to follow
  6. 6OSC Access and Software: control mode, timer log, passcodes and updates
  7. 7Tap LIVE to get back to the show

Settings, row by row

WiFi, brightness, rotation
  • WiFi keeps up to eight networks. Tap one to switch to it. Hold one for 2.5 s to edit it or Forget This Network.
  • Turn WiFi off by tapping the network you are already on. It stays saved, and stays off through restarts until you tap it again. The Buddy then runs on the USB-C cable alone.
  • Brightness (3.5″ only): tap TAP to go up 5%. After 100% it wraps to 5%.
  • Turn the screen upside down with the round-arrow button at the top right of Settings.
  • The cog stays lit on every Settings page. Tap it to go back to the top of Settings.
Brightness and turning the screen overSettings, at the bottom and the top
BOOTRSTPWRmicroSDUSB-C
  1. 1Tap the cog, then drag the list up. Brightness is the last row, on the 3.5″ only
  2. 2Each tap on TAP goes up 5%. After 100% it wraps round to 5%
  3. 3The round-arrow button turns the screen upside down, for a Buddy mounted the other way up. It stays that way after a restart
  4. 4The button is now at the bottom left. Tap it again to turn the screen back
  5. 5From any Settings page, here Hotspot, the cog takes you back to Settings

DEVICES in detail

names, PING, firmware, removing a prop
  • Names. A new prop is named after its type. The first is plain RF Relay, the next RF Relay 2. Numbers count on from the highest one in use, so a gap left by a deleted prop is never filled. Double-tap a name to rename it.
  • Firmware shows after the address, for example 192.168.1.51 : 8000 · 0.13.2 B. B means beta.
  • Removing a prop. Hold its × for 2 s; the row fills red. The prop also forgets the WiFi and address it was given, so it can pair again without unpairing it at the prop. If it is off, the Buddy tells it when it comes back.
Rename a prop, or remove oneBuddy → DEVICES
BOOTRSTPWRmicroSDUSB-C
  1. 1DEVICES lists every paired prop
  2. 2Double-tap a prop’s name: the keyboard opens on it
  3. 3Type the new name, here Confetti
  4. 4SAVE. The row takes the name, and so does the prop itself
  5. 5To remove a prop, hold its × for 2 s. The row fills red
  6. 6At 2 s it is gone. The prop forgets the WiFi it was given, so it can pair again
PING on…What you see
RF RelayIts ring flashes white three times
QLAB Buddy MiniIts screen border flashes white
Universal ControllerIts LED flashes
Older fountain propsThe button reads TEST and runs the motor gently while held, up to 5 s

What the colours mean

the same on the Buddy, the Mini and the RF Relay
  • Green: good. On, connected, done, on time.
  • Yellow: waiting or a heads-up. Pairing, the last five minutes of a countdown.
  • Red: wrong or over. A failed step, a timer past zero, a delete.
  • Blue: QLab. A live show, the workspace name, the SYNC buttons.
  • Gold names things, like page titles and row names. Grey is off.

Each row in a list has a thin stripe on the left in its state’s colour.

The three buttons

BOOT, PWR and RST
The BOOT button during a show3.5″ Buddy: tap for GO, hold for PANIC
BOOTRSTPWRmicroSDUSB-Chold 5 s
  1. 1Tap BOOT: GO, the next cue runs
  2. 2Hold BOOT for 5 seconds: PANIC
  3. 3PANIC stops every cue in QLab

Day to day, everything is on the touchscreen, but the three physical buttons are worth knowing before a show.

ButtonPressWhat happens
BOOTTapSends GO to the show — advances one cue. Only a quick tap counts; a press between 0.6 and 5 s does nothing. Ignored in VIEW mode.
BOOTHold 5 sSends /panic — fades out and stops everything. The hold is long on purpose, so a brush against the button cannot stop a show. Let go before 5 s and nothing happens.
BOOT while the RF Springboard grid is upHold 3 sOpens the RF Springboard page (after the Owner’s PIN, if one is set). A tap does nothing and there is no panic while the springboard is up: the button sends nothing to QLab.
PWRShort pressScreen off, or back on. The show keeps running behind a dark screen: cues, timers and props are unaffected. Any tap on the glass also wakes it, and that tap does nothing else, so you can’t fire anything by finding the screen in the dark.
RSTPressRestarts the board. Paired props, saved WiFi and the locked workspace all survive.

BOOT doubles as the flashing button — see Flash Firmware. Try all three in the Simulator. GO and PANIC go only to the show this Buddy is connected to, never to the whole network: with no show, the status bar reads GO not sent - not connected or PANIC not sent - no show. The larger 4.3″ and 7″ Buddies have no BOOT button to press.


Using with QLab 5

The Buddy watches your QLab show and can press GO for you. Switch on two settings in QLab, connect the Buddy, and it finds the show by itself.

You needWhy
QLab 5Live cue names, notes and timer directives come from QLab 5’s live feed. QLab 4 has no feed: you get GO, PANIC and a blue status bar, but no cue text. Get QLab 5 → (free; opens .qlab4 files via File → Import).
A paid QLab licenseOnly for firing props. Any one of Audio, Video or Lighting unlocks Network cues. The free tier runs the Buddy itself. QLab’s license types →
Two settings in every QLab workspace, once per show file. Without them the Buddy will not connect.
  • Enable Network OSC, port 53000: Workspace Settings → Network → OSC Controls.
  • Allow OSC connections, then tick Control in the No Passcode row: Workspace Settings → Network → OSC Access.

More on the QLab settings

what they do, older labels, view-only
  • OSC is the messaging standard QLab uses to talk to other gear. It is off by default. You never write OSC to run the Buddy; firing a prop takes one short line from the command chart.
  • Port 53000 is the one the Buddy expects. Leave it as it is.
  • Control lets the Buddy press GO. Without it the Buddy can watch the show but not run it.
  • Both settings are saved in the .qlab5 file, so they follow the show to another Mac.
  • Older QLab builds call OSC Controls OSC Receiver. Same setting: tick Enable Network OSC and set the port to 53000.
  • View-only mode. In the No Passcode row tick View and leave Control off. The Buddy shows the cues, but GO, PANIC and edge navigation do nothing.

Three ways to connect

Pick any one. The Buddy uses whichever reaches the show, and switches by itself if one drops.

WayWhen to use it
USB-CFor a show. A cable to the Mac is fastest and nothing wireless can upset it. The Mac’s WiFi keeps working.
WiFiJoin the same network as the QLab Mac. The Buddy finds QLab within a few seconds.
HotspotNo router. The Buddy makes its own show hotspot. Turn it on in Settings → Hotspot by holding Hold To Turn On until it fills; a tap will not do it.
Connect the Buddy to QLabThree ways. Pick yours
USB-C cableFastest, and nothing wireless can upset it
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
Matinee — QLab 5GONumberQ0.5Pre-show reset0.8House music1House to half1.2Preshow announcement1.5Deck RevealNetworkQLAB Buddy NetworkConnected
QLab on your Mac
  1. 1The Buddy is on, with no network yet. Its bar reads No WiFi
  2. 2Plug a USB-C cable from the Buddy into the Mac. The bar reads LAN, and the Mac lists a new network, QLAB Buddy Network
  3. 3The Buddy finds QLab over the cable: the bar turns blue, QLAB, and LIVE shows the standby cue. The Mac’s WiFi keeps working
Show hotspot, out of the box 0.13.2
NetworkQLAB Buddy 3F2A Passwordbuddy3a3f2a
  • That is an example. The characters on the end differ on every Buddy. Its Settings → Hotspot page shows the real ones, and you can change both.
  • The network named plain QLAB Buddy (password qlabbuddy) is the pairing hotspot. It is up only while you are pairing a prop. Before 0.13.2 that one network did both jobs.
  • To hold the Buddy to one show and one address, see Workspace Lock.

Where it all sits in the room

A typical rig. The laptop stays in the booth, the things you need stay on stage, and a small travel router gives everything its own network.

TECH BOOTHLighting · Sound · Videofrom QLabNetwork cuesto the props, over WiFiLaptopQLab 5 · USB remote receiverQLAB Buddyhub for the propsUSB-CoptionalQLab outputsPortable WiFi routere.g. GL.iNet Slate 7WiFiWiFiWiFiWiFiSTAGEPerformerwireless remoteBuddy Miniin the performer’s caseRF Relaynext to the propremote to receiverradio link, not WiFi
Network cues reach the props over your own router’s WiFi, not the venue’s. The remote does not use WiFi at all: it talks to its USB receiver over its own radio, so a button press never depends on the network.
  • Router: any portable WiFi router of your own, such as the GL.iNet Slate 7 we recommend. Set it up once and carry it, so addresses never change and you never need the venue’s WiFi password.
  • Remote: a MediaStar Pro or Audio Ape Pro. Its receiver plugs into the laptop; a button press is the same as GO.
  • Buddy: by the laptop, the hub every prop pairs to. It reaches QLab over WiFi, or over USB-C if you plug it in.
  • Mini: the screen you read on stage.

Cabled with no WiFi at all

USB-C with no WiFi
  • USB-C to the QLab Mac works with WiFi off entirely: no router, no venue network.
  • The Buddy shows up on the Mac as a network device. QLab reaches it over the cable at 192.168.7.1.
  • GO, PANIC and QLab detection all work. Props still need WiFi to fire. With no internet the status-bar clock reads --:-- -- until you set it by hand; see Clock and Internet.

Firing a prop from a cue

A QLab Network cue sends a short message straight to the prop. It never passes through the Buddy.

  • Network Patch: a saved destination, one prop’s address. Make one per prop.
  • Network cue: sends a message to a patch. Make one for each moment you want to fire.
  • Slot (RF Relay only): one saved remote button. A cue fires a slot by its number.
Network cue/rf/3Network Patch192.168.1.62, port 8000RF Relayfires slot 3
The cue goes out through a patch holding the prop’s address and port 8000, straight to the prop.

Pair the prop first. For an RF Relay, also teach it the remote. Then, once per show file:

  1. Find the prop’s address On the Buddy, open Devices. The address (like 192.168.1.62) is under the prop’s name. It stays put while you stay on the same WiFi.
  2. Add a Network Patch Workspace Settings → Network → OSC Controls → +. Type TCP, Host the prop’s address, Port 8000.
  3. Add a Network cue Toolbar → + → Network. Pick that patch, then type the command into Custom Message.
Fire a prop from a QLab cueNetwork cue → Network Patch → prop
QLab · cue list 1  Opener 2  Network · /rf/3 3  Blackout Mac running QLab your WiFi RF Relay 192.168.1.62 : 8000 slot 3 the prop /rf/3 ✓ got it Straight from QLab to the prop. It never passes through the Buddy. QLab · cue list 1  Opener 2  Network · /rf/3 3  Blackout Mac running QLab your WiFi RF Relay 192.168.1.62 : 8000 slot 3 the prop /rf/3 ✓ got it Straight from QLab to the prop. It never passes through the Buddy.
  1. 1Press GO on the Network cue
  2. 2QLab sends /rf/3 to the prop’s address
  3. 3The RF Relay fires slot 3
  4. 4Over TCP the prop confirms, so a missed message shows as an error
Custom MessageWhat it does
/rf/3Fires RF slot 3
/m1/start/80/3sRuns motor 1 at 80 % for 3 s
/s1/90Moves servo 1 to 90°

Every command is in the OSC Command Chart. The chart calls them addresses; same thing.

/m1motor 1/startrun forward/8080 % speed/3sfor 3 s
Every command reads left to right: which channel, what to do, then any numbers it needs. Leave a number off and the default applies.
Use TCP, not UDP.
  • UDP sends once and never checks. One lost packet on busy WiFi is a missed effect that QLab still marks as done.
  • TCP waits for the prop to confirm. An unreachable prop shows as an error.
  • Same address, same port. Needs prop firmware 0.12.0 or newer.
  • Do not send a /start cue twice as insurance. With TCP both arrive, and the motor restarts for each.

Using with Go Button

Go Button is Figure 53’s iPhone and iPad app for running a cue list. The Buddy mirrors it live over WiFi, with no Mac anywhere, and can fire your props from its cues.

Put the iPhone and the Buddy on the same network first. The Buddy finds Go Button by asking the whole network, so it only sees an iPhone on its own network: your WiFi, or the Buddy’s hotspot with the iPhone joined to it.

Two settings in Go Button, under Settings → Connections:
  • UDP Reply Port = 53001. Go Button sends its answers there. Without it the Buddy never hears back.
  • OSC passcode: if Go Button has one, enter the same code on the Buddy in Settings → OSC Access → Go Button passcode. If they differ, the Buddy never connects and its status bar turns red and reads Passcode.

Setup

one-time setup, step by step
  1. Put both on one network A shared WiFi router, or the Buddy’s own hotspot (Settings → Hotspot, hold Hold To Turn On) with the iPhone joined to it. No internet on the hotspot is fine.
  2. Set UDP Reply Port to 53001 In Go Button, Settings → Connections. It is remembered.
  3. Match the OSC passcode Only if Go Button has one. Otherwise leave the Buddy’s field blank.
  4. Open a show in Go Button The Buddy spots it within a few seconds.
  5. Pick the show on the Buddy Settings → Workspace. The status bar turns blue and reads Go Button.
Point the Buddy at Go ButtonGo Button open on an iPhone, on the same network
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
Matinee — Go ButtonGO1Walk-on music2Card to pocket3Big Reveal #192.168.1.88/rf/14Table lights #192.168.1.70/80%/3s5Closer6Bows7ENDWi-FiTheaterMain_5G
Go Button on your iPhone
  1. 1First, the same network. The iPhone has joined TheaterMain_5G. On the Buddy, the cog then WiFi shows it is on that one too. No router? Join the iPhone to the Buddy’s hotspot instead
  2. 2The cog takes you back to Settings. Tap Workspace: Go Button’s show is in the list with the QLab ones, marked Go Button
  3. 3Tap it. The status bar now reads Go Button, and LIVE shows the app’s standby cue
  4. 4GO in Go Button: the Buddy follows it to the next cue

Both must be on one network because the Buddy finds Go Button by broadcast.

What you see in Go Button mode

WhereWhat it shows
Top-bar timerNo show duration set: counts up in grey. With one: counts down in green, yellow for the last five minutes, red once over. Pauses when Go Button stops advancing.
Stage viewCurrent cue name and number.
Screen edgesHold left or right to step Go Button back or forward. Only in CTRL mode (Settings → OSC Access), which lets the Buddy control the show, not just watch.
Status barBlue, labelled Go Button, with the show name in the centre.

Tips

If…Then
Timer stuck at 00:00.00Fire a cue in Go Button. The Buddy needs one poll (about 0.2 s) to see motion.
Show in the picker, timer always blankCheck the UDP Reply Port is 53001. That is almost always it.
Picker flickers while searchingNormal. It settles once Go Button replies.

Firing a prop from a Go Button cue

Go Button cannot send OSC, so the Buddy sends it for you. Put a tag in a cue’s name, like Big Reveal #192.168.86.62/rf/3. When GO moves past that cue, the Buddy fires the prop.

How Go Button fires your propsGo Button on an iPhone, the Buddy and an RF Relay
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
nRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-C
RF Relay
Matinee — Go ButtonGO1Walk-on music2Card to pocket3Big Reveal #192.168.1.88/rf/14Table lights #192.168.1.70/80%/3s5Closer6Bows7END
Go Button on your iPhone
  1. 1Go Button stands by on 2 Card to pocket. The Buddy follows it, and its bar reads Go Button
  2. 2GO in Go Button. The next cue, 3 Big Reveal, carries a tag in its name: #192.168.1.88/rf/1
  3. 3GO again. Go Button cannot send to props, so the Buddy sees the playhead leave the tagged cue and fires the relay’s slot 1 itself
  4. 4Go Button and the Buddy stand by on 4 Table lights. Its tag will fire the Universal Controller the same way
GO BUTTONBUDDYPROPBig Reveal#192.168.86.62/rf/3Next cueGOsees the cue changeQLAB Buddyfires the propRF Relayfires slot 3
Pressing GO moves the playhead off the tagged cue. The Buddy sees the cue change and fires the prop itself; Go Button sends nothing.
  1. Pair the prop to the Buddy See Pairing Devices. Its address shows under its name in DEVICES.
  2. Put the tag in the cue name Rename the cue in Go Button. The tag can sit anywhere in the name.
  3. Press GO Leaving the tagged cue fires the prop.
  • The Buddy must be on and connected to the show. USB power is enough.
  • Scrubbing past a tagged cue in Go Button fires it too. Stepping with the Buddy’s screen edges does not. Go back and press GO again, and it fires again.
  • The address changes on a different WiFi. When you switch the Buddy’s WiFi, its props follow it; check DEVICES for the new address and update your tags.
  • Watch it work in the Simulator: switch its show to Go Button and press GO past the tagged cue.

Tag syntax

#tag192.168.86.62the prop’s address/rf/3fire slot 3/5shold 5 s
A tag is a hash, the prop’s address from the Devices page, what to do, and (optionally) for how long.
Tag in the cue nameWhat it does
#192.168.86.62/rf/3RF Relay: fire slot 3 at the default 3 s hold
#192.168.86.62/rf/3/5sRF Relay: fire slot 3 for 5 s
#192.168.86.62/rf/3/stopRF Relay: send slot 3’s OFF code, for latching gear (stays on until a second press). /rf/3/start is the matching ON. Teach the OFF button first with /rf/learnoff/3
#192.168.86.62/startMotor M1 at the defaults, 75 % for 5 s
#192.168.86.62/80%/3sM1 at 80 % for 3 s
#192.168.86.62/reverse/80%/3sM1 backwards at 80 % for 3 s
#192.168.86.62/stopStop every motor and servo, or cut an RF transmission short
#192.168.86.62/testM1 at 75 % for 5 s, for a soundcheck cue
  • Several tags in one name fire all their props.
  • Always give a duration its unit. A bare 3000 means 3000 seconds, which the board caps at 60.
  • On a Universal Controller, tags reach Motor 1 only. M2–M4 and the servos need a QLab Network cue.
  • On an RF Relay, only rf and stop tags work.
Don’t tag the last cue. A short cue only fires when the playhead moves on, and the last cue has no next. Keep one cue after it: a blackout, a memo, an END marker.

Pairing Devices with the Buddy

Pairing gives a prop your WiFi and a fixed address, so cues can find it. You do it once per prop, and every prop pairs the same way.

The Buddy Mini pairs by the same steps. It is a screen, not a prop: pairing tells it your WiFi and which Buddy to follow.

  1. Start pairing mode. On the Buddy, open DEVICES and tap + in the bottom-left corner. It becomes a yellow × Pairing button and the status bar turns yellow (it stays blue while a show is open). Tap it again to stop.
  2. Power on the prop. It joins the Buddy’s pairing hotspot on its own. A Connecting... card holds its place in the list. No countdown to beat.
  3. Tap SYNC. Do it when the prop appears. It reads WAIT while the prop reboots onto your WiFi (the row shows both addresses), then green DONE once it answers from the new one.
Pair the RF Relay and the MiniBuddy → DEVICES, one prop at a time
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
nRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-C
RF Relay
BOOTPWRUSB-CmicroSD
Buddy Mini
  1. 1Nothing is paired yet. On the Buddy, open DEVICES and tap +: it becomes × Pairing and the pairing hotspot comes up
  2. 2Power on the RF Relay. It joins the hotspot, its bar turns yellow PAIRING, and it appears on the Buddy with SYNC
  3. 3Tap SYNC. The row reads WAIT while the relay shows PAIRED and restarts onto your WiFi, then it answers from its new fixed address
  4. 4Now the Mini. Power it on: its frame turns yellow, Pairing, and it appears with SYNC
  5. 5Tap SYNC again. The Mini shows PAIRED, restarts on your WiFi and opens on LIVE
  6. 6Tap × Pairing to stop. Both props sit on your WiFi, each at its own address
DURING PAIRINGQLAB Buddyraises its hotspotNew proppowered onjoinstap SYNCWiFi + addressAFTER SYNCYour WiFiBuddyProp192.168.1.62Mac or iPhone
Pairing happens on the Buddy’s own hotspot. One tap on SYNC gives the prop your WiFi and a fixed address, and from then on everything sits on one network.

Good to know

  • One prop at a time. Wait for SYNC to finish (up to a minute) before powering on the next. A second pairing mid-way is blocked.
  • No WiFi on the Buddy? The prop is given the Buddy’s show hotspot instead.
  • Props on the show hotspot drop off it while pairing runs. So the first tap on + only asks: it reads Pair Devices and says how many will drop. Tap again within 4 s to go ahead.
  • Pairing ends by itself after 10 minutes with nothing to pair. The pairing hotspot takes up to 10 devices at once.
  • The address survives reboots. On your own WiFi, cues never need touching.
  • A different network means a different address. At a new venue, switch the Buddy’s WiFi and its props follow it. Then update Go Button tags and QLab Network Patches from DEVICES.
  • In DEVICES, each prop’s row shows its current address and firmware. A green stripe means it is online now.

If SYNC turns red

what each error word means

A failed pair shows a short reason on SYNC for a few seconds.

SYNC readsWhat went wrong
WIFIThe Buddy is not on the WiFi it would hand over. Connect it first.
FULLThe Buddy’s list of paired devices is full.
NAMEAnother paired device already uses that name.
NO IPNo address left to hand out.
NETThe prop never answered.
BUSYThe prop is mid-cue or mid-update. Try again when it finishes.
ERRSomething else went wrong on the Buddy. Try the pair again.
JOINA minute later the prop was still on the pairing hotspot. Check the WiFi password, and that the WiFi is 2.4 GHz.
RIGThe prop is still paired to another rig’s Buddy, and only that Buddy may re-pair it. Unpair it at the prop first.
When SYNC turns redAn RF Relay still paired to another rig
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
nRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-C
RF Relay
  1. 1The relay turns up on this Buddy’s pairing hotspot, but it still belongs to another rig’s Buddy
  2. 2Tap SYNC. The relay refuses: only its own Buddy may re-pair it
  3. 3SYNC reads RIG in red for a few seconds
  4. 4To move it to this Buddy, factory re-pair the relay first, then tap SYNC again

Address edge cases

clashes and isolated WiFi
  • Address taken. A freshly paired prop checks nobody else has its address. If a laptop or phone took it, the prop borrows one from the router for that boot and keeps its own for next time.
  • Never heard from. If the Buddy hears nothing from a new prop within two minutes (some WiFi keeps devices apart), the prop goes back to the pairing hotspot for a minute and a half so its own Buddy can pair it again. Another rig’s Buddy can’t take it over.

OSC passcode

Nothing to set on the prop. The Buddy syncs the Go Button passcode to every paired prop, and again whenever you change it. See Passcode auto-sync to props.


Unpairing Devices

Unpairing takes a prop off its Buddy so it can pair again, here or with another Buddy. There are two ways. You only need one.

  • From the Buddy, when the prop is on this Buddy’s DEVICES and you want it off the list.
  • At the prop, when you are moving it to another Buddy. A prop paired elsewhere does not even appear on this Buddy’s DEVICES (see Two Buddies, one venue).

Unpairing the RF Relay at the relay keeps its saved RF slots. Moving to another network needs neither way: switch the Buddy’s WiFi and its props follow it.

From the Buddy

  1. Open DEVICES. On the Buddy, tap DEVICES.
  2. Hold the prop’s ×. Keep holding for 2 s. The row fills red and the prop is removed.

The prop also forgets the WiFi and address it was given, so it can pair again straight away. If it is off, the Buddy tells it when it comes back. The animation is under DEVICES in detail.

At the prop

BoardWhat to do
QLAB Buddy MiniHold BOOT, the top button, for 3 s, then let go. The screen says what letting go will do. A paired Mini reboots ready to pair; an unpaired one starts looking for the Buddy straight away.
RF RelayHold the wheel in for 5 s until the unpair bar appears, keep holding another 5 s until it fills, let go, then choose UNPAIR. CANCEL is selected first, so a slip wipes nothing. On the RF Springboard lock screen the first hold is one unbroken 10 s press instead.
Universal ControllerPower on, then within a second hold BOOT for 3 s. Do not hold it through power-up: that is boot mode, for flashing. The NULLLAB’s LED goes back to white; the Romeo Mini has no LED.
Unpair the MiniTo move it to another Buddy
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
BOOTPWRUSB-CmicroSD
Buddy Mini
  1. 1The Mini is paired, so the Buddy lists it under DEVICES
  2. 2Hold BOOT on the Mini. Keep holding for 3 s
  3. 3It reads UNPAIR. Nothing happens yet
  4. 4Let go: UNPAIRED. The Mini says goodbye, so the Buddy drops its row
  5. 5The Mini restarts unpaired, ready to pair again from the Buddy
Unpair the RF Relay at the relayHold the knob, then choose UNPAIR
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
nRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-C
RF Relay
  1. 1The relay is paired, so the Buddy lists it under DEVICES
  2. 2Hold the knob in. Setup opens first; keep holding and at 5 s the unpair bar appears
  3. 3Keep holding another 5 s until the bar fills and says RELEASE TO CONFIRM. Let go
  4. 4UNPAIR RELAY? CANCEL is selected first. Turn to UNPAIR and press
  5. 5The relay says goodbye: the Buddy drops its row and the relay shows DELETED
  6. 6It wipes its WiFi and restarts unpaired, ready to pair again. Its RF slots are kept

The relay shows LEAVING while it tells the Buddy, then reboots onto the Buddy’s pairing hotspot. With the Buddy off, LEAVING gives up after about 10 s and the relay carries on standalone. The UNPAIR / CANCEL screen cancels itself after 30 s untouched.


QLAB Buddy Mini

Current firmware: v… · built checking… · board: Waveshare ESP32-S3-Touch-AMOLED-1.8 · 368 × 448 AMOLED, 1.8″

A small second screen for the show. Put it where the Buddy can’t sit: a music stand, a case lid, the far end of a table, or just offstage.

📺Its own LIVE viewReads the cue and timer straight from QLab or Go Button. On a QLab show it keeps updating even with the Buddy off.
🎬GO in your hand 0.13.2The REMOTE page fires GO and PANIC, when the Buddy allows it.
🔋Battery or cableSold with or without a battery. Charges over USB-C.
👀Read-only otherwiseNo PING, no pairing other props, no SYNC.

What it gets from the Buddy

and what it does alone
  • The Buddy chooses which workspace both screens watch.
  • The Buddy passes it the device list and the Magic API addresses.
  • Only a workspace the Mini can’t reach itself needs the Buddy to pass the cue along.
  • With the Buddy off, the Mini checks the Magic API services itself: every 10 s on USB power, less often on battery.

Hardware

1.8″
Waveshare ESP32-S3-Touch-AMOLED-1.8 (V2) 1.8″ AMOLED, 368 × 448, touch · ESP32-S3 · 16 MB flash, 8 MB PSRAM · battery charger built in · USB-C
Waveshare →  ·  Schematics & vendor code →
Board only: Amazon US
With battery: Amazon US

The cell it ships with is small: expect about 1½ to 2 hours with the screen on.

Running on the battery

warnings, charging while off
  • Low warnings. At 20 % and below the percentage stays in the status bar in yellow. At 10 % it turns red.
  • The gauge reads true 0.13.2: 20 % means about a fifth is really left, and 0 % comes before the Mini goes dark.
  • Plugging in while on shows the charge percentage over any screen for 3 s.
  • Plugging in while off does not boot it. It shows a charge ring and the percentage, goes dark after 20 s, and a tap brings it back. Any button boots it for real.
  • The Battery screen has the full picture.

Screens

Swipe sideways or tap BOOT to move between them. Every screen but REMOTE and QPAL peek goes back to LIVE after 30 s.

ScreenWhat it shows
LIVECue number, type, name and notes, with the show timer on top. A border in the connection’s colour reads from across the room.
RF Springboard 0.13.2Takes over while the Buddy’s springboard is up. See RF Springboard.
REMOTE 0.13.2GO, previous and next. Second in line, only while the Buddy is set to CTRL. See below.
DevicesEvery prop the Buddy sees, with its address. Stripe: green alive, grey offline, a white flash when it fires. Empty until paired.
Magic APIThe last value from each of the six Magic API services. Five fit; the list scrolls.
BatteryA charge ring, the percentage, the power source, and a time estimate.
QPAL peekTap the QPAL row on Magic API to see the spectator’s drawing full width, with the text read from it. Tap again to enlarge. BACK or BOOT returns.
A tour of the MiniTap BOOT to change screens
BOOTPWRUSB-CmicroSD
  1. 1LIVE: the cue and timer
  2. 2Tap BOOT: REMOTE, when the Buddy is set to CTRL
  3. 3Tap again: DEVICES
  4. 4Again: MAGIC API
  5. 5Again: BATTERY
  6. 6One more: back to LIVE

The Battery screen

power words, the estimate
  • Under the ring: Charging or Charged on a cable, On battery off one, No battery on a board sold without a cell.
  • Under that, an estimate: “About 1h 20m left”, or “About 45m to full” while charging.
  • The estimate starts as a guess and then follows the real rate. Give it a few minutes before you trust it.

Using it

  1. Pair it once. On the Buddy, open DEVICES, tap +, power the Mini on, and tap SYNC. The Mini’s frame turns yellow, Pairing, then it shows PAIRED. After that it boots straight into LIVE.
  2. Put it where you will look. It needs power and the Buddy’s WiFi. Nothing else.
  3. Swipe sideways, or tap BOOT, to change screens. A quick flick is enough.
  4. Set the brightness. Swipe up or down from the top or bottom edge. Dragging the middle of a list scrolls it.
  5. Press PWR or the front button to blank the screen. Press again to wake.
Set the Mini’s brightnessSwipe from the top or bottom edge
BOOTPWRUSB-CmicroSD
  1. 1Start at the bottom edge and swipe up: brighter
  2. 2Start at the top edge and swipe down: dimmer
  3. 3The level shows while you swipe, then fades. A swipe from the middle scrolls a list instead
  • No WiFi? Plug it into the show Mac with USB-C. It appears as QLAB Buddy Mini Network, QLab and Go Button reach it over the cable, and its strip reads LAN.
  • Moving it to another Buddy? Hold BOOT for 3 s, let go, and pair again. See Unpairing Devices.

The Mini’s REMOTE page runs the show from your hand: GO, PANIC and the cue arrows. See GO and PANIC.

The timer band

the four band states
  • Green: under time.
  • Yellow: the last five minutes.
  • Red: over time.
  • Grey: counting up with no target.
The timer bandA cue’s #timer counting down on the Mini
BOOTPWRUSB-CmicroSD
  1. 1Counting down with time to spare: green
  2. 2Inside the last five minutes it turns yellow (sped up here)
  3. 3Past zero it turns red and counts how far over you are
  4. 4A #timer/start with no target counts up in grey

Connection at a glance

what each border colour means

With no show open, the border and status bar carry the whole state. Grey means never set up; red means something broke. Same as the Buddy’s status dot.

Connection at a glanceThe border and status bar
BOOTPWRUSB-CmicroSD
  1. 1No WiFi, grey: never set up
  2. 2Pairing, yellow: waiting to be paired from the Buddy
  3. 3WiFi, green: on your network, waiting for a show
  4. 4QLAB, blue: your show is open, and the cue appears
  5. 5Hotspot, green: on the Buddy’s show hotspot
  6. 6LAN, grey: on a USB cable to the Mac
  7. 7No WiFi, red: its saved network is out of reach

Buttons

BOOT, PWR and USER
ButtonAction
BOOT (top)Tap: next screen. Hold 3 s on a paired Mini: it shows UNPAIR, and letting go unpairs it. On an unpaired Mini it starts looking for the Buddy at 3 s.
PWR (bottom)Short press blanks or wakes the screen. A long press is the power chip’s own hardware shutdown.
USER (front)Short press blanks or wakes the screen. Holding it does nothing, so it is safe to lean on.
Blank the Mini’s screena short press of PWR or USER
BOOTPWRUSB-CmicroSD
Buddy Mini
Matinee — QLab 5GONumberQ1House to half1.2Preshow announcement1.5Deck Reveal1.8Fade out house music2Smoke Effect
QLab on your Mac
  1. 1The Mini shows QLab’s standby cue
  2. 2Press PWR, the bottom button on the right edge. The screen goes dark, and the Mini stays on the network. A short press of USER on the front does the same
  3. 3GO in QLab while it is dark. The Mini keeps following the show
  4. 4Press PWR again. It wakes straight onto the new standby cue. A long PWR press turns the Mini off

RF Relay

Current firmware: v… · built checking… · board: LilyGo T-Embed CC1101 Plus

Learns a button on a cheap radio (RF) remote, then presses it for you on cue. Think of the remote that came free with an LED strip, a dimmer or a fan.

ONCEEACH SHOWRemotehold the buttonlearnsRF Relayslot 3 savedYour showcue fires slot 3RF Relayslot 3samesignalThe propLED, fan, dimmer
Teach it the remote once. After that a cue fires the slot and the relay sends the same signal the remote would have.

Will my remote work?

  • Yes if it sends the same signal every press (“fixed code”). Nearly every LED strip, dimmer and fan remote does, including anything built on the common PT2262 or EV1527 chips.
  • Yes if it is on 315, 390, 418, 433.92, 868.35 or 915 MHz. The relay scans all six for you.
  • No for garage doors and car fobs. They change their code every press.

Three ways to fire it:

FromHow
QLab, over WiFiA Network cue sent straight to the relay. No Buddy involved.
Go ButtonA tagged cue. The Buddy passes it on.
QLab, over a cableUSB-C straight to the Mac. No WiFi at all. See Cabled to a Mac.
📡315–915 MHzSix frequencies, scanned automatically when learning.
🎛️50 code slots 0.13.2One remote button each, with a name. Kept through reboots and updates. Before 0.13.2 Beta 22 there were 25.
🖥️1.9″ screen and click wheelLearn, rename, delete and fire slots on the device itself.
🔋Battery indicatorPercentage top right. On USB a bolt takes its place. Yellow at 20 %, red at 10 %. Setup shows time LEFT, or FULL IN on a cable.
🔌Cabled straight to a MacOver USB-C, QLab drives it with no WiFi, router or Buddy.
🎛️Buttons on the Buddy 0.13.2With RF Springboard, every learned slot becomes a button on the Buddy’s screen.

Hardware

Board
LilyGo T-Embed CC1101 Plus ESP32-S3 · sub-GHz radio with an external antenna, 315 to 915 MHz · 1.9″ screen, 320 × 170 · scroll wheel with a push button · ring of eight LEDs · side power button · USB-C · 16 MB flash, 8 MB PSRAM
LilyGo  ·  Amazon
  • To turn it off, hold USER, the small button on top, for 2 s until the screen goes dark.
  • To turn it on, hold USER for 2 s and watch the bar fill. Plugging in USB-C alone does not wake it.
  • Want it riding along with the Mac? See the laptop mount in Community Mods.
Turn the RF Relay off and onHold USER, the small button on top
nRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-C
  1. 1The relay is on
  2. 2Hold USER, on the top edge beside the WiFi antenna. After 2 s the screen and the ring go dark
  3. 3Let go. It is off, and cues sent to it are not heard
  4. 4To turn it on, hold USER again. Hold to wake comes up and the bar fills over 2 s. Let go early and it stays off
  5. 5Let go once the bar is full. It starts up and rejoins its WiFi

Screens

Everything on the relay is done with the wheel.

WheelDoes
TurnScroll. One click moves one row.
PressFire, or confirm.
HoldOpen Setup, or go back.

From 0.13.2 the wheel never skips or steps the wrong way, however busy the relay is.

A tour of the RF RelayOne knob: turn, press, hold
nRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-C
  1. 1Turn the knob: one click, one slot
  2. 2Press: the slot fires for 1 s and the bar says FIRED
  3. 3Hold: Setup for that slot, with its band and battery. Hold again to go back
  4. 4RENAME: turn to a letter, press to add it, hold to save
  5. 5DELETE asks first. CANCEL is lit until you turn
  6. 6Left alone for 30 s on Home, it shows a big timer. Any touch wakes it
Teach the RF Relay a remoteAny slot, on the relay itself
REMOTEnRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-C
  1. 1Turn the knob to an empty slot
  2. 2Press or hold the knob. On an empty slot, Setup opens on LEARN
  3. 3Press the knob. It scans every band for 30 s
  4. 4Press a button on your remote: CAPTURED
  5. 5Back home, the slot is filled. /rf/2 now fires it

Pairing with the Buddy

It pairs like every other prop: hotspot, boot, one tap on SYNC. See Pairing Devices with the Buddy. A good pair shows green PAIRED.

To unpair or re-pair it, hold the wheel in, then choose UNPAIR. See Unpairing Devices.

The status bar and ring

every word and colour
BarRingMeans
192.168.1.80  8000steadyOn WiFi
192.168.1.80  8000steadyA QLab show is open. The dot is green once the internet is confirmed, white until then
LANdimOn a USB cable to a Mac. Once the Mac gives it an address, the bar shows that address and port instead
CONNECTINGblinksUnpaired, looking for a Buddy
PAIRINGblinksOn a Buddy’s pairing hotspot
CONNECTINGblinksPaired, finding its WiFi after a restart
RECONNECTINGsteadyFinding its WiFi again
LISTENINGpulsesLearning a code
FIREDbrightA slot is firing
NO WIFIblinksThe WiFi dropped
NO RFblinksThe radio chip was not found
LEAVINGsteadyUnpairing: telling the Buddy it has gone
  • With the Buddy off, LEAVING gives up after about 10 s and the relay carries on standalone. Its row may stay on that Buddy until the next pairing session, or until you delete it.
  • The UNPAIR / CANCEL screen cancels itself after 30 s untouched.
  • A short press on an empty slot on Home opens Setup for it instead of firing.

Cabled to a Mac

The most reliable way to fire it. Plug it into the Mac over USB-C and point a Network cue at 192.168.9.1, port 8000.

  • No WiFi, router or Buddy. Nothing wireless to drop out.
  • Fires in under a millisecond.
  • Over the cable the relay is 192.168.9.1 and the Buddy 192.168.7.1, so both can share one Mac.
  • A plain cable carries no internet: no clock (--:-- --) and no over-the-air updates, unless the Mac’s Internet Sharing is on or the relay is also on WiFi. Firing, QLab detection and the screensaver still work.

The buttons

USER, RST and PWR

Besides the wheel: USER on top, RST and PWR underneath. Only USER is read by the firmware; the other two are hardware resets.

ButtonPressWhat happens
USER (the small unlabelled button on top, next to the WiFi antenna; LilyGo’s schematic calls it BOARD_USER_KEY)Hold 2 s while runningPowers off.
USERHold 2 s while offPowers on. A bar fills as you hold; let go early and it stays off.
RST (bottom)PressRestarts at once. Held with the gold centre button, it enters boot mode for flashing.
PWR (bottom)PressAlso restarts at once, through the charging circuit.

Display UI

the on-device screens
Homelong press the wheelSetupchoose LEARNListening30 s windowhold the remote’s buttonCAPTUREDback to Home on its own
Learning on the device. From Home, a long press opens Setup; LEARN starts a 30 s listen; hold the remote’s button until CAPTURED.
ScreenDescription
Home50 slots: number, name, frequency, code. Press fires the slot for 1 s; hold opens Setup. (A cue with no duration gets 3 s. The bench tap is shorter so it can’t leave a motor running.)
SetupLEARN / FIRE / RENAME / DELETE for the slot, a live RF BAND readout, and two BATTERY rows: percentage (or USB) and time left or to full. Without a fuel-gauge chip the estimate reads -- while charging.
Delete confirmCANCEL / DELETE. Turn to switch, press to confirm.
Listening30 s window (15 s if started over OSC), scanning all six frequencies. Press cancels.
CAPTUREDCode, frequency and protocol, then back to Home.
NO SIGNALNothing heard. Shown in red, then back to Setup (or Home, if started over OSC).
RenameA–Z, 0–9, -, _, space and backspace. Press places a character, hold saves.
ScreensaverAfter 30 s idle on Home: a big timer, the QLab elapsed time in grey or the #timer/ countdown in green. The countdown turns yellow for its last five minutes. Any input wakes it.
Springboard lock 0.13.2A yellow padlock, RF Springboard and Controlled by QLab Buddy, while a Buddy’s RF Springboard holds the relay. The wheel does nothing, except a 10 s hold opens the unpair bar. Cues still fire. A firing slot’s full name replaces the title. See On the relay.

OSC reference

the addresses, in brief

Send to the relay’s IP on port 8000, UDP or TCP. Every address is in the OSC Command Chart. The ones you will use:

/rf/NFire slot N (1–50) for 3 s
/rf/N/3Fire for a set time in seconds. 500ms and 00:01.30 work too. See how a duration is written for what 0.4 means.
/rf/N/stopSend slot N’s OFF code, for latching gear (/rf/N/start is its ON)
/rf/learn/NLearn a remote into slot N: 15 s window, hold the remote’s button
/rf/learnoff/NLearn the remote’s OFF button into slot N. The ON code is kept.
/rf/stopCancel a learn, or cut a transmission short
  • Passcode: nothing to set. The relay uses the Buddy’s Go Button passcode, synced across automatically.
  • A cue doesn’t need the passcode. If it carries one, it goes first, in quotes: /rf/1/start "1234". A wrong one is refused and logged.
  • Keep the quotes. QLab sends an unquoted number as a number. Before 0.13.2 Beta 31, /rf/1 1234 read 1234 as the hold time and transmitted for the full 60 s cap. Now an unquoted passcode is recognised, and a whole-number hold over 60 is refused.
  • Two rigs on one WiFi: the relay ignores cues from another rig’s Buddy and QLab Mac, passcode or not.
.qlab5
Sample QLab workspace. A QLab 5 file with Network Patches for the relay over USB-C (192.168.9.1) and WiFi, plus example cues for the commands above. Repatch the WiFi one to your relay’s IP (see Pairing with the Buddy). Open any cue’s Network tab to see how it is built.

Download the sample workspace (.qlab5) →

Universal Controller

Current firmware: v… · built checking… · boards: NULLLAB Maker-ESP32  ·  DFRobot Romeo Mini ESP32-C3

Runs motors and servos from your cues: turntables, lifts, reveals, set pieces, puppet rigs. A servo is a small motor that turns to an angle and holds it, for a lid, a flap or a pointer.

BoardMotorsServosLED
NULLLAB Maker-ESP324 (M1–M4)4 (S1–S4)Yes
Romeo Mini ESP32-C32 (M1–M2)4 (S1–S4)No
⚙️2–4 motor channelsOne motor per channel, forward or reverse, any speed.
🔄4 servo channelsTimed moves, continuous sweep, or bounce until stopped.
📐Soft start and stopMotors ease in and out on every fire.
Soft start and stopMotor 1 on a NULLLAB, drawn from its firmware
QLab Network cue/m1/start/80/3s0%powerMotor 10 s1 s2 s3 s800
  1. 1A QLab Network cue sends /m1/start/80/3s: Motor 1, power 80, for 3 s
  2. 2It eases in on a smooth curve. The ramp is a quarter of the run, never more than 0.96 s
  3. 3It holds at 80% power. On a NULLLAB the number is the power
  4. 4It eases out the same way and stops at 3 s
  • QLab reaches every channel with a Network cue.
  • Go Button tags reach Motor 1 only.
  • Card fountains run this firmware from 0.13.0. Old cues (/start, /reverse, /test) still drive M1, and /stop still stops it, along with everything else. The old Handheld and De Kolta builds are retired; a fountain left on them keeps working but gets no updates. They stay in Older firmware.
Romeo Mini on 0.13.0: check which way the motor turns.
“Forward” now matches DFRobot’s own code, the opposite of earlier firmware. A prop that ran right on 0.12.x can run backward. If it does, swap the two motor leads at the screw terminal. Check every unit. The NULLLAB is unaffected.

Same number, different speed. On the Romeo Mini even a low setting starts near half power, so a loaded motor gets moving. On the NULLLAB the number is the power, straight. So /m1/start/80 runs faster on a Romeo Mini. Tune it to the prop.

Hardware

Power: motors need their own 6–16 V on the round barrel jack (5.5/2.1 mm). USB-C alone runs the board but will not turn a motor. Use a 9–12 V supply or battery for anything that moves.
Board
NULLLAB Maker-ESP32 ESP32 · four motor channels, 3.5 A driver · four servo headers · one status LED · barrel jack for motor power · USB-C · 80 × 57 mm
NULLLAB GitHub →  ·  Amazon US →
Board (alt)
DFRobot Romeo Mini ESP32-C3 ESP32-C3 · two motor channels · four servo headers · no LED · smaller
DFRobot →
Battery
9 V USB-C Rechargeable Lithium Battery — 1400 mAh (4-pack) Powers the board and motors. 1000 charge cycles. Recharges over USB-C, the same cable as the rest of the rig.
Amazon →
Connector
CHANZON 9 V Battery Snap Connector — I-type pigtail (UL wire) Connects a 9 V battery to the barrel jack. Any 6–16 V source works, such as a 12 V supply or a bench supply.
Amazon →

Using it

  1. Wire it. Motor on the M1 screw terminals, servo on the S1 header, 6–16 V on the barrel jack. See Hardware.
  2. Flash it. In Flash Firmware, pick the row for your board.
  3. Pair it once. On the Buddy: DEVICES, +, power the board on, SYNC. A NULLLAB’s LED turns green.
  4. Check it. Its row on the Buddy’s Devices page shows its address. PING makes it answer and flashes the NULLLAB’s LED.
  5. Fire it from a cue. See the table below.
FromCueDoes
QLab Network cue/m1/start/80/3sMotor 1 forward, 80 %, 3 s
QLab Network cue/s1/90Servo 1 to 90°
Go Button cue name#192.168.86.62/80%/3sMotor 1 only. Use the board’s address from Devices.

M2–M4 and the servos need a QLab Network cue. Every command is in the OSC Command Chart.

A timed servo moveServo 1, drawn from the controller’s firmware
QLab Network cue/s1/90/2s0°angle0°90°180°Servo 10 s1 s2 s3 s90°0
  1. 1Servos start at 90°, so an earlier cue sent /s1/0. Now a Network cue sends /s1/90/2s: servo 1 back to 90°, taking 2 s
  2. 2The horn turns at an even speed the whole way
  3. 3It reaches 90° at 2 s and holds there. With no time, /s1/90 snaps straight there
/s1servo 1/90to 90°/2sover 2 s
A servo command is the channel, the angle, and (optionally) how long the move should take. With no time it snaps.

Pairing with the Buddy

It pairs like every other prop: hotspot, boot, one tap on SYNC. See Pairing Devices with the Buddy.

To re-pair: power on, then within a second hold BOOT for 3 s.

Don’t hold BOOT through power-up. That enters boot mode, which is for flashing.

LED status

what each colour means

NULLLAB only; the Romeo Mini has no LED. From 0.13.2 it uses the fleet’s colours: white neutral, yellow on its way, green connected, blue show open, red WiFi dropped. Only connecting and a dropped link blink.

LEDWhat it means
White pulse ×3Booting.
White, breathingOn the Buddy’s pairing hotspot, exchanging credentials.
Yellow, blinkingJoining WiFi.
Yellow, steadyReconnecting after a drop.
GreenOn WiFi and in touch with the Buddy. No show open.
BlueOn WiFi, a QLab or Go Button show is open. Changes the instant the show opens or closes.
Red, blinkingThe WiFi dropped.
White flash ×3While pairing: accepted, rebooting onto your WiFi. Later: /identify (PING) received. Neither moves anything.
Dim white, pulsing once a secondA motor is running.
Dim white blipA servo cue fired.

On the Romeo Mini, /identify does nothing.

What the Universal Controller’s LEDs sayNULLLAB, recorded from its firmware
NULLLAB status LEDs
  1. 1On the Buddy’s pairing hotspot: white, breathing
  2. 2SYNC accepted: three white flashes, then it restarts and joins your WiFi
  3. 3Joining WiFi: yellow, blinking
  4. 4On WiFi and in touch with the Buddy, no show open: green
  5. 5A QLab or Go Button show is open: blue
  6. 6A motor is running: dim white, pulsing about once a second
  7. 7The WiFi dropped: red, blinking
  8. 8Reconnecting: yellow, steady. Then blue again

OSC reference

the addresses, in brief

Port 8000, UDP or TCP. Servos go 0–180° and start at 90°. Every address is in the OSC Command Chart. The ones you will use:

/m1/start/80/3sM1 forward at 80 % for 3 s. Leave off the time, or both, for the defaults, 75 % and 5 s
/m1/reverse/80/3sThe same, backwards
/m1/stopHalt M1. /stop halts every motor and parks every servo
/s1/90Servo 1 to 90° now. /s1/90/3s gets there over 3 s
/s1/limits/60/120Keep servo 1 inside 60–120°, so a linkage can’t hit its stop
/s{1,2}/{0,180}Two servos in one message: S1 to 0°, S2 to 180°
/s1/stopPark servo 1 where it is. /s*/stop parks them all and leaves the motors alone
  • Passcode: nothing to set; the Buddy syncs it across. A cue doesn’t need it. If it carries one, it goes first, in quotes. A wrong one is refused.
  • Two rigs on one WiFi: the board ignores cues from another rig’s Buddy and QLab Mac.
  • A stop is never refused, by passcode or by rig.
  • Firmware: both boards’ installers are in Flash Firmware.

How It All Works Together

One GO in QLab, and every device answers: the Buddy shows the cue, the props fire, and the Mini in your hand shows the same thing.

One GO, the whole rig answersQLab, the Buddy, an RF Relay and the Mini
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
nRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-C
RF Relay
BOOTPWRUSB-CmicroSD
Buddy Mini
Matinee — QLab 5GONumberQ1.8Fade out house music1.9Understudy note2Smoke Effect2.2Overture2.5Turntable start
QLab on your Mac
  1. 1QLab is standing by on 1.9 Understudy note. The Buddy and the Mini show the same cue
  2. 2GO in QLab. The Buddy and the Mini each follow QLab to the next cue
  3. 3GO on 2 Smoke Effect, a Network cue. QLab fires the RF Relay itself, and its ring lights for the 3 s hold
  4. 4Every device now stands by on 2.2 Overture, ready for the next GO

Simulator

Run a whole show in your browser, with no hardware. Each device runs its real firmware, compiled to WebAssembly and rebuilt from source on every commit that touches it.

  • In the rig: a virtual QLab, a QLAB Buddy, an RF Relay, a Buddy Mini and a Universal Controller.
  • The Universal Controller has no screen, so its motors and servos are drawn as bars and dials that move when a cue lands.
  • Try this (the row at the top) walks you through it: press GO, fire the smoke effect, run a motor, fire a prop from Go Button, teach the relay a remote, then unplug the Buddy and watch the Mini carry on.
  • The director panel underneath drives the rest: the Buddy’s buttons, VIEW-only access, #timer/ directives, battery and radio states, and the relay’s setup menu.

Who fires the relay? With QLab as the show, QLab fires it directly and the Buddy only watches; its Devices row flashes when the relay reports back. Switch to Go Button (the tab above the cue list) and the Buddy fires the tagged cues itself, because Go Button can’t reach the relay.


Flash Firmware

Flashing loads the board’s software onto it over USB-C. It takes one click here, with nothing to download.

Flash a board USB-C, one click The Buddy the hub Give it WiFi Settings cog → WiFi Open your show QLab or Go Button Any other board RF Relay · UC · Mini Pair it to the Buddy hotspot, tap SYNC
Only the Buddy gets WiFi entered directly. Every other board gets its network from the Buddy instead — see Pairing Devices.
Auto-install
Watching for a board…
If the scan can’t find your board

The browser asks once. Click Scan for the first board and pick it in Chrome’s dialog. After that the page watches the port, and a board identifies itself when you plug it in.

Can’t tell which port is the board? The dialog lists every serial port, Bluetooth too. Cancel, unplug the board and look at the list. Plug it back in: the new entry is yours.

  • Mac: the Buddy, Buddy Mini, RF Relay and Romeo Mini show as cu.usbmodem….
  • Mac: the NULLLAB Universal Controller shows as cu.usbserial… or cu.wchusbserial….
  • Windows: they are all a COM number.

Two identical entries are one board. Replugging can leave Chrome holding the old port. Quit and reopen Chrome, or pick either one: the wrong one stays quiet, and Scan lets you pick the other.

A brand-new board can’t be identified. A blank board prints nothing. Pick its row from the table below.

Versions are read live from the published builds, the same files the installer flashes.

Put the board in boot modeBefore the first install. Pick your board

A board starts running its own software the moment it has power, and once it is running it will not listen to the installer. Holding a button as it starts tells it to wait for you instead. Do this before you click Install.

Put the Buddy in boot modeBefore the first install
BOOTRSTPWRmicroSDUSB-CScreen stays dark: ready to install
  1. 1Press and hold BOOT
  2. 2Keep holding. Plug in USB-C
  3. 3Let go. The screen stays dark
  4. 4Click Install on the site

If the installer connects and then spins forever, the board was not in boot mode. Do its steps again and click Install once it is. A long wait on Erasing is not that; see the note under the table.

DeviceFirmwareInstall
QLAB Buddy Waveshare Touch LCD 3.5″ 480×320 S3 v… checking…
RF Relay LilyGo T-Embed CC1101 Plus S3 v… checking…
Universal Controller NULLLAB Maker-ESP32 ESP32 v… checking…
Universal Controller DFRobot Romeo Mini C3 v… checking…
QLAB Buddy Mini Waveshare Touch AMOLED 1.8″ 368×448 S3 v… checking…
What you see when each board startsRight after flashing, recorded from the beta firmware
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
nRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-C
RF Relay
BOOTPWRUSB-CmicroSD
Buddy Mini
  1. 1Power on: each board shows its name and a progress bar
  2. 2Under it, the firmware version it is running. Check it matches the one you flashed
  3. 3Then each one starts: the Buddy and the Mini on LIVE, the RF Relay on its slot list
If the installer connects and then spins forever
  • The board is not in boot mode. It is running its own software, so it answers the browser but not the installer. Unplug it and follow its line in boot mode again. Nothing was changed on the board.
  • Or another program has the port: the Debug Console, a Serial Monitor, a terminal. Close it and try again. See the note below.
  • While an install runs, the log in the corner of this page shows what the installer is really doing.
Notes for specific boards

Erasing is optional and off by default. The installer asks on a board that already has firmware. Leave it unticked to keep WiFi, pairings and stored slots. Tick it only to hand the board on or clear a bad config.

Close anything else holding the board’s port. Only one program can have it, and the installer waits silently. This page and the Debug Console step aside by themselves during an install. Close the Arduino IDE’s Serial Monitor, terminals and PlatformIO by hand.

Erasing takes longer on the RF Relay. A full erase of its 16 MB flash is slow. The ring says Erasing and nothing else moves. Leave it plugged in; the install after takes the usual half a minute.

Universal Controller: one firmware, two boards. Pick the row for the board in your hand. Both show the same version.

4.3″ or 7″ Buddy? None of the rows above is yours. The released Buddy build is for the 3.5″ panel (480×320). The Waveshare ESP32-S3-Touch-LCD-4.3B and ESP32-S3-Touch-LCD-7C are still in testing as part of the 0.13.2 beta, so find them in Beta Firmware while a build is staged. The released build installs on them but won’t come up right. Nothing breaks; it is just the wrong panel.

RF Relay, if Install fails: it has no button marked BOOT. Use the gold centre button, pressed straight in, not turned. With USB-C plugged in: hold it, tap RST on the bottom edge, let go of both, then click Connect and Install. A dark screen is what you want.

Older firmware

Every past release, kept flashable.

  • Going back is a cable job. A device only offers an update that is newer, so it never steps backwards by itself.
  • The one exception is leaving a beta. On the Buddy’s Software Update page, switch the channel to Production and tap Revert.
Pick a version to reinstall

RF Relay (For Flipper Zero) BETA

Fire your RF props from QLab with a stock Flipper Zero. No extra hardware, no WiFi. A small Mac app hears your QLab /rf/ cues and tells a Flipper on the Mac’s USB cable to transmit the remote you learned. It answers the same cues as the hardware RF Relay, so your QLab file needs no changes.

Your Mac QLab — Network cue /rf/1 RF Relay app USB cable Sub-GHz Sending… Flipper Zero stock firmware 433 / 315 MHz Your prop RF receiver
The cue travels Mac → USB → Flipper → prop. Nothing is on WiFi, and nothing is installed on the Flipper.
  • The Flipper stays stock. Nothing is flashed onto it. The app uses the subghz commands already in its firmware, and it stays a normal Flipper for everything else.
  • Spares swap in easily. A Princeton code lives on the Mac. Any other signal fires from its file on the Flipper’s SD card, which the app copies over when you import it. A slot whose file is missing is refused with not on the Flipper’s SD card.
  • It shows on the Buddy’s Devices screen under the name you give it (default Flipper Zero).
  • PING and /ping need UDP. Set Transport (Settings → Connection) to UDP or TCP and UDP. On the default, TCP, every QLab cue still fires; it just won’t answer /ping.

Which one should you use?

RF Relay (For Flipper Zero)
A Flipper you already own, plugged into the Mac that runs QLab
Better device
Hardware RF Relay
A dedicated box you put wherever the prop is
RF Relay (For Flipper Zero)
Hardware RF Relay
The radio
Antenna
✗ Internal, sealed inside the case
✓ External, with far greater reach
Where it sits
At the Mac, on the end of its USB cable
Anywhere — right next to the prop
Blocked frequencies
✗ Stock firmware blocks some bands by region
✓ None
Price
A Flipper Zero, a premium device
Much cheaper than a Flipper
Running a show
Fires your /rf/ cues
✓
✓
Holds a cue for its full length
✓
✓
Works with no WiFi or internet
✓
✓
Runs without a computer
✗ No — it is plugged into the Mac running QLab and this app
✓ Yes, on its own
Shows on the Buddy’s Devices screen
✓
✓
Answers /ping
✓ With Transport set to UDP or TCP and UDP on the Connection tab
✓
Codes and spares
Where the codes live
On the Mac
In the relay itself
Learning a new code
On the Flipper, then Import on the Slots tab, or /rf/learn from QLab and save on the Flipper
On the relay’s own screen, or over OSC with /rf/learn
Swapping in a spare
✓ Any Flipper; non-Princeton signals need their files on its SD card
✗ Must learn the codes again

Starting from scratch? Take the relay. This app is for when you already own a Flipper and don’t want another box.

Download for macOS Version 0.1.34 · Apple silicon · macOS 12+

Beta: built, but not yet run through a show. Take it if you are testing, not if you are running a show. An installed copy can follow the beta channel by itself: Settings → Connection → Offer beta builds.

Install it

Your browser may warn the download is uncommon or from an unidentified developer. That is because the app isn’t signed with a paid Apple certificate, not because anything is wrong. Keep it.

  1. Open the disk image and drag RF Relay (For Flipper Zero) onto Applications.
  2. Run it from Applications. Opened from the disk image or Downloads, macOS runs a read-only copy that can’t update itself.
  3. Approve it once:
    • macOS 15 (Sequoia) or later: double-click it and let it refuse. Then System Settings → Privacy & Security, scroll down, click Open Anyway, and launch it again.
    • macOS 12–14: right-click the app → Open, then confirm.

It lives in the menu bar near the clock (RF Relay ○), not the Dock. Its one window, Settings, opens by itself the first time and from the menu after that.

Updates are your call. When a newer build is on this site, it shows a notification and an Install Update item in the menu. It never installs on its own, because installing restarts the app and cuts off any transmission in progress.

Setting it up

Bring your Flipper remotes inRF Relay (For Flipper Zero) → Settings
  1. 1Open Settings… from the RF Relay menu bar item. It opens on Slots, with three ways to add a remote
  2. 2Plug the Flipper in and the band at the top turns green, Connected. Import from Flipper… reads your saved remotes straight off its SD card
  3. 3Each row is a slot, and its number is the one QLab uses: /rf/1 fires row 1. Test fires it from here. The slot you are editing is drawn lifted. Double-click a slot to rename it
  4. 4The QLab tab lists the four steps to patch a Network cue, each with its own Copy buttons

The Settings window as the app draws it, rendered on macOS by the repo’s own capture tool.

  1. Learn your remotes on the Flipper with its Sub-GHz app: Read, press the remote, Save. Name each one. Then back out to the Flipper’s main menu.
  2. Plug the Flipper in and open Settings from the RF Relay menu bar item. It opens on the Slots tab. Click Import from Flipper; it reads the signal straight off the SD card over USB. No qFlipper, no copying files.
  3. Save, then test. Each row has its own Test button; Test OFF sits at the bottom for a slot with an OFF code. The receiver should trip. The row number is the slot number QLab uses.
  4. Point QLab at it. The QLab tab lists the four steps to patch a Network cue, each with its own copy buttons, plus Copy all steps.
QLab Network patchSet to
Destination127.0.0.1 with QLab on the same Mac, or this Mac’s LAN address from another machine
Port8000
ProtocolOSC over TCP (QLab’s recommended). The Connection tab’s Transport can switch to UDP, or both on the same port.

Which remotes work

signal types, rolling codes
  • A slot fires any signal the Flipper can transmit: Princeton (the PT2262/EV1527 family the hardware relay learns too), Came, Nice, Holtek or a raw capture.
  • Rolling-code remotes won’t work, such as most garage doors and car fobs. Replaying one does nothing.
  • On an empty Slots tab there are three ways in: Import from Flipper (the one to start with), Choose file… for a .sub capture already on the Mac, or Add empty slot to type a code and frequency by hand.
  • The Messages tab lists every address the app answers.

Cues

Cues and durations read the same as on the hardware RF Relay, so one cue file works with either. Two differences: a passcode set in the app is required on every cue, and a hold over 60 s is cut to 60 s instead of refused. See how a duration is written and the OSC command chart.

CueDoes
/rf/1Fires slot 1 for the default hold
/rf/1 0.5Holds half a second
/rf/1/400msHolds 400 milliseconds
/rf/1/00:01.30Holds a minute and a half
/rf/stopCuts a transmission short
/rf/learn/3The next signal you save on the Flipper becomes slot 3
/rf/learnoff/3The same, for slot 3’s OFF side
/rf/learncancelStops waiting for a signal
/identify, /rf/identifyBlinks the Flipper’s LED and the menu bar item
/rf/testRuns the Pre-Show Check

The app ignores /rf/slots and /springboard/*, so RF Springboard can’t use a Flipper. On a 0.13.0 hardware relay, a bare decimal in the path is still read as clock notation: /rf/1/0.5 means 5 seconds there, not half of one. Write it as an argument (/rf/1 0.5) or with a unit until 0.13.1.

Before a show

  • Leave the Flipper on its main menu. Sitting inside its Sub-GHz app can hold the radio.
  • Check the menu bar reads RF Relay ●. A filled dot means connected.
  • Run Pre-Show Check from the menu bar item’s More menu. It tests the port, the config, the Flipper and every slot.
  • Close qFlipper. It takes over the USB connection.
  • Flipper not answering? Unplug it and plug it back in. The app reconnects by itself.
Run the Pre-Show CheckRF Relay menu bar item → More
  1. 1Open the RF Relay menu bar item. A red line already warns of a slot whose signal is not on the Flipper. Point at More
  2. 2Choose Pre-Show Check. It tests the port QLab sends to, the config, the Flipper and every slot, and fires nothing
  3. 3One line per check. Here four pass and Slots fails: qb3_Gate.sub is not on the Flipper. Import it again, then run the check until it says Ready for the show

The menu is the app’s own render; the result alert is drawn, with the exact lines the app writes for that state.

With QLab on the same Mac, no WiFi is in the trigger path: the cue goes down the USB cable. From another machine it crosses your network first. The trade-off: the Mac must be on, which for a QLab rig it already is.


Firmware Updates (OTA)

Once flashed, every board updates itself wirelessly, over the air (OTA). You tap a button on the Buddy; nothing installs on its own.

  • The Buddy downloads its own update and, from 0.13.1, each prop’s too.
  • It checks the prop’s file against the published checksum, then hands it to the prop over your own network.
  • The prop never needs the internet. If the Buddy can’t hold the file, the prop downloads it itself, as before.
qlabbuddy.com QLAB Buddy Paired prop its own firmware, and the prop’s fallback only, if the Buddy cannot hold it checked, then served over your network
The Buddy downloads both binaries, checks the prop’s against its checksum, and serves it to the prop over your own network. The old path — the prop fetching the file itself — is now only the fallback.

Why the Buddy fetches for the prop

venue networks
  • A prop sits on a fixed address the Buddy gave it, and that address has no name server of its own.
  • On some venue networks, such as guest WiFi and managed AV networks, a prop can join but never find the download site.
  • The Buddy uses the venue’s normal setup and has already reached the site, so it does the download.
  • A prop already in the field needs no new firmware to be updated this way.

Updating a paired prop

Open DEVICES on the Buddy. A prop with a newer version shows a green UPDATE chip beside it. Tap it once; there is no confirm step.

Update a prop from DEVICESOne tap on its UPDATE chip
BOOTRSTPWRmicroSDUSB-C
  1. 1The relay reports 0.13.1 after its address. The website has 0.13.2, so a green UPDATE chip appears
  2. 2Tap it once; there is no confirm. CHECK asks the prop if it is ready, then FETCH: the Buddy downloads the update
  3. 3SEND hands it to the prop over your network, then FLASH while the prop writes it
  4. 4The prop restarts on 0.13.2 and the chip is gone
Chip readsWhat it means
UPDATEA newer release is ready. Tap to install.
REVERTThe prop runs a beta, which is ahead of the release. Tap to install the release.
CHECK, FETCH, SEND, FLASHThe steps, over a bar that fills as the file moves. Yellow means slow or stalled.
DONEInstalled.
HOTSPOTThe prop is on the show hotspot and the Buddy has no WiFi, so there is no way out to the internet.
A red codeIt failed, and the code says why. NONET: the prop never reached the server. A number: the server’s own status code. SHA: the file failed its check. A red FLASH: writing it failed. ERR: no reason given.
  • Each row also shows the prop’s firmware, after its address.
  • The chip appears within seconds of the Buddy starting. The Buddy checks again every 10 minutes.
  • Give it time. An update can take a few minutes. A real failure takes up to about six minutes to show its red code, so a slow venue network isn’t mistaken for a broken flash.
  • A prop on the show hotspot downloads through the Buddy’s own WiFi connection.
  • An RF Relay on 0.13.2 Beta 22 or later is never offered REVERT to a build older than Beta 22. It stores its slots in a new format, and older firmware would start with every slot empty.
Don’t tap UPDATE mid-show. The prop goes offline while it installs and re-verifies, so a cue in that window won’t fire. Update at soundcheck or between shows.

Updating the Buddy itself

Settings → Software, channels, HOLD
  • Settings → Software shows the Buddy’s version, with Check Again and Install.
  • It checks in the background, roughly every 15 minutes. Nothing installs until you tap Install.
  • The channel row picks where updates come from: Production, BETA or HOLD 0.13.2.

HOLD freezes the whole rig on what it runs now. Use it for a run of shows you don’t want touched.

  • The Buddy stops checking and refuses installs.
  • DEVICES shows no UPDATE or REVERT chips.
  • Latest reads Not checking, and the splash says Updates on hold.
  • It stays on through restarts. Tap Production or BETA to leave; that channel is checked at once.
Hold the rig on its firmwareSettings → Software, the channel row
BOOTRSTPWRmicroSDUSB-C
  1. 1The Buddy is on a show, checking for updates in the background
  2. 2Tap the cog, then Software. It shows the version installed, the latest one, and the channel: Production
  3. 3Tap HOLD. Latest reads Not checking and the Buddy says it stays on this version. Install is switched off
  4. 4Tap Production or BETA to leave. That channel is checked at once

Verification and rollback

SHA-256 and rollback
  • Every download is SHA-256 checked before anything is written, so a corrupt file can’t half-install.
  • New firmware must run cleanly for 60 seconds to be kept. If it crashes first, the board boots back into the previous version by itself.
  • The Buddy tries its download of a prop’s file up to three times through a WiFi blip, and checks it before sending a byte. The prop checks the same hash again.
  • Only the Buddy needs real internet (from 0.13.1). A prop only needs to be reachable from the Buddy. A prop on a bare USB cable with nothing else is not reachable.

GO and PANIC

GO runs the next cue. PANIC fades out and stops everything that is playing. The Buddy and the Mini can send both, but only to the show the Buddy is connected to.

GO, PANIC and stepping cues from the Buddy3.5″ Buddy and QLab on your Mac
BOOTRSTPWRmicroSDUSB-Chold 5 s
QLAB Buddy
Matinee — QLab 5GONumberQ1House to half1.2Preshow announcement1.5Deck Reveal1.8Fade out house music2Smoke Effect
QLab on your Mac
  1. 1QLab and the Buddy stand by on the same cue
  2. 2Tap BOOT and let go within 0.6 s: GO. QLab runs the cue, and both move to the next
  3. 3Hold the left edge of LIVE for half a second: QLab’s playhead goes back one cue. Nothing runs
  4. 4Hold the right edge: the playhead moves on one cue. Still nothing runs
  5. 5Hold BOOT for 5 s: PANIC. QLab stops every running cue. Let go sooner and nothing is sent
  6. 6The playhead stays where it was, ready for the next GO
DeviceGOPANICPrevious / next cue
QLAB Buddy 3.5″Tap BOOT (under 0.6 s)Hold BOOT for 5 sHold the left or right edge of LIVE
QLAB Buddy 4.3″ / 7″No button. Use QLab, Go Button or a remote.Hold the left or right edge of LIVE
QLAB Buddy MiniPress GO on the REMOTE page (under 0.6 s)Hold GO on REMOTE for 3 sThe arrows on REMOTE

From the Mini: the REMOTE page 0.13.2

A big green GO with ◀ and ▶ either side, under the cue the playhead is on. It appears only while the Buddy’s OSC Access is set to CTRL.

Run the show from the MiniREMOTE sends to QLab on your Mac; the Buddy must be set to CTRL
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
nRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-C
RF Relay
BOOTPWRUSB-CmicroSD
Buddy Mini
Matinee — QLab 5GONumberQ1.8Fade out house music1.9Understudy note2Smoke Effect2.2Overture2.5Turntable start
QLab on your Mac
  1. 1QLab, the Buddy and the Mini on the same cue, the relay standing by
  2. 2Tap BOOT on the Mini: the REMOTE page
  3. 3◀ and ▶ go straight to QLab and move its playhead. The Buddy follows QLab; nothing fires
  4. 4GO goes to QLab, not to the Buddy. QLab runs cue 2, its Network cue fires the relay, and the ring lights for the 3 s hold
  5. 5Keep a finger on GO: it fills red, and at 3 s the Mini tells QLab to panic
  6. 6Let go and the page is ready again
You doIt sends
Tap GO (under 0.6 s)GO, when you lift your finger
Hold GO 0.6 to 3 s, then let goNothing
Hold GO 3 sPANIC. GO fills red from the left, then reads PANIC.
Tap ◀ or ▶Moves the playhead. Fires nothing.

When REMOTE won’t fire

greyed buttons, messages
  • It works on QLab and Go Button shows alike, and never times back to LIVE.
  • The Mini remembers CTRL, so the page survives a restart. Switch the Buddy to VIEW and the page goes.
  • Not connected to QLab: there is no show.
  • Show not paired to your buddy: another rig’s show, while your Buddy is off.
  • Not your buddy’s show: another rig’s copy of the file. The buttons grey out.

Built not to fire by accident

  • A slow press sends nothing. Holding BOOT between 0.6 and 5 s does nothing.
  • After PANIC the button rests a moment, so letting go doesn’t also send GO.
  • No show connected: nothing is sent. The status bar says GO not sent - not connected or PANIC not sent - no show.
  • VIEW mode in OSC Access silences both. It also removes the Mini’s REMOTE page.
  • RF Springboard silences both while the grid is up.

Why they never reach another rig’s show: see Two Buddies, One Venue.


RF Springboard 0.13.2

RF Springboard turns the Buddy’s screen into a panel of big buttons, one for each remote your RF Relays have learned. Tap a button and the relay sends that remote’s signal.

No QLab, Mac or cue list needed. Hand the Buddy to a performer, or leave it on a table for guests to press.

Needs the Buddy and its relays on 0.13.2 from Beta Firmware. QLab Detection needs relay firmware 0.13.2 Beta 22 or later.

Setting it up

  1. Teach an RF Relay your remotes. Each learned slot becomes a button with the slot’s name. See RF Relay.
  2. Open the page. Tap the cog, then RF Springboard.
  3. Tap Launch Springboard. The grid fills the screen and the relays lock.

Every setting on the page

send time, reset time, PINs
RowWhat it doesDefault
ButtonsHide or disable buttons, and teach new remotes. See below.–
RelaysEach paired relay, its address, its button count, and Connected, Locked, Locking... or Not answering.–
RF Send TimeHow long each tap sends the signal: 1, 3, 5 or 10 s.3 s
RF Reset TimeHow long a button rests before it can fire again: Off, 2, 5, 10 or 30 s.Off
QLab DetectionOn: QLab cues can still fire props. Off: only this screen can; relays refuse cues from QLab and other Buddies.On
Owner’s PIN4 to 6 digits, typed twice. Needed to get back to this page. Remove (tap twice) also removes the Guest PIN.Off
Guest PINLocks the buttons after the Guest Lock Time. Needs an Owner’s PIN first, and must differ from it.Off
Guest Lock TimeIdle time before the Guest PIN is asked for: 30 s, 1, 2, 5 or 10 min.2 min

The grid

Just buttons, plus a small Status Dot bottom-left: green with a network, red without. Up to nine buttons fit on the 3.5″ and sixteen on the 4.3″ and 7″; more scroll.

Run RF SpringboardSettings → RF Springboard, on the Buddy and the Mini
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
nRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-C
RF Relay
BOOTPWRUSB-CmicroSD
Buddy Mini
  1. 1Settings → RF Springboard. The Buddy lists the four buttons it learned from the relay
  2. 2Buttons: tap one once to disable it, twice to hide it. Strobe is disabled, Snow hidden
  3. 3Owner’s PIN: type it twice. It guards this page once the grid is up
  4. 4Guest PIN: type it twice. Guests need it to use the buttons
  5. 5Launch Springboard. The relay locks to this Buddy and its knob goes dead; the Mini asks for the Guest PIN
  6. 6Tap Confetti on the Buddy. The relay shows what it sends
  7. 7On the Mini, type the Guest PIN and tap Fog. The Mini sends the tap to the Buddy, the Buddy fires the relay, and both grids show ON
  8. 8The Mini only works through the Buddy. Unplug the Buddy and the Mini says Can’t reach Buddy until it is back
  9. 9Hold the Status Dot for 3 s and type the Owner’s PIN. Back leaves Springboard and unlocks the relay
Button showsMeaning
Grey, then soft greenTapped, then the relay confirmed it fired
SENDINGThe relay is still sending the signal
WAITINGAnother button on the same relay is sending. This one fires next.
READY INCounting down the RF Reset Time
NOT SENTThe relay could not be reached
OFFLINEThe relay is not answering
ON / OFF tagThe remote has an OFF button learned (/rf/learnoff). Taps alternate.
  • Buttons are ordered by relay, then slot.
  • New or deleted slots on a relay show up by themselves within ten seconds.
  • BOOT sends nothing to QLab while the grid is up: no GO, no PANIC.

Hiding buttons and adding remotes

Tap Buttons on the page. Each tap on a button steps it on → disabled → hidden. Tap DONE when finished.

Hide a button, add a remoteRF Springboard → Buttons
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
nRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-C
RF Relay
BOOTPWRUSB-CmicroSD
Buddy Mini
  1. 1The cog, then RF Springboard. Tap Buttons
  2. 2Tap a button once: DISABLED. It stays on the grid, dimmed
  3. 3Tap it again: HIDDEN. It leaves the grid with no gap
  4. 4Tap ADD REMOTE, then press the remote near the relay within 15 s. The relay says CAPTURED and a Slot 5 button appears
  5. 5DONE, then Launch Springboard. On the Buddy and the Mini, Strobe is gone and Slot 5 is there
  • Disabled stays on the grid, dimmed. A tap says This prop can’t be activated right now.
  • Hidden leaves no gap.
  • Both are remembered, even for a relay that is switched off.
  • ADD REMOTE (one tile per relay): tap it, then press the remote’s button near that relay within 15 s. It goes into the first free slot.

ADD REMOTE results: New remote added, No remote heard - try again, That relay has no free slots or Could not reach the relay.

Getting back out

Hold the Status Dot for 3 s. A gold ring fills as you hold. On the 3.5″, holding BOOT for 3 s also works. The 4.3″ and 7″ have only the dot.

  • Owner’s PIN set? A PIN card appears first. A wrong PIN shakes red; there is no lockout. It closes after 20 s untouched.
  • You land on the RF Springboard page. The springboard is still running, but the relays are released.
  • Launch Springboard returns to the grid. So does leaving the page untouched for 2 minutes.
  • Back ends RF Springboard: the Buddy goes to LIVE and unlocks the relays.

After a power cut: a Buddy that was showing the grid comes back to the grid (locked, if a Guest PIN is set). One that was on the RF Springboard page comes back to LIVE, springboard off.

On the relay

locking, auto-unlock, unpairing

While the grid is up, the relay’s own wheel and buttons do nothing, so nobody can fire or delete a slot at the relay.

  • The screen shows a yellow padlock, RF Springboard and Controlled by QLab Buddy. When a slot fires, it shows that slot’s name.
  • Network cues still work, unless QLab Detection is off. Then the relay’s lights show plain green, not QLab blue.
  • The Buddy renews the lock every ten seconds. If it stops, the relay unlocks itself after two minutes, so a dead Buddy never leaves a relay stuck.
  • A relay that restarts comes back locked for those two minutes.
  • Only the Buddy that locked a relay can unlock it.
  • To unpair a locked relay at the relay: hold the wheel for 10 s. The unpair bar appears and fills over another 5 s. Let go and choose UNPAIR (CANCEL is selected first).

On the Mini

the same grid in your hand
  • Nothing to set up. Every paired Mini shows the grid by itself, two buttons across and three down. Drag to see more.
  • A tap reads SENT at once, then follows the Buddy. A press on either screen lights on both. Scrolling never fires a button.
  • Guest PIN: the Mini starts locked and asks for it. It never asks for the Owner’s PIN.
  • Can’t reach Buddy: after 8 s the buttons switch off and say so.
  • It ends when the Buddy leaves RF Springboard, and the Mini goes back to LIVE.
  • Taps and scrolls. A tap counts only once your finger has been off the glass a moment. A press right where a scroll let go keeps scrolling.
  • DISABLED or OFFLINE buttons say This prop can’t be activated right now. Hidden buttons don’t appear. With none set up it reads No buttons yet.
  • PIN check. The Mini checks the Guest PIN with the Buddy, so the PIN never leaves the Buddy. A wrong one reads Wrong PIN in red, with no lockout.
  • Its own lock. Unlocking the Buddy does not unlock the Mini, or the other way round. The Mini locks again after the Buddy’s Guest Lock Time idle, and when the Buddy restarts.
  • Buddy lost. Taps are not saved to fire later. After another 2 minutes out of reach, the Mini leaves the springboard for its normal pages.
  • Owner on the page. While the RF Springboard page is open on the Buddy, Minis step out. They come back (locked, with a Guest PIN) when the grid returns.
  • Gestures. Sideways swipes, a BOOT tap and REMOTE do nothing. Brightness swipes, PWR and the 3 s BOOT hold to unpair still work.
  • Only your own rig. An unpaired Mini never shows a springboard. A Mini takes the grid only from its own Buddy, and a Buddy ignores taps from another Buddy’s Mini.
  • Up to 200 buttons, the same as the Buddy.

Several relays can share one grid, up to 200 buttons in all. The addresses the Buddy uses to talk to a relay are in the OSC Command Chart; they are not for QLab cues.


Reading the Status Dot

The status bar along the bottom tells you, at a glance, how the Buddy is connected. Its colours follow the fleet’s colour language.

  • The dot and its label sit bottom-left on every view. The label names the path in use: WiFi, LAN, Hotspot and so on.
  • A blue top edge means a show is open.
  • A breathing dot means the network is up but no show is open yet.
  • The middle names the open workspace.
Read the status barBottom-left of every view
BOOTRSTPWRmicroSDUSB-C
  1. 1No WiFi, grey: never set up
  2. 2WiFi: on your network, looking for the show
  3. 3QLAB, blue: your show is open
  4. 4LAN: cabled to the Mac
  5. 5Pairing, yellow: the Buddy is pairing a prop
  6. 6No WiFi, red: a saved network was lost
Status barWhat it means
Blue QLAB status bar with a white dotBlue, white dot: Show open, internet not confirmed Cues work. Only the clock and updates wait on the internet.
Blue QLAB status bar with a green dotBlue, green dot: Show open, internet confirmed Green dot: all healthy. Before 0.13.2 this dot was gold.
Green status bar labelled WiFiGreen, WiFi: On WiFi, no show yet Green: network fine, still looking for a show.
Grey status bar with a white dot, labelled LANGrey, LAN: Cabled to a Mac Always grey with a white dot on a cable. The clock and updates still reach the internet.
Grey status bar with a white dot, labelled HotspotGrey, Hotspot: Show hotspot, nothing joined The show hotspot is up and empty.
Green status bar labelled HotspotGreen, Hotspot: Show hotspot, device joined Green: a prop, Mac or phone has joined.
Yellow status bar labelled PairingYellow, Pairing: Pairing Yellow: Pair Devices is on and no show is open.
Grey status bar with a grey dot, labelled No WiFiGrey, No WiFi: Never set up No network saved yet. Tap the cog → WiFi.
Red status bar labelled No WiFiRed, No WiFi: Connection lost Red: the saved network is lost, or WiFi is off with no cable. Plug in USB-C, or tap the network in Settings → WiFi.

Short notices can replace the workspace name for a moment: GO not sent - not connected in red, or API Sync From and an address in yellow when another Buddy offers its API settings.

Passcode refused

when OSC is locked

If the show has an OSC passcode and the Buddy’s copy is missing or wrong, the whole bar turns red and reads Passcode. The cue display shows PASSCODE REQUIRED.

  • Fix it in Settings → OSC Access. See OSC Access.
  • Also shown when QLab lets the Buddy in with nothing allowed. In QLab’s OSC Access, tick View or Control in the No Passcode row, or give the Buddy a passcode that has them.
  • It only appears for the show the Buddy is trying to drive, not for someone else’s passcoded Go Button on the same network.
When the bar says PasscodeQLab’s OSC is locked, and the Buddy has the wrong code
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
Matinee — QLab 5GONumberQ0.5Pre-show reset0.8House music1House to half1.2Preshow announcement1.5Deck Reveal
QLab on your Mac
  1. 1QLab has an OSC passcode, and the Buddy does not have it. LIVE reads PASSCODE REQUIRED and the bar turns red, Passcode
  2. 2Tap the cog, then OSC Access. Under OSC Passcodes, QLab reads Not set
  3. 3Tap ON beside QLab, type the same passcode QLab uses, then SAVE
  4. 4QLab lets the Buddy in. The bar turns blue, QLAB, and LIVE shows the standby cue

Show Hotspot 0.13.2

The show hotspot is the Buddy’s own WiFi network. Use it in a venue with no router, or one you’d rather not trust. Your Mac or iPhone joins it to reach the show, and props can live on it too.

Open it from the cog, then Hotspot.

Using it

  • Turn it on or off by holding Hold To Turn On / Hold To Turn Off. A tap does nothing.
  • Move props onto it with the Move button on a prop’s row, or Move All.
  • Rename it or change the password by tapping either one. Props already on it follow the change.
  • A Mac or phone on it gets internet through the Buddy, whenever the Buddy is on a WiFi. Props on it update the same way.
  • No WiFi set on the Buddy? A prop you pair is given the show hotspot instead.
Bring props onto the hotspotMove, or Move All
BOOTRSTPWRmicroSDUSB-C
  1. 1Tap Move on a prop. Its row turns yellow: Moving to hotspot...
  2. 2It arrives: On hotspot in green, with its signal
  3. 3Move All brings every other prop over
A prop’s row readsMeaning
On hotspotOn the show hotspot, with its signal
On WiFi nameOn the venue WiFi. Tap Move to bring it over.
Moving to hotspot... or Moving to WiFi name...On its way
Offline / Offline (hotspot)Not answering
Missed the change - pair againIt was off when you renamed the hotspot or changed its password

Two hotspots, one radio

The Buddy also has a fixed pairing hotspot. Only one runs at a time.

Show hotspotPairing hotspot
NameQLAB Buddy and four characters from the board, such as QLAB Buddy 3F2A. You can rename it.Always QLAB Buddy
Passwordbuddy and six characters from the board. You can change it.Always qlabbuddy
When it is upWhile you have it switched onOnly while Pair Devices is on
  • Pairing borrows the radio. Props on the show hotspot drop off while you pair, and come back after. The Buddy warns you first.
  • Two rigs never clash. Every Buddy’s show hotspot has its own name and password out of the box.

Turning it off, names and addresses

stranded props, address range, name rules
  • Turning it off with props on it. The Buddy first sends each prop back to the venue WiFi.
  • If a prop doesn’t answer, the hotspot stays on and the page says how many missed it. Hold again within 30 s to turn it off anyway.
  • Buddy’s WiFi saved but not connected? The page warns Not on the WiFi - hold again to strand props first.
  • A prop left behind finds the venue WiFi again on its own after about a minute. The wait is on purpose, so a Buddy restarting or updating doesn’t strand its props.
  • Addresses. Props on the hotspot get 192.168.44.x. If the venue WiFi uses that range, the Buddy moves the hotspot to the next free one and tells its props. Check DEVICES for new addresses.
  • Name and password rules. The keyboard refuses the pairing hotspot’s name, or a name another Buddy nearby already has. A password needs at least 8 characters.

The status bar shows the hotspot grey while empty and green once something joins. See Reading the Status Dot.


Changing WiFi 0.13.2

Props go where the Buddy goes. Switch the Buddy to another WiFi and every paired prop that is on moves with it. No re-pairing, no walking round the stage.

Use it to move a rig from your workshop network to the venue’s.

Move the rig to the venue WiFiBuddy → cog → WiFi, and the props follow
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
nRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-C
RF Relay
BOOTPWRUSB-CmicroSD
Buddy Mini
  1. 1The relay and the Mini are on Theater WiFi, at the addresses DEVICES shows. Open the cog, then WiFi. The venue’s network is saved there already; + adds one
  2. 2Tap Venue. The row reads Checking - tap to cancel: the Buddy joins it to test it, so its bar says No WiFi for now. No prop has been told anything yet
  3. 3The check passed. Back on Theater WiFi, the row reads Moving 2 devices... while each prop takes the new network, shows PAIRED and restarts onto it
  4. 4Connecting..., then Venue is ACTIVE. The relay is back, with a new address from the venue’s router
  5. 5On DEVICES, both props are back at their new addresses. Update any QLab Network Patches or Go Button tags that use them
  1. Save the new network. Tap the cog, WiFi, then +.
  2. Tap it. The row reads Checking - tap to cancel while the Buddy tests the network and password itself.
  3. The props move. The row reads Moving 3 devices..., then Connecting.... Each prop restarts onto the new WiFi.
  4. Check the addresses. Open DEVICES. The new router gives each prop a new one. Update any QLab Network Patches or Go Button tags to match.
  • Safe to back out. The props hear nothing until the check passes. Cancel during Checking, or a failed check, changes nothing.
  • Hotspot props stay put. Props on the show hotspot don’t move.

A prop that missed the move

A prop that was off or out of range still has the old network. DEVICES shows a yellow bar: 1 Device Not On This WiFi - Tap + To Pair.

  1. Tap +. It opens Pair Devices.
  2. Power the prop on. After about a minute it gives up on the old network and the Buddy brings it over by itself. No SYNC needed.
  3. Close Pair Devices. Do it once the prop has arrived. It keeps its name and the last number of its address.
A prop that missed the moveDEVICES after Changing WiFi, with one prop that was off
BOOTRSTPWRmicroSDUSB-C
  1. 1A yellow bar: 1 Device Not On This WiFi - Tap + To Pair. The relay was off when the Buddy changed WiFi
  2. 2Tap + to open Pair Devices
  3. 3Power the relay on. It tries the old WiFi first, and after about a minute it gives up (sped up here)
  4. 4It joins the pairing hotspot, and the Buddy brings it over by itself: WAIT, then it answers on this WiFi. No SYNC tap
  5. 5Tap × Pairing to close. The bar is gone

If the new network doesn’t answer

fallback, power cuts, refusals
  • A moved prop keeps its old network as a way back.
  • If the new one doesn’t answer after three tries (about a minute), it tries the old one. It swaps between them up to four times, then looks for the Buddy’s pairing hotspot.
  • Once it lands on the new network, it forgets the old one.
  • A move survives a power cut part-way through.
  • A tap that can’t start a switch says why: End pairing first or Wait for the current switch.

Two Buddies, One Venue 0.13.2

Two performers, two Buddies, one venue WiFi. Each rig keeps to itself. There is no password or team key to set up.

  • Props are yours alone. Another Buddy’s props never appear on your DEVICES list. Unpaired props still show, so you can pair them.
  • Addresses never clash. Each Buddy hands out addresses from its own place in the pool.
  • GO and PANIC stay on your show. See GO and PANIC.
  • Props refuse the other rig’s cues. An RF Relay or Universal Controller ignores cues from another Buddy or its QLab Mac.
  • The Buddy stays on its own show. It sticks to the file and Mac it knows. If more than one Mac offers a show, it asks you with the workspace picker.
  • The Mini’s REMOTE drives only its own Buddy’s show. On another rig’s copy of the file its buttons grey out.
  • API Sync asks first. You get Accept Sync or Deny Sync. See Magic API.

Pair on one Buddy at a time. Both pairing hotspots are called QLAB Buddy.

The fine print

IP ranges, unknown senders
  • Fully separate ranges. Set each Buddy’s IP range with the arrows in the DEVICES header: Auto IP, or one of four 40-address slices.
  • No borrowed addresses. An address used by another Buddy’s prop is never given to one of yours.
  • Unknown senders still work. A prop refuses a cue only when it is proven to come from the other rig, so nothing that worked before stops working.
  • A Universal Controller never refuses a stop.
  • The OSC passcode is still there as an extra layer if you want one.

Workspace Lock

The Buddy reconnects by itself to the last show it used on each network, QLab or Go Button. If it sees shows on two or more Macs on a new network, it asks you to pick one.

In a busy rig you can lock it to exactly one show on one machine.

Workspace picker

Open Settings → Workspace. Every show the Buddy can see is a row.

Do thisWhat happens
Tap a rowUse that show. The Buddy keeps it through WiFi drops and restarts.
Hold a row 2.5 sLock to that show and that machine’s address. The row fills yellow as you hold.
Hold it againUnlock
Back (top-right)Return to Settings
Lock a workspaceSettings → Workspace
BOOTRSTPWRmicroSDUSB-C
  1. 1Open the workspace list
  2. 2Press and hold your show
  3. 3Keep holding while the bar fills
  4. 4When it is full, it locks and says LOCKED
  • Gold edge and a LOCKED tag: the locked row, pinned to the top.
  • Green edge: the show in use.
  • A locked Buddy ignores every other host, even one that answers first.
  • No shows listed? Tap Enter IP Manually and type the machine’s address, such as 192.168.1.42. Useful when the network stops the Buddy finding shows by itself.
  • QLab minimised is fine. Only closing the workspace disconnects the Buddy.

When the locked show goes away

offline rows, when a lock lets go
  • Locked host offline: its row stays at the top, still LOCKED, reading Locked Workspace and Offline - <address>. The Buddy waits for it and ignores everything else.
  • Silent because of the lock? The Workspace row in Settings shows a yellow padlock and Pinned, ignoring with the refused Mac’s address.
  • 0.13.2 The network went away (USB cable unplugged, or WiFi changed): the Buddy stops refusing other hosts until that connection is back.
  • 0.13.2 The cable wins. If the locked host is silent and a QLab on the USB cable asks to connect, the cable gets it.
  • A lock made with Enter IP Manually never lets go.
When the locked show goes awaya workspace locked to one Mac
BOOTRSTPWRmicroSDUSB-C
  1. 1Matinee is locked: its row in the picker reads LOCKED
  2. 2Its Mac goes away. The row stays at the top, reading Locked Workspace and Offline - 192.168.1.45. The Buddy waits for it
  3. 3Another Mac’s QLab asks to connect and is refused. In Settings, the Workspace row shows a yellow padlock and Pinned, ignoring 192.168.1.47
  4. 4Matinee’s Mac comes back and the Buddy reconnects to it. LIVE shows its standby cue again

OSC Access

VIEW and CTRL

Tap Settings → OSC Access. Every OSC permission and passcode lives here.

OSC AccessSettings → OSC Access
BOOTRSTPWRmicroSDUSB-C
  1. 1Tap the cog, then OSC Access
  2. 2Tap VIEW: watch only. GO, PANIC and cue steps are switched off
  3. 3Tap CTRL to give control back
  4. 4Passcode set in QLab? Tap ON beside QLab, type the same code and SAVE
RowWhat it does
ModeCTRL (default): the Buddy can send GO, PANIC and cue steps, and a paired Mini gets its REMOTE page.
VIEW: watch only. Every control is silenced and the Mini’s REMOTE goes away. Good for a screen within reach of an audience.
Timer Log 0.13.2Whether this Buddy writes the section-times run log into your show file. The caption says what happened last run.
QLab passcodeThe OSC passcode from QLab’s Workspace Settings → Network → OSC Access, if set. Sent on every connect.
Go Button passcodeThe Go Button show’s OSC passcode, if set. Enter it only here: the Buddy shares it with every prop.

Tap ON on a passcode row, or the row itself, to open the number pad. Tap OFF to clear it. Leave a passcode off if the show has none.

Passcode auto-sync to props

how the passcode propagates

Enter the Go Button passcode once on the Buddy. The Buddy pushes it to every paired RF Relay and Universal Controller. You never type it into a prop.

  • What a prop does with it: it refuses a cue carrying the wrong passcode. A cue with no passcode still fires, so ordinary QLab cues keep working.
  • It is not a lock. What keeps two rigs apart is pairing. See Two Buddies, One Venue.
  • Every prop gets it: new ones, ones that reconnect, and ones pairing with SYNC.
  • Changes reach props right away, including clearing it with OFF.
  • A prop that missed a change catches up by itself the next time it reports in.
There is no per-prop passcode field. If a prop refuses a cue that carries a passcode, compare the cue’s passcode with the Buddy’s Go Button passcode. The Buddy’s QLab passcode is a different code: it lets a relay or Mini read a passcoded workspace for its timer, and never affects whether a prop fires.

Show Timers

The Buddy can show a clock next to the cue name: a countdown to a curtain, a stopwatch across an act, or how long the show has run. What you get depends on the app running the show.

Running the show inWhat you get
QLabFull control, per cue: countdown, count-up, pause, resume, end, and section times. Set with tags in cue Notes.
Go ButtonOne show clock, set in Go Button itself. See From Go Button.

From QLab: tags in cue Notes

Type a tag into a cue’s Notes. When that cue fires, the clock does what the tag says. The Buddy hides the tags from the notes it shows, so they never clutter the screen.

Tag What it does
#timer/HH:MM.SS Counts down from that time. Hours are optional: #timer/05.00 is five minutes.
#timer/start Counts up from 00:00.00, in grey. Put it on the first cue of the show.
#timer/pause Freezes the clock in its current colour.
#timer/resume Carries on exactly where it paused.
#timer/end Show over. Freezes the final run time: green if on or under time, red if over, grey for a count-up.
#timer/clear Resets the clock and the section times. Put it on a pre-show reset cue.
#timer/lap label 0.13.2 Starts a named section of the show. See Section times.
#timer/log 0.13.2 Marks the cue the section-times log is written into. See Turn on writing.

What the colours mean

  • Green: counting down, time left.
  • Yellow: the last five minutes.
  • Red: past zero. The clock goes negative to show how far over.
  • Grey: counting up.

The Buddy, the Mini and the RF Relay all show the same colours.

A countdown on every screen#timer/45.00 on a QLab cue
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
nRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-C
RF Relay
BOOTPWRUSB-CmicroSD
Buddy Mini
Matinee — QLab 5GONumberQ2.8Projection: title3Act One, top3.2Lights up on the table3.4Hold for applause3.5Scene change
QLab on your Mac
  1. 1The standby cue carries #timer/45.00 Act One. Before GO, every screen shows the target in grey
  2. 2GO: the countdown starts, green while there is time to spare
  3. 3The last five minutes: yellow (sped up here)
  4. 4Past zero: red, counting how far over. The Buddy and the Mini add a minus sign
  • Clear it by hand: tap the timer area on the Buddy’s screen at any time.
  • Closing the QLab file clears the clock on the Buddy, the Mini and the RF Relay.
  • A WiFi drop does not. The clock keeps running, because a blip is not the end of the show.
  • A Mini or relay powered up mid-countdown picks up the clock where it actually is.

When a tag counts

fired, not just crossed
  • A tag acts when its cue fires: on GO, auto-continue, auto-follow, a Start cue, a Group, a hotkey or MIDI.
  • The playhead does not need to stop on the cue (from 0.13.1; earlier firmware needed it to).
  • Scrubbing quickly past a cue does not count. Nothing runs, so nothing fires.
  • The one blind spot: a zero-length cue, such as a Memo, reached by auto-continue. QLab never lists it as running. Put the tag on a cue with a duration, or on the cue you GO.
  • Both : and . work as separators.

Section times: #timer/lap 0.13.2

Find out how long each part of your show took. Tag the cue where each part begins. When the clock stops, the Buddy writes the times into a cue’s Notes: one line per section, then the total.

Flash the whole rack before you retag a show. A Mini or RF Relay on 0.13.2 Beta 2 or earlier reads #timer/lap as a clock tag and drops its countdown for the rest of the act. Until every unit is updated, keep the older #lap and #lap/log spellings; they still work.

A four-cue show

CueNotesOn GO
1  House to half#timer/start Test Show
#timer/lap Intro
The clock starts. Intro begins.
2  Fountain#timer/lap First trickIntro ends, First trick begins.
3  Second trick#timer/lap Second TrickFirst trick ends, Second Trick begins.
4  Blackout#timer/end
#timer/log
The clock stops. The log is written into this cue.

After the run, Cue 4’s Notes read:

#timer/end
#timer/log
QLab Buddy Timer Log - Test Show - 09/21/2026 4:51 PM
  Intro         00:03.10
  First trick   00:06.25
  Second Trick  00:04.02
Total           00:13.37
Time each section of the show#timer/lap, then #timer/log on the last cue
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
BOOTPWRUSB-CmicroSD
Buddy Mini
Gala Night — QLab 5GONumberQ3Welcome video4Countdown to top5Reveal6Confetti drop7Bows
QLab on your Mac
  1. 1Cue 4 carries #timer/5.00 Gala and #timer/lap Walk-in. NEXT in yellow names the section it will start
  2. 2GO: the five-minute countdown starts, and so does Walk-in
  3. 3GO on Reveal, tagged #timer/lap Reveal: NOW names the section running
  4. 4GO on Bows, tagged #timer/end and #timer/log: the clock stops, the Buddy writes the times into that cue’s Notes in QLab (with Timer Log on in OSC Access), and the Buddy and the Mini both show them. Under the target reads green
  • The name after #timer/start heads the log.
  • A bare #timer/lap names the section after its cue, such as 2 Fountain.
  • Start with a time, like #timer/25:00, and the log ends with a Target line: over by, under by, or on time.
  • The log cue must be one the playhead comes to rest on, not one the show auto-continues past. The last cue is the tidy choice.
  • The Buddy learns the log cue the first time the playhead rests on it, and remembers it for that workspace, through a power cycle too.

A set with a time limit

a worked example with a Target line
CueNotesOn GO
1  Walk-on music#timer/25:00 Close-Up Set
#timer/lap Opener
The clock starts, counting down from 25:00. Opener begins.
2  Cards#timer/lap Card FountainOpener ends, Card Fountain begins.
3  Mind reading#timer/lap MentalismCard Fountain ends, Mentalism begins.
4  Bow#timer/lap CloserMentalism ends, Closer begins.
5  Blackout#timer/end
#timer/log
The clock stops. The log is written into this cue.

After the run, Cue 5’s Notes read:

#timer/end
#timer/log
QLab Buddy Timer Log - Close-Up Set - 09/21/2026 8:04 PM
  Opener         00:03.40
  Card Fountain  00:06.05
  Mentalism      00:09.50
  Closer         00:06.12
Total            00:25.47
Target           00:25.00   over by 00:00.47

How the log is laid out

rounding, limits, the date
  • Times use the clock’s own HH:MM.SS, cut to whole seconds so the rows add up exactly to the Total.
  • Any figure can be pasted straight back into a #timer/ tag.
  • If a second or more ran before the first section, a before row says so.
  • The date and time come from the internet. Without it, the header leaves them out rather than guess.
  • Anything else you wrote in that cue stays. The log replaces itself on the next run.
  • A run holds 24 sections. Any more are added up on one +N more sections row.
  • If a run ends before the Buddy knows the log cue, the log waits and goes in as soon as the playhead stops on a tagged cue.
  • #timer/clear also takes the log back out of the #timer/log cue, on the Buddy that writes it, each time the playhead lands on the clear cue. Your own lines there stay.

Turn on writing

Nothing is written until you allow it, once per rig:

  1. On one Buddy: Settings → OSC Access → Timer Log → ON. Only one unit should write. A Buddy in VIEW mode can do it.
  2. In QLab: tick Edit on the Buddy’s passcode row. Workspace Settings → Network → OSC Access.

Either way, the log also prints to the debug console after every run. Filter on [lap].

On the screen

  • Stand the playhead on the #timer/log cue and the Buddy shows the log in place of the cue, live during a run.
  • The open section is yellow, and the bottom line reads So far. With a set time, the Target line shows how you stand.
  • Drag to scroll. The edge arrows are off on this screen, so a drag never moves the playhead.
  • On LIVE, under the cue name: NOW names the section running, and NEXT in yellow names the one this cue will start.
  • The Mini shows the log once it has been written into the cue.

When nothing gets written

what the caption is telling you

Look at the caption under Settings → OSC Access → Timer Log. It always says what happened.

The caption saysWhat happened
Writes into the #timer/log cueSwitch on, no run yet. Ready.
This unit does not write itSwitch off, no run yet.
log cue tagged - switch is offThis unit is not the writer. Normal on every Buddy but one.
waiting for the #timer/log cueThe log is held until the playhead rests on a tagged cue, usually on the next GO. The run ended before the playhead reached it, or the remembered cue lost its tag or did not answer.
no #timer/log cue this runNothing carried the tag, or a new run began first. The log is still on the debug console.
written to the #timer/log cueWritten and read back unchanged. Done.
write refused - check Edit accessQLab ignored the write. Almost always the missing Edit tick from step 2.
no room in the #timer/log cueThe log plus your own notes in that cue is over 1024 characters, more than the Buddy can read back to check. Shorten the notes or the section list. Two dozen sections fit, with room for a few lines of your own.
stood down - found a log not oursAnother log appeared in that cue during the run, so this unit left it alone. Usually a second Buddy with the switch on, or someone edited the log mid-run.
cleared the #timer/log cueA #timer/clear cue took the log out. Your own lines stayed.
nothing written - could not verifyThe read-back never came. The log may or may not have landed, so the Buddy does not claim it did.

The Buddy reads the cue before writing. Its own old log, or whatever was there before the run, is replaced as normal. Only something new that is not its own makes it stand down, so it never overwrites someone else’s only record of a show.

From Go Button: show timer

the show timer

Go Button has no cue notes, so no #timer/ tags. The Buddy mirrors Go Button’s own show clock. Set the duration in Go Button’s show settings; there is nothing to set on the Buddy.

  • No duration set: counts up from 00:00.00, in grey.
  • Duration set: counts down in green, yellow for the last five minutes, then red showing how far over.
  • Firing the first cue starts the clock. Resetting the show in Go Button resets it to 00:00.00.

For per-cue countdowns, pause and resume, use QLab tags.

On the RF Relay

on the relay screen
  • After 30 seconds idle, the RF Relay shows QLab’s timer on its own screen, so a relay offstage doubles as a second clock.
  • It shows a #timer/ tag’s clock, or QLab’s running-cue elapsed time.
  • It cannot see Go Button’s show clock. On a Go-Button-only rig, the screensaver stays idle.
  • Nothing to set up. See RF Relay.

Clock and Internet

A show never needs the internet. Cues, show detection, props and pairing all work on a WiFi with no internet, or on a bare USB-C cable.

What does use the internet

  • The clock in the status bar.
  • Firmware updates. See Firmware Updates.
  • Magic API feeds. Each row reads No Internet until it is back. See Magic API.
  • A Mac or phone on the show hotspot, which gets internet only while the Buddy has it.

The clock

With internet, the Buddy, the Mini and the RF Relay set their clocks and time zone by themselves.

No internet? The Buddy’s clock reads --:-- --. Tap it to set it by hand:

Set the clock by handOnly when there is no internet
BOOTRSTPWRmicroSDUSB-C
  1. 1No internet, so the clock reads --:-- --. Tap it
  2. 2Type the time as four digits
  3. 3Tap PM or AM, then OK. The clock runs from there
  1. Type the time. Four digits.
  2. Pick AM or PM. Then tap OK.
  • A hand-set time lasts until the Buddy restarts. The board has no battery to keep time.
  • Tap the clock to hide it, and again to bring the keypad back.
  • Once the Buddy has found your time zone online, tapping the clock does nothing.

How the time zone is found

lookup, fallback, section times
  • The Buddy works out your time zone from its internet address, gets the time from a time server, and checks the time zone again every hour.
  • The Mini and the RF Relay leave the clock blank until they know the time zone.
  • If the time-zone lookup is blocked but the time server answers, the clock falls back to US Central time.
  • The section times log is dated only when the clock came from the internet.

RF Band Meter

RF Relay only · firmware 0.13.0 and later. A relay still on 0.12.6 has no meter until it takes the update.

Four small segments at the bottom right of the RF Relay’s status bar. They show how busy the radio band is right now, so interference shows up before a cue misses, not after.

  • Think: a garage-door opener two doors down, a hotel’s door locks, a neighbouring show’s comms.
  • It only warns. It never blocks a cue. The relay fires the same way into a clear band or a jammed one.

Reading it

Count the lit segments. They all share one colour, so one glance gives one verdict.

Read the RF Band MeterBottom right of the relay’s status bar
nRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-CMETER, ENLARGED
  1. 1CLEAR: four dim segments. A quiet band, the normal state
  2. 2SAFE: one green. Something is there, well below trouble
  3. 3BUSY: two yellow. Real traffic; fires get through, expect the odd retry
  4. 4HOSTILE: three orange. Strong interference, and a cue can miss
  5. 5Four red: something is holding the band
  6. 6It only warns. Press to fire and the relay still sends

No segments at all means it is not measuring: no radio found, or the first seconds after boot.

What it is listening to

what it samples

The radio hears one frequency at a time, so the meter depends on which screen you are on.

ScreenWhat it measuresAnswers
Slot listEvery band the relay knows, one per second, showing the worst. Bands your cues use are checked twice as often.Is there trouble anywhere I can hear?
Inside a slotOnly that slot’s frequency, every two seconds.Will this cue get through?

Why it calibrates itself

why the floor moves
  • Levels are measured against the background noise in your room, not fixed numbers. Each segment is 10 dB above that floor.
  • The floor drops instantly to a quieter reading and creeps back up about 1 dB a minute, so a bad reading heals itself within minutes.
  • Power up inside interference and it reads level 4. The relay refuses to accept a jammed band as the new normal.
  • Switching a slot to another band starts a fresh measurement.

RF Info readout

the numeric readout

For the numbers, long-press into a slot’s Setup screen. The RF BAND panel on the right is live for that slot’s frequency.

RowReading
NOISEThe latest sample, in dBm.
MINThe lowest reading inside the latest sample.
FLOORThe background level the meter measures against.
PEAKThe loudest sample on this band.
LEVELThe meter’s 0–4 verdict and word, such as 2/4 BUSY.

A row reads -- until that band has been sampled. The readout pauses while a slot fires or learns, since the radio cannot listen and send at once.


Magic API

The Buddy’s API tab shows live readouts from up to six web services, such as the spectator’s latest drawing or search. No QLab and no cues needed: it is always on.

SectionYou typeIt shows
WIKITESTA full URLWhatever text the server returns.
BRIDGEA full URLA JSON value, as from a wkt.pw-style bridge.
ELIPSYour user code, then your access codeArtist, Song and Word from a lyric feed.
QPALYour QPAL IDThe spectator’s drawing and the text read from it.
GOOYour Goo IDThe latest search.
UNIFIYour Unifi user IDThe latest result, and which service it came from.

Setting a URL

  1. Double-tap a section’s header. On the API tab. The keyboard opens.
  2. Type the URL or ID. Then confirm.
Set a Magic API URLDouble-tap a section on the API tab
BOOTRSTPWRmicroSDUSB-C
  1. 1On the API tab, double-tap a section. A single tap does nothing
  2. 2The keyboard opens with the start of the address filled in. Type the rest
  3. 3SAVE. The Buddy checks at once and shows the value, with the time it last changed
  • http:// and https:// both work, up to 127 characters. Self-signed certificates are fine.
  • URLs are saved on the Buddy and survive restarts.
  • To clear one, double-tap the header and save it empty.
  • On the keyboard, SH shifts one letter. Double-tap it for CAPS, which stays on until you tap it again.

How often it checks

refresh timing
  • Every 3 seconds while the API tab is open, and every 10 seconds once you leave it.
  • It checks at once when you open the tab or save a URL.
  • A single tap on a card does nothing. It readies the double-tap to edit.
  • The full-screen Peek checks QPAL every second.

What each section reads

Every section makes a plain GET request. They differ in what you type and what they pull out of the reply. Two take a full URL. ELIPS takes a user code and an access code. Three take just an ID. The Buddy builds the rest of the URL.

Each feed in detail

field names and quirks

WIKITEST: plain text

  • Shows the raw reply as Value, word for word. No JSON parsing.
  • Good for any endpoint that returns one string, like a small show-state server or webhook.

BRIDGE: JSON value

  • For wkt.pw-style bridges and any JSON reply with a value or rawValue field. Shown as Value.
  • If both fields are there, value wins. Other keys are ignored.

ELIPS: artist, song, word

  • Reads artist and song into their own rows.
  • For Word, it uses the first of word, lyric, selected or title that the reply has.
  • Missing or empty fields stay blank.

QPAL: the peek

  • Type only your ID. The Buddy fills in the rest of the address.
  • Shows the spectator’s drawing and the text read from it.
  • Tap Peek Screen on the QPAL card. Tap the drawing for full screen, and tap again to leave it. The Peek Screen never times out.
  • The QLAB Buddy Mini shows the same peek.
  • If a drawing’s download drops part-way, it resumes where it stopped.

GOO: latest search

  • Type your Goo ID, or paste the site’s 11q.co short link. The Buddy swaps the link for the real feed.
  • Shows the latest search (JSON query) as Value.

UNIFI: latest event

  • Type only your Unifi user ID. One feed carries every Unifi service.
  • Shows the latest result, tagged with its service: Book Test, Second Sight, Calculator, MindScale, Unifi Intelligence, Web Messaging or ELIPS.
  • ELIPS here is the same output as the ELIPS section, reached through your Unifi ID instead of its own URL.

Status and errors

Each section has a stripe on its left that tells you if the feed is healthy.

  • Green: working.
  • Yellow: no good answer for 90 s.
  • Red: failing.
  • Grey: set, not checked yet. A dim cap means not set up.
  • A row keeps its last good value through an error, so you always see the last thing the feed said.
  • The time on the right of each card is when its value last changed. QPAL shows it on the Peek Screen. It turns yellow after 90 s with no answer, or when the Buddy is offline.

Error messages

what each one means
  • An error message, in red, shows only on a row that has never had a good value.
  • A timeout, server error or bad reply turns red on the fourth failure in a row; the first three keep the last good value. A 401, 403 or 404 turns red at once.
  • 0.13.2 No Internet appears only once the Buddy knows the internet is down, so a slow start no longer flashes it everywhere.
Message shownWhat it means
Set URL — double-tap headerNo URL set for this section yet.
Can't connectCould not reach the server (DNS failure or refused).
No responseConnected, but the reply timed out.
Wrong URL or code401 or 403. Check the URL or access token.
Link not found404. The path does not exist.
Server busy5xx. Try again, or check the service.
Check the linkThe JSON did not parse, or another status came back (a redirect, say). Check the endpoint returns valid JSON in the expected shape.
-0.13.2 Not checked yet, or the feed left that field empty.
No InternetWiFi is up, but the Buddy has confirmed there is no internet.

Multi-Buddy sync 0.13.2

Set your URLs once and share them. Tap Sync To Network on the API tab to offer them to every other Buddy on the same WiFi. Nothing changes on another Buddy until someone there accepts.

Take another Buddy’s URLsAccept Sync or Deny Sync
BOOTRSTPWRmicroSDUSB-C
  1. 1Another Buddy on the WiFi tapped Sync To Network. This one asks first, and says who from
  2. 2Accept Sync: the URLs arrive and the sections fill in. Deny Sync leaves this Buddy as it was
  • The button reads Sent in green for a moment.
  • The other Buddy shows API Sync From and the sender’s address, with green Accept Sync and red Deny Sync buttons.
  • Accept Sync takes the URLs. Deny Sync keeps its own and ignores that offer from then on.
  • This is not pairing. It has nothing to do with props.

Sync fine print

timeouts, late joiners, old betas
  • An unanswered offer goes away after 5 minutes. That is not a deny: tap Sync To Network again to re-offer.
  • One offer at a time. While one is on screen, offers from other Buddies are ignored.
  • A Buddy that joins later does not pick up the URLs by itself. Tap Sync To Network again.
  • Buddies on Beta 21 or older cannot sync with newer ones, either way. Update both.

OSC Command Chart

Every OSC command in the system, on one page. Type what you want in plain words, or paste a command to check it.

  • The first tables are commands you send from a cue.
  • The last ones are traffic the Buddy and props send on their own. They are here so you can name a packet in a log.
0.12.x any firmware 0.13.0 needs 0.13.0 or later

Ports

Aim a cue at a prop on port 8000. Ports 53000 and 53001 are the Buddy talking to QLab or Go Button.

8000
Device OSC in
Every prop, the Universal Controller and the RF Relay listen here. UDP and TCP both work.
53000
QLab in
QLab’s own listen port. The Buddy sends its queries here.
53001
Reply / monitor
Where QLab and Go Button send replies, and where props answer /ping.

Universal Controller — motors

  • Channels: m1–m4 on the NULLLAB board, m1–m2 on the Romeo Mini.
  • Speed is 0–100 %. Duration is 50 ms–60 s.
  • Leave both out and it runs at 75 % for 5 s.
AddressWhat it doesVer
/mN/startRun motor N forward at the defaults0.12.x
/mN/start/VELForward at VEL % for the default 5 s0.12.x
/mN/start/VEL/DURForward at VEL % for DUR0.12.x
/mN/reverseSame three forms, running backwards0.12.x
/mN/stopHalt motor N. Never passcode-gated0.12.x
/mN/testFire at the built-in 75 % / 5 s test values, ignoring any arguments0.12.x
/stopEmergency stop — halts every motor and, from 0.13.0, parks every servo too. Never passcode-gated0.12.x
/start · /reverse · /testAliases targeting M1, so an older patch keeps working. /start and /reverse accept the same /VEL/DUR tail0.12.x
/stop stops the whole board. Every motor halts and every servo parks where it is, so one cue can be your panic button. /m*/stop or /s*/stop stops just one kind.

Values as OSC arguments

instead of in the address

/m1/start with a speed and a duration argument does the same as /m1/start/50/3s. The address form is easier to read in a cue list, so this chart uses it.

Universal Controller — servos

  • Channels: s1–s4 on both boards. Angles are 0–180°; durations go up to 60 s.
  • No duration: the servo snaps there. With a duration: it travels at a steady speed and arrives on time.
  • A word it doesn’t know does nothing, on purpose.
AddressWhat it doesVer
/sN/ANGLEGo to ANGLE immediately0.12.x
/sN/ANGLE/DURTravel to ANGLE over DUR0.12.x
/sN/angle/ANGLE/DURThe same move, spelled out0.12.x
/sNAngle taken from the first numeric argument; 90° if there is none0.12.x
/sN/centerGo to 90°0.12.x
/sN/velocity/DPSSweep at DPS degrees per second until the servo reaches its travel limit. Negative reverses0.12.x
/sN/pulse/USDrive the raw pulse width in microseconds, bypassing the angle model. Defaults to 15000.12.x
/sN/bounce/DPSSweep back and forth across the permitted travel at DPS. Defaults to 300.12.x
/sN/stopStop where it stands, clearing velocity and bounce. Never passcode-gated0.12.x
/sN/sweep/A/B/DPSSweep between A and B at DPS, instead of across the whole range0.13.0
/sN/limits/A/BConstrain this servo to A–B so a linkage cannot be driven into its stop. Bare form resets to 0–1800.13.0
/sN/toggle/A/B/DURAlternate between two positions on each call — one cue, fired repeatedly0.13.0
/sN/nudge/±DEG/DURMove relative to where it is now0.13.0
/sN/homeReturn to this servo’s home position0.13.0
/sN/home/ANGLESet the home position to ANGLE instead of going there0.13.0

Addressing several channels at once 0.13.0

Move several servos or motors with one message, so they all move or none do. It uses OSC’s own { } and *.

Move several servos at onceOne message, every servo it names
QLab Network cue/s*/0S10°S20°S30°S40°
  1. 1/s*/0 put every servo at 0°
  2. 2/s{1,2}/90: S1 and S2 snap to 90° together, in one message
  3. 3/s*/45/2s: every servo heads for 45°, and they all arrive together at 2 s
AddressWhat it doesVer
/s{1,2}/0S1 and S2 both to 0°, in one message0.13.0
/s*/90Every servo the board has, to 90°0.13.0
/s{1,2,3,4}/45/2sFour servos to 45° over 2 s0.13.0
/s{1,2}/{0,180}Mirrored — S1 to 0° while S2 goes to 180°0.13.0
/m{1,2}/start/{50,80}M1 at 50 %, M2 at 80 %, one message0.13.0
/m*/stopHalt every motor0.13.0
/s*/stopPark every servo, leave the motors running0.13.0

Servo settings reset on every reboot. Limits, sweep range, home and toggle points go back to 0–180 and home 90°. If a show needs them, set them in a pre-show cue.

How values pair with channels

and why two messages can go wrong
  • Values pair with channels in order: first value to first channel.
  • One value goes to every named channel.
  • Any other mismatch, such as three channels and two angles, is refused whole, never half-done.
  • Channels must exist on the board and can’t repeat.
  • Why one message: two messages are two UDP packets, and either can be lost. Then one servo moves and the other doesn’t.
A bare comma is not valid OSC. /s1/0,/s2/0 is refused on purpose. It would break against every other OSC tool.

RF Relay

  • Slots are 1–50 (1–25 before 0.13.2 Beta 22).
  • A fire with no duration holds for 3 s (1 s on 0.12.x).
  • One slot fires at a time. There is one radio, so a new fire takes over at once. Keep the first hold short enough to finish before the next cue.
AddressWhat it doesVer
/rf/NFire slot N for the default hold0.12.x
/rf/N <time>Same, with the hold as an argument — a number is seconds (/rf/1 0.5), a string is written like the path (/rf/1 "400ms"). See how a duration is written0.12.x
/rf/N/TIMEHold encoded in the path instead — /rf/1/3, /rf/1/400ms, /rf/1/00:01.30. See how a duration is written0.12.x
/rf/N/startSame as /rf/N, named so a latching cue list reads as a start/stop pair. on works too0.13.0
/rf/N/stopFire slot N’s OFF code — latching hardware with separate on and off codes only. Does nothing if no OFF code is learned. off works too0.13.0
/rf/learn/NArm capture on slot N for 15 s, scanning all bands like LEARN on the relay’s screen (which listens for 30 s)0.12.x
/rf/learn/N/MHZArm capture at an explicit frequency; 0 scans all bands0.12.x
/rf/learnoff/NArm capture of slot N’s OFF code, all bands, 15 s. The ON code is kept0.13.0
/rf/learnoff/N/MHZThe same at an explicit frequency0.13.0
/rf/freq/MHZSet the active band and frequency0.12.x
/rf/stopCancel an armed learn and abort a fire already in flight0.12.x
The relay is deaf while learning. For the whole 15 s it drops off WiFi, so any cue sent then is lost, /rf/stop included. Cancel a learn with a short press on the relay.

0.13.2 RF Springboard addresses, for reading a log. The Buddy’s RF Springboard uses these. Don’t send them from QLab: a stray lock can stop QLab firing the relay for up to two minutes.

AddressWhat it doesVer
/rf/slotsAsk which slots hold a code. The relay answers /rf/slotlist: each slot’s number, name and whether it has an OFF code. Asked every 10 s while the Springboard is set up0.13.2
/springboard/lock/SECSLock the relay to this Buddy for up to 120 s; 0 releases it. With QLab Detection off, only the holder can fire; with it on, the lock refuses nothing. Renewed every 10 s while the grid is up0.13.2
/springboard/only/0|1QLab Detection off (1) or on (0). Only the lock holder can send it, and only while the lock is held0.13.2
/springboard/stateThe relay’s reply to a release over TCP: 0 unlocked, 1 still locked0.13.2

How a duration is written

One rule on the RF Relay, the Universal Controller and the Flipper Zero app, in the address or as a text argument:

  • A unit always wins: 400ms, 3s, 20min, 1h.
  • A colon, or two dots, means a clock: 1:30 and 00:01.30 are both 90 seconds.
  • Anything else is seconds: 3 is 3 seconds. A number sent as an OSC argument is always seconds.
You writeYou get 
400ms · 0.4s400 millisecondsthe same duration, two ways
0.4 0.13.1400 millisecondsbare decimal, one separator — on the shipping 0.13.0 relay this is still read as clock form and means 4 seconds instead
1500ms · 1.5s1.5 seconds 
3 · 3s · 3sec · 3secs3 secondsa bare number is seconds
90 · 90s · 1:30 · 1.5min90 seconds 
00:00.055 secondsHH:MM.SS
00:01.3090 secondsHH:MM.SS
00:20.00 · 20:00 · 20min20 minutes 
01:00:00 · 1h1 hour 
00:00:12:512.5 secondsa fourth field is a fraction of a second
1.30.00 · 1:30:0090 minutesdots and colons are the same separator in here
0 · 0ms · anything unreadablethe RF Relay’s or Flipper app’s default holdthe cue still fires. On a Universal Controller a motor runs for its 50 ms minimum; a servo snaps on 0 and takes half a second on anything unreadable
/rf/1/foo · /rf/1/stponothing firesRF Relay and Flipper app: a word that is not a verb and has no digit is refused, so a typo’d stop never starts anything
m alone is not minutes. It is one letter from ms, so 3m is unreadable. A relay falls back to its default hold, and a motor only twitches for 50 ms. Write 3min.

Units, limits and the clock rule

caps, refused values, 0.13.0 relays
  • Units: ms, s/sec/secs, min/mins, h/hr/hrs. Any case, space before them or not.
  • The RF Relay, Universal Controller and Flipper app cap a hold at 60 s. A longer hold is cut to 60 s; the cue still fires.
  • 0.13.2 On the RF Relay, a plain whole number over 60 sent as the argument (/rf/1 90) is refused and logged. It is almost always a passcode that lost its quotes. The address form, decimals, units and clocks are still capped.
  • Inside a clock, a dot is the same as a colon. So 00:20.00 is twenty minutes, the same as #timer/00:20.00 in a cue note, and 1.30.00 is ninety minutes.
  • One separator is the only unclear case. A plain number wins it, so 0.4 is 0.4 seconds. That arrives in 0.13.1, still in beta. On a 0.13.0 relay, 0.4 still means 4 seconds. Write 400ms or 0.4s to get the same on both.

Every prop answers these

The Universal Controller and the RF Relay both.

AddressWhat it doesVer
/pingLearns the sender’s address, replies /pong to port 53001 and announces itself with /hello. Never moves the prop0.12.x
/identifyFlashes the status LED so you can tell which box on the truss this is. The Romeo Mini has no LED, so it does nothing there.0.12.x
/qlab/connectedBuddy broadcast: QLab is up. Props use it to skip their own detection0.12.x
/qlab/disconnectedBuddy broadcast: QLab has gone away0.12.x

OSC passcode

  • Set it once on the Buddy. Every paired prop gets it in the background.
  • It travels as the first text argument. In a QLab Network cue, put it in quotes: "1234".
  • A message with no passcode is accepted. Only a wrong one is refused.
  • The Flipper app is different: set its passcode on its own Connection pane. Once set, a message without it is refused.
Stops always work, passcode or not. /stop, /mN/stop and /sN/stop skip the check, so a typo never stops you halting a prop. Anything that starts motion is checked.

Writing a duration

See How a duration is written. On a 0.13.0 relay, write 400ms or 0.4s, not 0.4.

How exact a short cue is

for RF cues under a second

An RF fire sends the slot’s code over and over for the whole hold. The receiver stays on while codes keep arriving.

  • It stops on a whole code. One code takes about 35–55 ms. From 0.13.1 it stops on whichever side of your time is nearer, so a 400 ms cue lands within about 20 ms.
  • The shortest fire is about 150 ms. Every fire sends at least three codes, so a 50 ms and a 135 ms cue are the same on air. 250 ms and up behave as written.
  • Your receiver adds a tail. Most stay on another 100–300 ms after the last code. It is the same every time for one receiver, so time it once. If a quick cue runs long, this is usually why.

What the Buddy sends to QLab and Go Button

You don’t send these. The Buddy does, to keep its screen live. The Buddy never sees GO: it watches the playhead. That is why a timer arms on standby and starts when the playhead leaves the cue.

AddressTargetWhat it is for
/workspacesQLabDiscover open workspaces
/workspace/<id>/connectQLabOpen a session, passing the workspace passcode
/alwaysReplyQLabSet to 1 so QLab answers every query, cue properties included
/workspace/<id>/cueList/playbackPositionIdQLabWhich cue the playhead is on — the heart of the whole display
/workspace/<id>/runningOrPausedCuesQLabWhat is actually running; the GO detector for device tags
/workspace/<id>/cue_id/<id>/valuesForKeysQLabName, number, notes and type in one round trip
/workspace/<id>/cueList/updatesQLabSubscribe to change pushes instead of polling everything
/playheadIDQLabUnscoped playhead query, used by the RF Relay and the Mini
/cue/playhead/number · /displayName · /notesQLabUnscoped cue-property forms, for a default workspace
/go · /panicQLabSent only from the BOOT button on the 3.5″ Buddy: tap for GO, hold 5 s for PANIC
/showsGo ButtonList the shows on the device
/show/<id>/<verb>Go ButtonGo Button’s equivalent of a workspace-scoped address
/thumpGo ButtonLiveness probe; the reply says whether a file is actually open
/udpReplyPort · /udpKeepAliveGo ButtonPoint replies at 53001 and hold the session open
/timer/elapsed · /timer/durationGo ButtonReplies the Buddy reads to drive its countdown

How answers come back

/reply/ and /update/

QLab answers on /reply/ plus the address asked about, with a JSON body. Ask /workspace/<id>/playheadID and the answer comes on /reply/workspace/<id>/playheadID. Once subscribed, QLab 5 also pushes changes on /update/…, so the Buddy doesn’t have to poll everything.

Internal fleet traffic

For reading a packet capture only. Don’t send these by hand: they are not supported and change between betas.

AddressDirectionCarries
/helloProp → BuddyIdentity, firmware version and capabilities on join
/pongProp → BuddyLiveness answer to /ping
/firedProp → BuddyConfirms which verb ran, with the speed and duration used
/buddy/configBuddy → BuddyOld API URL sync, up to Beta 21. A newer Buddy ignores it.
/buddy/device—Accepted and dropped. Multi-buddy device sync was removed; each Buddy keeps its own list, so a peer’s gossip is deliberately ignored
/mini/cue · /mini/tick · /mini/connBuddy → MiniLive cue, timer tick and connection state
/mini/devs · /mini/ws · /mini/cfgBuddy → MiniDevice list, workspace name and configuration
/mini/api · /mini/peek · /mini/firedBuddy → MiniAPI values, QPAL peek payload and fire confirmations
/qlab/atBuddy → Props, MiniWhere QLab is and which workspace is open
/rf/slotlistRelay → BuddyThe learned slots, in answer to /rf/slots, for RF Springboard
/goodbye · /goodbye/ackProp ↔ BuddyA prop leaving its Buddy after an unpair, and the Buddy’s answer
/buddy/cfgofferBuddy → BuddyMagic API URLs offered by Sync To Network; the other Buddy asks Accept Sync / Deny Sync
/mini/sb · /mini/sbb · /mini/sb/pinBuddy → MiniRF Springboard on the Mini: the grid, its buttons in pages of 12, and PIN answers
/sb/tap · /sb/pinMini → BuddyA button tapped on the Mini’s springboard, and a Guest PIN to check

The QLAB Buddy Mini has no OSC commands of its own. It gets everything on the /mini/… addresses above, or from its own QLab or Go Button session when running alone.

Looks like OSC, is not

These are web (HTTP POST) addresses the Buddy uses for setup. An OSC cue sent to one does nothing.

PathMethodWhat it is for
/wifiHTTP POSTPush network credentials to a prop
/passcodeHTTP POSTSync the OSC passcode
/nameHTTP POSTRename the device
/resyncHTTP POSTWipe the prop’s network and pairing when you delete it on the Buddy
/otaHTTP POSTStart a firmware update

Read from firmware source and checked against the 0.13.0 release. Commands found only in old backup sketches are left out: no shipping firmware answers them.


Debug Console

See a Buddy’s or prop’s live log in your browser, with no drivers or terminal. Plug in several at once and they share one timeline, each with its own colour tag. Pop out into its own window ↗

Live Log

Not connected.

  • Add Device once per board. Capture starts at once; there is nothing to set up.
  • Mark (or M) drops a numbered line the instant you do something, so you can read every device against that moment.
  • Known problems show as issue chips above the log. prev / next (or [ ]) walk them in order.
  • Open .log, or drop a file on the console, replays a saved log. Works in any browser.
  • Copy report puts a bug report on your clipboard. Nothing is sent anywhere. A log can hold your WiFi name, so read it first.

Using it

Open it when something is wrong and the screen doesn’t say why: a prop that reboots, an RF cue that doesn’t fire, a pairing that never finishes.

  • Browser: desktop Chrome, Edge or Opera. Firefox, Safari, iPhone and iPad can’t open a USB port. Open .log works everywhere.
  • Cable: a USB-C data cable. A charge-only cable never shows the board in the picker.
  • Free port: only one program can hold the port. Quit the Arduino Serial Monitor, screen, PlatformIO or any terminal first. The Flash Firmware installer is the exception: the console steps aside for it.

Connecting a device

Add Device, and how it knows which board it is
  1. Plug the board in.
  2. Click Add Device and pick the board in the browser’s list.
  3. Click Connect. Capture starts at once.
  • Every board looks the same in the list. The Buddy, Mini and RF Relay use the same chip. The console tags each one Device 1, Device 2 until it prints a line only one firmware prints, then renames the tag and notes it in the log.
  • The device dropdown is a fallback for a board that hasn’t identified itself yet. You rarely need it.
  • On a Mac, skip “Bluetooth-Incoming-Port”. It opens but shows nothing. Close it with the ✕ on its chip and add the right one.
  • To watch two boards, click Add Device again. Both feed the same log.

Reading the log

timestamps, tags, repeats, the console’s own notes
+01:23.456  [RF Relay]  [WiFi] drop detected
  • Timestamp: time since the first device connected. Every device uses the same clock, so their lines line up.
  • Coloured tag: which device printed the line.
  • The rest is the firmware’s own output, untouched.
  • Repeats fold into one line with a ×N count, so one useful line isn’t buried under fifty copies.
  • Tinted lines match a known problem: red error, amber warning, blue note.
  • ‹Angle-bracket› lines are the console’s own notes: a device identified, disconnected, back, rebooted, or a stalled USB link.
  • DEVICE REBOOTED is the one to look for after a crash. The lines just under it hold the reset reason and, on the RF Relay and Mini, the crash trail.

Detected issues

the chips above the log
  • Each line is checked against about 80 patterns from the firmware itself: crashes, reset reasons, WiFi drops, a failed update and more. Each device gets its own set once identified.
  • A match adds a chip to Detected issues, worst first, with a count. Hover for a plain-English meaning. Click to jump to the latest line.
  • prev / next (or [ ]) step through every flagged line in time order: the first thing that went wrong, then the next. Only lines the filter shows are visited.
  • Chips are a head start, not a diagnosis. The log is the evidence.

The buttons

every control, one line each
ControlWhat it does
Add DeviceOpens the port picker. The only click you need; the rest is automatic.
Open .logReplays a saved log, from Download .txt or any serial capture, with the same chips and filters. Dropping a file works too. Any browser.
Pause / ResumeStops the scroll. Lines that arrive while paused are not kept. Adding a device by hand resumes.
Mark or MDrops a numbered ——— MARK N ——— line. Press it the instant you hit GO, press a remote or pull a cable. The key works once something is connected and you aren’t typing.
ClearEmpties the log and the issues. Devices stay connected.
CopyCopies the whole log.
Download .txtSaves the log, named after its devices and the time, e.g. RF_Relay+QLAB_Buddy_2026-09-21T02-00-00-000Z.log.txt.
Copy reportCopies a bug report. See Sending a bug report.
Auto-connect known devicesReopens every board you have allowed before, now and whenever one is plugged in. Off on every page load, on purpose: a grabbed port is what makes the installer hang.
Filter boxShows only lines containing what you type. / jumps there, Esc clears it. Marks always stay visible.
All / Flagged / Errors / Warnings / NotesShow one kind of line. Flagged is every match plus the console’s warnings. Works with the filter. Click the lit pill to go back to All.
Line counterLines shown out of lines captured, so an empty filtered log is never a mystery.
prev / next or [ ]Step through flagged lines. See Detected issues.
Device chipsOne per device, with its state. ↻N counts boots: ↻3 on a board you plugged in once is a crash loop. Click to mute (capture continues). ✕ closes it until you Add Device again.

It keeps the last 4,000 lines, even after you unplug. Reloading the page clears them.

When a device disconnects

auto-reconnect, and crash or expected?

A board vanishing from USB usually means it crashed and rebooted. The console reopens it by itself for about fifteen seconds, because the crash reason prints in the first moments of the next boot.

Disconnect right after…Means
“forcing USB re-enumerate”The firmware reset its USB link to clear a jammed cabled QLab connection. The chip did not reboot.
PairingRebooting to join the new WiFi. Expected.
An unpair or forgetRebooting to look for the pairing network. Expected.
Anything elseTreated as a crash until the boot lines say otherwise.
  • reconnect failed on a chip means click Add Device.
  • Cabled QLab link stalled: the Buddy, Mini and RF Relay print packet counters while OSC runs over USB. If they freeze for two heartbeats while “busy” climbs, a red note says OSC over USB is dead until it recovers or you replug. Another note says when it moves again.
  • Flashing from this page: the console lets go of every port and says so. Click Add Device when the install ends. It never auto-opens a port during an install.

What it speeds up

reboots, two devices, connections, pairing, bug reports
  • Why did it reboot? Connect it and leave it. After a reboot, don’t touch anything. Under DEVICE REBOOTED you’ll find the reset reason ([boot] reset reason, reset_reason= or [boot] reset=) and, on the RF Relay and Mini, a CRASH TRAIL line. A “POWERON with RTC RETAINED” chip means a power dip: usually the supply or cable, not firmware.
  • What did two devices do? Add both. Press M as you hit GO or press the remote, then read both after the MARK. Same clock, so “the Relay fired 40 ms after the Buddy saw GO” is a straight read. Mute a chip to see one.
  • A connection that “looks fine”: filter for wifi or qlab. These all print a specific line, and a chip usually names it first: a Buddy ignoring QLab because its host lock points at another IP, a Mini waiting on a workspace that isn’t open, a wrong OSC passcode on a controller, an RF Relay on a cable that never got an address.
  • Watching a pairing: connect the prop before you pair. You’ll see it take the WiFi, an expected reboot, then it joining. On the Buddy, [PAIR-OK] or [PAIR-FAIL] gives the result; a failure dumps the network state.
  • Sending a bug report: click Copy report and paste it into an email. It holds the device names, firmware version, reset reasons, up to ten issues and the end of the log. Add what you were doing. Read it first: it can hold your WiFi name. For a long log, attach Download .txt too.
  • A log someone sent you: Open .log. It looks just as it did on their screen. Use Flagged and ] to walk what went wrong. A pasted Serial Monitor log works too, without timestamps.

Quick reference

symptom to where to look
SymptomWhere to look
Device went blank or restartedDEVICE REBOOTED and the red chips after it
Fired on one device, not the otherPress M at the moment, compare both after the mark
Connected, nothing in the logStatus line. Is it a USB device? Another program on the port? A data cable?
A wall of the same lineRepeats fold to ×N; use the filter box
“Web Serial isn’t available”Use desktop Chrome, Edge or Opera
Installer stuck on Preparing installationClose this console, or let it stand down, then retry
Someone sent you a .log.txtOpen .log, then Flagged and ]
Device keeps restarting↻N on its chip, then [ back to the first red line after each DEVICE REBOOTED

Beta Firmware TESTING

Test builds that are not released yet. New firmware lands here first, gets checked on real hardware, then ships. This list empties itself once a release replaces it.

Installing 0.13.2? Update the Buddy and its props together. RF Springboard, props following a WiFi change and keeping two rigs apart all need both ends on 0.13.2.

Test firmware: not for show nights. Flash it only if you are testing. To go back, use the regular Install button in the device’s own section. It always carries the released version.

Loading…

Testing a branch in the simulator

The simulator runs the released firmware, Mini included. A branch under review gets its own simulator, built from its own code, and it appears here when staged. The 0.13.2 beta has one, with RF Springboard, the show hotspot and the new look.

New panels in testing

The Buddy firmware now also runs on a 4.3″ and a 7″ screen, in beta with 0.13.2. Both have run on real hardware and share the fleet’s version number. (The QLAB Buddy Mini went through here too. It shipped in 0.13.0 and now installs from the Flash Firmware table.)

 3.5″ (released)4.3″ and 7″ (beta)
Resolution480 × 320800 × 480. Lists show more rows; RF Springboard fits 16 buttons, not 9. The 4.3″ draws a step larger so text reads at the 3.5″’s size.
GO / PANIC buttonBOOTNone: that pin drives the display. GO and PANIC come from QLab, Go Button or a remote. Holding a screen edge still steps cues. See GO and PANIC.
Leaving RF SpringboardHold BOOT or the Status DotHold the Status Dot only
Brightness / screen offYesNo. The backlight is always on.
Rotate 180°YesYes, from the Settings header
UpdatesAny channelBETA channel only. On Production, Software says there is no build yet.

There is no simulator for the larger sizes, so every screen shown on this page is the 3.5″.

Each build fits one board only. Don’t flash one onto another:
  • QLAB Buddy: the 3.5″ board, the only size with a release.
  • QLAB Buddy 4.3 and QLAB Buddy 7: the larger boards, beta only.
  • QLAB Buddy Mini: the 1.8″ AMOLED satellite screen. A different device, not a Buddy size.
4.3″
Waveshare ESP32-S3-Touch-LCD-4.3B 4.3″ diagonal · 800 × 480 IPS · capacitive touch (GT911, 5-point) · RGB parallel panel · ESP32-S3 · 16 MB flash + 8 MB PSRAM · USB-C
Amazon →  ·  Waveshare →  ·  Schematics & vendor code →
7″
Waveshare ESP32-S3-Touch-LCD-7C 7″ diagonal · 800 × 480 · capacitive touch (GT911, 5-point) · RGB parallel panel · ESP32-S3 · USB-C
Only the 7C: the plain 7″ and the 7B are wired differently, and this build does not drive them.
Waveshare →  ·  Vendor code →

Troubleshooting

Find your symptom. Each fix links to the full explanation.

Flashing fails

You seeDo this
“Browser not supported”Use desktop Chrome, Edge or Opera. Firefox and Safari can’t flash.
The port isn’t listedTry another cable: many USB-C cables are charge-only. Quit anything holding the port: Arduino IDE, screen, the Debug Console. On a Mac, ls /dev/cu.usbmodem* shows whether the computer sees the board at all.
Stuck on “Preparing installation”Something else has the port, or the board isn’t in boot mode. Close the Debug Console and any Serial Monitor or terminal, then retry. The log in the page corner names the step it stopped on.
Fails partway, or the board reboot-loopsPut it back in boot mode and retry. Each board has its own way in; the RF Relay’s is not a BOOT button.
Flashed, but the screen stays blankPower-cycle it. A fresh Buddy boots to LIVE and waits for WiFi. Tap the cog, then WiFi.

QLab won’t connect

The Status Dot shows how far it got. A bar that never turns blue means no show was found.

  • Put the Buddy and the Mac on the same network, or cable them over USB-C.
  • In QLab, turn on Network OSC input on port 53000: Workspace Settings → Network → OSC Controls. See Using with QLab 5.
  • Mac on a different part of the network, or WiFi that keeps devices apart? Type the Mac’s address: Workspace picker → Enter IP Manually.
  • QLab 4? The bar can turn blue but the stage view stays blank: QLab 4 can’t push updates. QLab 5 is a free upgrade at qlab.app and opens .qlab4 files via File → Import.

Connected, but GO and PANIC do nothing

  1. Check the Buddy first. Settings → OSC Access on VIEW turns off every control on purpose. Tap CTRL. See OSC Access.
  2. Then QLab. Workspace Settings → Network → OSC Access, on the No Passcode row tick Control. If the workspace has a passcode, enter the same one on the Buddy.

Go Button show doesn’t appear

  • Set UDP Reply Port to 53001 in Go Button’s Settings → Connections. This is by far the most common miss: Go Button answers on the wrong port and the Buddy hears nothing. It also fixes a show timer stuck at 00:00.00.
  • Both on the same WiFi. The Buddy only finds shows on its own network.
  • A show must be loaded and running in Go Button.
  • Go Button passcode set? Enter the same code on the Buddy, or Go Button silently ignores it. See OSC Access.
  • Settings → Workspace on the Buddy shows what it can find.

A prop doesn’t appear in Devices

  • Tap + on DEVICES. A prop that isn’t paired keeps looking for the pairing hotspot and joins when it sees it. If it doesn’t show up, power-cycle it. See Pairing Devices with the Buddy.
  • WAIT ended without DONE? Move the prop closer and power-cycle it again. A failed pair flashes the reason on the SYNC button for 3 s, such as JOIN when the prop never reached your WiFi. See the SYNC failure table.
  • Paired, but on another network? Tap + and wait about a minute; the Buddy brings it over. See Changing WiFi.
  • Props paired to another Buddy are hidden, so other rigs never clutter your list. To take one over, unpair it at the prop.

A prop won’t fire from a cue

Start with PING on the prop’s row in Devices. If the dot turns green and the prop flashes, the prop and pairing are fine. The problem is in the cue.

Is it the prop or the cue?PING from DEVICES
BOOTRSTPWRmicroSDUSB-C
QLAB Buddy
nRF242.4 GHzSUB-GHZCC1101WIFI2.4 GHzUSERRSTPWRUSB-C
RF Relay
  1. 1A prop won’t fire from a cue? Open DEVICES on the Buddy. A green edge on its row means the prop is answering
  2. 2Tap PING. The relay flashes its ring white three times: the prop and its pairing are fine, so look at the cue
  • From QLab: the Network Patch must be the prop’s IP on port 8000, over TCP (UDP works, but see why TCP). Send /ping first to prove you reach it. See Firing a prop from a cue.
  • From Go Button: is the tagged cue the last cue? The most common cause by far. A short tagged cue fires when the playhead moves on, and the last cue has nowhere to go. See Don’t tag the last cue.
  • The tag needs the prop’s IP, not its name: #192.168.86.62/80%/3s. The IP is under the prop’s name in Devices. It stays put on one WiFi network, but changes when you move the Buddy to another, so update tags at a new venue. Syntax: Tag syntax.
  • The Buddy must be on and connected to the show: it relays Go Button to the prop. USB power is enough; no computer needed.
  • It isn’t the prop’s passcode. The Buddy keeps every paired prop’s passcode in sync, even props that were off. See Passcode auto-sync to props.

Still stuck? Plug the device into the Debug Console, make the problem happen, and send Copy report with what you were doing.


Release History

Each device’s section opens with what is new in its current version. Older highlights are below.

Highlights from earlier versions
  • RF Springboard, show hotspot and props that follow the WiFi (0.13.2, beta) — see RF Springboard, Show Hotspot, Changing WiFi, Two Buddies, One Venue and Mini REMOTE.
  • Touch and reliability (0.9.7–0.9.9) — Touches no longer get missed, and the gaps between the tabs are gone. Props learn the instant a QLab show opens or closes. A Universal Controller’s TEST button flashes its light instead of running the motor. A venue with no internet no longer makes the screen stutter.
  • Go Button can fire props (0.9.5) — Put a prop’s address in a Go Button cue name and the Buddy fires it when that cue is passed. The Go Button passcode reaches every paired prop by itself. Props no longer fire when you just open a show, and paired props survive a Buddy restart.
  • OSC Access page (0.9.3) — QLab and Go Button passcodes are typed on the Buddy. The workspace picker stays open, keeps a locked show at the top, and has Enter IP Manually.
  • VIEW and CTRL (0.9.2) — Choose whether the Buddy only watches or can also control. Adds the Go Button show timer and cue arrows.
  • Go Button connection fixes (0.9.1) — iPhones and iPads can join the Buddy’s hotspot. The status bar no longer flickers when Go Button closes a show.
  • Screen fixes (0.8.33) — Address-range arrows work, and the update dot shows grey, green or red.
  • Address ranges and status (0.8.32) — Pick one of four address ranges so two rigs never clash. WiFi joins as soon as you save it.
  • Steadier device list (0.8.29–0.8.31) — Props appear faster and stop flickering between online and offline.
  • Prop commands (0.8.28) — Props answer /start, /reverse, /stop and /test, and a re-paired prop keeps its address.
  • Power banks (0.8.24) — No phantom taps when the Buddy runs from a battery pack.
  • QLab host lock (0.8.22) — Once the Buddy finds your QLab, it stays with it through WiFi blips and file changes.
  • Wireless updates — Every update is checked before it installs, and a bad one rolls itself back.
What’s next
  • Pair several props at once, in one SYNC.
  • Colour themes for the Buddy’s screen.

Already done in 0.13.2: two rigs in one venue stay apart (Two Buddies, One Venue), each Buddy has its own show hotspot, and a prop checks its address is free before using it.

Known limitations
  • One prop pairs at a time. A second SYNC is refused until the first prop has moved to your WiFi, up to a minute. The hotspot itself holds up to 10 devices.
  • A Buddy on USB only can’t reach props on WiFi. Give it your WiFi as well.
  • A prop’s address can be taken. Rarely, a laptop or phone already has it. From 0.13.2 the prop notices and borrows an address from your router for that boot. To avoid it, stop your router handing out .50 to .209.
  • Two Buddies in one room: pair on one at a time, because both pairing hotspots are called “QLAB Buddy”. Everything else stays apart once paired. See Two Buddies, One Venue. Both need 0.13.2.
  • Go Button: don’t tag the last cue. A short cue only fires when the playhead moves on. See Firing a prop from a Go Button cue.
  • Some networks get in the way: WiFi that keeps devices from seeing each other, sign-in pages, 5 GHz-only WiFi and some mesh systems. A portable router avoids all of them. A freshly paired prop the Buddy can’t hear goes back to the pairing hotspot after 2 minutes.

Community Mods

Optional extras other builders have made: cases, mounts, brackets. None are needed; they just make the hardware easier to live with on a gig.

QLAB Buddy: case + battery

A community case that holds the board and a battery, so the Buddy runs without a cable. Fits the 3.5″ Buddy only, not the 4.3″ or 7″.
  • About an hour to print, five minutes to put together.
  • Print body-usb.3mf, not the magnetic model.
  • You need four M2×8 countersunk screws.
  • Battery: a 1200 mAh 3.7 V LiPo with a 1.25 mm PicoBlade plug. It runs a few hours. Check the plug: many packs ship with a bigger one that won’t fit.
  • The optional MagSafe magnet doesn’t charge anything. It just lets the Buddy sit on a MagSafe stand.
Case model on MakerWorld →

RF Relay: laptop mount

Clips the relay to the back of a laptop lid, so it travels with the Mac instead of sitting loose on the table. Designed by Tim Hill, who kindly let us share it. Thank you, Tim!
  • You also need a small set of magnets. These work.
Download the STL ↓