QLAB Buddy
A screen that follows your show, and props that fire on cue.
Works with QLab 5 or Go Button. The Buddy is the hub: it shows the current cue and a timer, and every prop pairs to it and fires from your cues.
- The Buddy The hub. Everything else connects to it.
- The Buddy Mini A second screen that reads QLab directly, so it keeps its cue if the Buddy goes away.
- The RF Relay Fires props that have their own wireless remote.
- The Universal Controller Runs motors and servos on cue.
Load the software onto a board from this page, or try it in your browser first.
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.
How to set it up
- Hold the board’s BOOT button while you plug it into your computer, then let go.
- Click Install in Flash Firmware, in Chrome or Edge.
- On the board, tap the cog (top right), then WiFi, then +. Type your network name and password.
- Open your show. The Buddy finds it within a few seconds.
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.
| Device | Where to buy the board |
|---|---|
| QLAB Buddy | Waveshare · Amazon US · UK · EU · Canada |
| RF Relay | LilyGo · Amazon |
| Universal Controller | NULLLAB · Amazon US |
| Universal Controller | DFRobot |
| QLAB Buddy Mini | Waveshare · Amazon US |
QLAB Buddy
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.
Hardware
Screens
Three tabs across the top, and a cog for Settings.
| Page | What it’s for |
|---|---|
| LIVE | The cue the show is on, its notes and a timer. Hold the left or right edge to step a cue. |
| DEVICES | Every paired prop, with PING to find it. Tap + in the corner to pair a new one. |
| API | Live readouts from outside services. See Magic API. |
| ⚙ Settings | WiFi, Hotspot, Workspace (pick the show), OSC Access, RF Springboard, Software and, on the 3.5″, Brightness. |
- 1LIVE: the cue QLab is standing on. Press GO in QLab and it moves on
- 2DEVICES: every paired prop with its address. PING asks one to show itself
- 3API: Magic API readouts. Sync To Network offers them to other Buddies
- 4The cog: Settings. WiFi keeps up to eight networks; Hotspot runs the show network
- 5Workspace: pick which QLab show to follow
- 6OSC Access and Software: control mode, timer log, passcodes and updates
- 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.
- 1Tap the cog, then drag the list up. Brightness is the last row, on the 3.5″ only
- 2Each tap on TAP goes up 5%. After 100% it wraps round to 5%
- 3The round-arrow button turns the screen upside down, for a Buddy mounted the other way up. It stays that way after a restart
- 4The button is now at the bottom left. Tap it again to turn the screen back
- 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.
- 1DEVICES lists every paired prop
- 2Double-tap a prop’s name: the keyboard opens on it
- 3Type the new name, here Confetti
- 4SAVE. The row takes the name, and so does the prop itself
- 5To remove a prop, hold its × for 2 s. The row fills red
- 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 Relay | Its ring flashes white three times |
| QLAB Buddy Mini | Its screen border flashes white |
| Universal Controller | Its LED flashes |
| Older fountain props | The 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.
The three buttons
BOOT, PWR and RST
- 1Tap BOOT: GO, the next cue runs
- 2Hold BOOT for 5 seconds: PANIC
- 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.
| Button | Press | What happens |
|---|---|---|
| BOOT | Tap | Sends 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. |
| BOOT | Hold 5 s | Sends /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 | Hold 3 s | Opens 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. |
| PWR | Short press | Screen 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. |
| RST | Press | Restarts the board. Paired props, saved WiFi and the locked workspace all survive. |
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 need | Why |
|---|---|
| QLab 5 | Live 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 license | Only for firing props. Any one of Audio, Video or Lighting unlocks Network cues. The free tier runs the Buddy itself. QLab’s license types → |
- 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.
| Way | When to use it |
|---|---|
| USB-C | For a show. A cable to the Mac is fastest and nothing wireless can upset it. The Mac’s WiFi keeps working. |
| WiFi | Join the same network as the QLab Mac. The Buddy finds QLab within a few seconds. |
| Hotspot | No 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. |
- 1The Buddy is on, with no network yet. Its bar reads No WiFi
- 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
- 3The Buddy finds QLab over the cable: the bar turns blue, QLAB, and LIVE shows the standby cue. The Mac’s WiFi keeps working
- 1The Mac running QLab is on your WiFi, here Theater. The Buddy has no network yet: No WiFi
- 2On the Buddy, tap the cog, then WiFi. Tap + to add a network
- 3Type the network’s name exactly as the Mac shows it, then NEXT
- 4Type its password, then SAVE
- 5The Buddy joins. The bar may flash red while it does, then turns green, WiFi
- 6Tap LIVE. Within a few seconds the Buddy finds QLab: blue QLAB, with the standby cue
- 1No router at all. The Buddy is on, with no network: No WiFi
- 2On the Buddy, tap the cog, then Hotspot. Hold Hold To Turn On until it fills: HOTSPOT ON, with its name and password. A tap will not do it
- 3On the Mac, pick it from the WiFi menu, here QLAB Buddy 3F2A, and type the password. The Buddy’s bar turns green, Hotspot: a device has joined
- 4Tap LIVE. The Buddy finds QLab over its own hotspot: blue QLAB
QLAB Buddy 3F2A
Passwordbuddy3a3f2a
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.
- 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.
Pair the prop first. For an RF Relay, also teach it the remote. Then, once per show file:
- 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. - Add a Network Patch Workspace Settings → Network → OSC Controls → +. Type
TCP, Host the prop’s address, Port8000. - Add a Network cue Toolbar → + → Network. Pick that patch, then type the command into Custom Message.
- 1Press GO on the Network cue
- 2QLab sends /rf/3 to the prop’s address
- 3The RF Relay fires slot 3
- 4Over TCP the prop confirms, so a missed message shows as an error
| Custom Message | What it does |
|---|---|
/rf/3 | Fires RF slot 3 |
/m1/start/80/3s | Runs motor 1 at 80 % for 3 s |
/s1/90 | Moves servo 1 to 90° |
- 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
/startcue twice as insurance. With TCP both arrive, and the motor restarts for each.
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.
- 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.
- 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.
- 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.
- 1Nothing is paired yet. On the Buddy, open DEVICES and tap +: it becomes × Pairing and the pairing hotspot comes up
- 2Power on the RF Relay. It joins the hotspot, its bar turns yellow PAIRING, and it appears on the Buddy with SYNC
- 3Tap SYNC. The row reads WAIT while the relay shows PAIRED and restarts onto your WiFi, then it answers from its new fixed address
- 4Now the Mini. Power it on: its frame turns yellow, Pairing, and it appears with SYNC
- 5Tap SYNC again. The Mini shows PAIRED, restarts on your WiFi and opens on LIVE
- 6Tap × Pairing to stop. Both props sit on your WiFi, each at its own address
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 reads | What went wrong |
|---|---|
| WIFI | The Buddy is not on the WiFi it would hand over. Connect it first. |
| FULL | The Buddy’s list of paired devices is full. |
| NAME | Another paired device already uses that name. |
| NO IP | No address left to hand out. |
| NET | The prop never answered. |
| BUSY | The prop is mid-cue or mid-update. Try again when it finishes. |
| ERR | Something else went wrong on the Buddy. Try the pair again. |
| JOIN | A minute later the prop was still on the pairing hotspot. Check the WiFi password, and that the WiFi is 2.4 GHz. |
| RIG | The prop is still paired to another rig’s Buddy, and only that Buddy may re-pair it. Unpair it at the prop first. |
- 1The relay turns up on this Buddy’s pairing hotspot, but it still belongs to another rig’s Buddy
- 2Tap SYNC. The relay refuses: only its own Buddy may re-pair it
- 3SYNC reads RIG in red for a few seconds
- 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
- Open DEVICES. On the Buddy, tap DEVICES.
- 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
| Board | What to do |
|---|---|
| QLAB Buddy Mini | Hold 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 Relay | Hold 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 Controller | Power 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. |
- 1The Mini is paired, so the Buddy lists it under DEVICES
- 2Hold BOOT on the Mini. Keep holding for 3 s
- 3It reads UNPAIR. Nothing happens yet
- 4Let go: UNPAIRED. The Mini says goodbye, so the Buddy drops its row
- 5The Mini restarts unpaired, ready to pair again from the Buddy
- 1The relay is paired, so the Buddy lists it under DEVICES
- 2Hold the knob in. Setup opens first; keep holding and at 5 s the unpair bar appears
- 3Keep holding another 5 s until the bar fills and says RELEASE TO CONFIRM. Let go
- 4UNPAIR RELAY? CANCEL is selected first. Turn to UNPAIR and press
- 5The relay says goodbye: the Buddy drops its row and the relay shows DELETED
- 6It wipes its WiFi and restarts unpaired, ready to pair again. Its RF slots are kept
QLAB Buddy Mini
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.
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
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.
| Screen | What it shows |
|---|---|
| LIVE | Cue 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.2 | Takes over while the Buddy’s springboard is up. See RF Springboard. |
| REMOTE 0.13.2 | GO, previous and next. Second in line, only while the Buddy is set to CTRL. See below. |
| Devices | Every prop the Buddy sees, with its address. Stripe: green alive, grey offline, a white flash when it fires. Empty until paired. |
| Magic API | The last value from each of the six Magic API services. Five fit; the list scrolls. |
| Battery | A charge ring, the percentage, the power source, and a time estimate. |
| QPAL peek | Tap 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. |
- 1LIVE: the cue and timer
- 2Tap BOOT: REMOTE, when the Buddy is set to CTRL
- 3Tap again: DEVICES
- 4Again: MAGIC API
- 5Again: BATTERY
- 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
- 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.
- Put it where you will look. It needs power and the Buddy’s WiFi. Nothing else.
- Swipe sideways, or tap BOOT, to change screens. A quick flick is enough.
- Set the brightness. Swipe up or down from the top or bottom edge. Dragging the middle of a list scrolls it.
- Press PWR or the front button to blank the screen. Press again to wake.
- 1Start at the bottom edge and swipe up: brighter
- 2Start at the top edge and swipe down: dimmer
- 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.
- 1Counting down with time to spare: green
- 2Inside the last five minutes it turns yellow (sped up here)
- 3Past zero it turns red and counts how far over you are
- 4A #timer/start with no target counts up in grey
Connection at a glance
what each border colour means
- 1No WiFi, grey: never set up
- 2Pairing, yellow: waiting to be paired from the Buddy
- 3WiFi, green: on your network, waiting for a show
- 4QLAB, blue: your show is open, and the cue appears
- 5Hotspot, green: on the Buddy’s show hotspot
- 6LAN, grey: on a USB cable to the Mac
- 7No WiFi, red: its saved network is out of reach
Buttons
BOOT, PWR and USER
| Button | Action |
|---|---|
| BOOT | 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 | Short press blanks or wakes the screen. A long press is the power chip’s own hardware shutdown. |
| USER | Short press blanks or wakes the screen. Holding it does nothing, so it is safe to lean on. |
- 1The Mini shows QLab’s standby cue
- 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
- 3GO in QLab while it is dark. The Mini keeps following the show
- 4Press PWR again. It wakes straight onto the new standby cue. A long PWR press turns the Mini off
RF Relay
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.
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:
| From | How |
|---|---|
| QLab, over WiFi | A Network cue sent straight to the relay. No Buddy involved. |
| Go Button | A tagged cue. The Buddy passes it on. |
| QLab, over a cable | USB-C straight to the Mac. No WiFi at all. See Cabled to a Mac. |
Hardware
- 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.
- 1The relay is on
- 2Hold USER, on the top edge beside the WiFi antenna. After 2 s the screen and the ring go dark
- 3Let go. It is off, and cues sent to it are not heard
- 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
- 5Let go once the bar is full. It starts up and rejoins its WiFi
Screens
Everything on the relay is done with the wheel.
| Wheel | Does |
|---|---|
| Turn | Scroll. One click moves one row. |
| Press | Fire, or confirm. |
| Hold | Open Setup, or go back. |
- 1Turn the knob: one click, one slot
- 2Press: the slot fires for 1 s and the bar says FIRED
- 3Hold: Setup for that slot, with its band and battery. Hold again to go back
- 4RENAME: turn to a letter, press to add it, hold to save
- 5DELETE asks first. CANCEL is lit until you turn
- 6Left alone for 30 s on Home, it shows a big timer. Any touch wakes it
- 1Turn the knob to an empty slot
- 2Press or hold the knob. On an empty slot, Setup opens on LEARN
- 3Press the knob. It scans every band for 30 s
- 4Press a button on your remote: CAPTURED
- 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
| Bar | Ring | Means |
|---|---|---|
| On WiFi | ||
| A QLab show is open. The dot is green once the internet is confirmed, white until then | ||
| On a USB cable to a Mac. Once the Mac gives it an address, the bar shows that address and port instead | ||
| Unpaired, looking for a Buddy | ||
| On a Buddy’s pairing hotspot | ||
| Paired, finding its WiFi after a restart | ||
| Finding its WiFi again | ||
| Learning a code | ||
| A slot is firing | ||
| The WiFi dropped | ||
| The radio chip was not found | ||
| Unpairing: 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.1and the Buddy192.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
| Button | Press | What happens |
|---|---|---|
| USER | Hold 2 s while running | Powers off. |
| USER | Hold 2 s while off | Powers on. A bar fills as you hold; let go early and it stays off. |
| RST | Press | Restarts at once. Held with the gold centre button, it enters boot mode for flashing. |
| PWR | Press | Also restarts at once, through the charging circuit. |
Display UI
the on-device screens
| Screen | Description |
|---|---|
| Home | 50 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.) |
| Setup | LEARN / 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 confirm | CANCEL / DELETE. Turn to switch, press to confirm. |
| Listening | 30 s window (15 s if started over OSC), scanning all six frequencies. Press cancels. |
| CAPTURED | Code, frequency and protocol, then back to Home. |
| NO SIGNAL | Nothing heard. Shown in red, then back to Setup (or Home, if started over OSC). |
| Rename | A–Z, 0–9, -, _, space and backspace. Press places a character, hold saves. |
| Screensaver | After 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.2 | A 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
/rf/N | Fire slot N (1–50) for 3 s |
/rf/N/3 | Fire 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/stop | Send slot N’s OFF code, for latching gear (/rf/N/start is its ON) |
/rf/learn/N | Learn a remote into slot N: 15 s window, hold the remote’s button |
/rf/learnoff/N | Learn the remote’s OFF button into slot N. The ON code is kept. |
/rf/stop | Cancel a learn, or cut a transmission short |
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
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.
| Board | Motors | Servos | LED |
|---|---|---|---|
| NULLLAB Maker-ESP32 | 4 (M1–M4) | 4 (S1–S4) | Yes |
| Romeo Mini ESP32-C3 | 2 (M1–M2) | 4 (S1–S4) | No |
- 1A QLab Network cue sends
/m1/start/80/3s: Motor 1, power 80, for 3 s - 2It eases in on a smooth curve. The ramp is a quarter of the run, never more than 0.96 s
- 3It holds at 80% power. On a NULLLAB the number is the power
- 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/stopstill 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.
“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.
Hardware
DFRobot →
Amazon →
Amazon →
Using it
- Wire it. Motor on the M1 screw terminals, servo on the S1 header, 6–16 V on the barrel jack. See Hardware.
- Flash it. In Flash Firmware, pick the row for your board.
- Pair it once. On the Buddy: DEVICES, +, power the board on, SYNC. A NULLLAB’s LED turns green.
- Check it. Its row on the Buddy’s Devices page shows its address. PING makes it answer and flashes the NULLLAB’s LED.
- Fire it from a cue. See the table below.
| From | Cue | Does |
|---|---|---|
| QLab Network cue | /m1/start/80/3s | Motor 1 forward, 80 %, 3 s |
| QLab Network cue | /s1/90 | Servo 1 to 90° |
| Go Button cue name | #192.168.86.62/80%/3s | Motor 1 only. Use the board’s address from Devices. |
- 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 - 2The horn turns at an even speed the whole way
- 3It reaches 90° at 2 s and holds there. With no time,
/s1/90snaps straight there
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.
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.
| LED | What it means |
|---|---|
| White pulse ×3 | Booting. |
| White, breathing | On the Buddy’s pairing hotspot, exchanging credentials. |
| Yellow, blinking | Joining WiFi. |
| Yellow, steady | Reconnecting after a drop. |
| Green | On WiFi and in touch with the Buddy. No show open. |
| Blue | On WiFi, a QLab or Go Button show is open. Changes the instant the show opens or closes. |
| Red, blinking | The WiFi dropped. |
| White flash ×3 | While pairing: accepted, rebooting onto your WiFi. Later: /identify (PING) received. Neither moves anything. |
| Dim white, pulsing once a second | A motor is running. |
| Dim white blip | A servo cue fired. |
- 1On the Buddy’s pairing hotspot: white, breathing
- 2SYNC accepted: three white flashes, then it restarts and joins your WiFi
- 3Joining WiFi: yellow, blinking
- 4On WiFi and in touch with the Buddy, no show open: green
- 5A QLab or Go Button show is open: blue
- 6A motor is running: dim white, pulsing about once a second
- 7The WiFi dropped: red, blinking
- 8Reconnecting: yellow, steady. Then blue again
OSC reference
the addresses, in brief
/m1/start/80/3s | M1 forward at 80 % for 3 s. Leave off the time, or both, for the defaults, 75 % and 5 s |
/m1/reverse/80/3s | The same, backwards |
/m1/stop | Halt M1. /stop halts every motor and parks every servo |
/s1/90 | Servo 1 to 90° now. /s1/90/3s gets there over 3 s |
/s1/limits/60/120 | Keep 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/stop | Park servo 1 where it is. /s*/stop parks them all and leaves the motors alone |
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.
- 1QLab is standing by on 1.9 Understudy note. The Buddy and the Mini show the same cue
- 2GO in QLab. The Buddy and the Mini each follow QLab to the next cue
- 3GO on 2 Smoke Effect, a Network cue. QLab fires the RF Relay itself, and its ring lights for the 3 s hold
- 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.
Flash Firmware
Flashing loads the board’s software onto it over USB-C. It takes one click here, with nothing to download.
- Plug a board in and its row in the table lights up. A brand-new board can’t announce itself, so pick its row by hand.
- Flashed the Buddy? Give it WiFi (the cog → WiFi), then go to Using with QLab 5 or Using with Go Button.
- Flashed any other board? It gets its WiFi from the Buddy. See Pairing Devices with the Buddy.
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…orcu.wchusbserial…. - Windows: they are all a
COMnumber.
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.
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.
- 1Press and hold BOOT
- 2Keep holding. Plug in USB-C
- 3Let go. The screen stays dark
- 4Click Install on the site
- 1Press and hold BOOT, the top button on the right edge
- 2Keep holding. Plug in USB-C, just below it
- 3Let go. The screen stays dark
- 4Click Install on the site
- 1Plug in USB-C at the knob end. The relay starts up
- 2Press the gold centre of the knob in and keep holding
- 3Still holding, tap RST on the bottom edge, under the screen. The screen goes dark
- 4Let go of the knob. The screen stays dark
- 5Click Install on the site
- 1Plug the board into your computer
- 2Click Install on the site. There is nothing to hold
- 1Plug the board into your computer
- 2Click Install on the site. There is nothing to hold
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.
| Device | Firmware | Install |
|---|---|---|
| QLAB Buddy | v… checking… | |
| RF Relay | v… checking… | |
| Universal Controller | v… checking… | |
| Universal Controller | v… checking… | |
| QLAB Buddy Mini | v… checking… |
- 1Power on: each board shows its name and a progress bar
- 2Under it, the firmware version it is running. Check it matches the one you flashed
- 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.
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
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.
Which one should you use?
/rf/ cues/ping/rf/learn from QLab and save on the Flipper/rf/learnInstall it
- Open the disk image and drag RF Relay (For Flipper Zero) onto Applications.
- Run it from Applications.
- 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
- 1Open Settings… from the RF Relay menu bar item. It opens on Slots, with three ways to add a remote
- 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
- 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
- 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.
- 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.
- Plug the Flipper in and open Settings from the
RF Relaymenu bar item. It opens on the Slots tab. Click Import from Flipper; it reads the signal straight off the SD card over USB. - 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.
- 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 patch | Set to |
|---|---|
| Destination | 127.0.0.1 with QLab on the same Mac, or this Mac’s LAN address from another machine |
| Port | 8000 |
| Protocol | OSC 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
.subcapture 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.
| Cue | Does |
|---|---|
/rf/1 | Fires slot 1 for the default hold |
/rf/1 0.5 | Holds half a second |
/rf/1/400ms | Holds 400 milliseconds |
/rf/1/00:01.30 | Holds a minute and a half |
/rf/stop | Cuts a transmission short |
/rf/learn/3 | The next signal you save on the Flipper becomes slot 3 |
/rf/learnoff/3 | The same, for slot 3’s OFF side |
/rf/learncancel | Stops waiting for a signal |
/identify, /rf/identify | Blinks the Flipper’s LED and the menu bar item |
/rf/test | Runs the Pre-Show Check |
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.
- 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
- 2Choose Pre-Show Check. It tests the port QLab sends to, the config, the Flipper and every slot, and fires nothing
- 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.
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.
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.
- 1The relay reports 0.13.1 after its address. The website has 0.13.2, so a green UPDATE chip appears
- 2Tap it once; there is no confirm. CHECK asks the prop if it is ready, then FETCH: the Buddy downloads the update
- 3SEND hands it to the prop over your network, then FLASH while the prop writes it
- 4The prop restarts on 0.13.2 and the chip is gone
| Chip reads | What it means |
|---|---|
| UPDATE | A newer release is ready. Tap to install. |
| REVERT | The prop runs a beta, which is ahead of the release. Tap to install the release. |
| CHECK, FETCH, SEND, FLASH | The steps, over a bar that fills as the file moves. Yellow means slow or stalled. |
| DONE | Installed. |
| HOTSPOT | The prop is on the show hotspot and the Buddy has no WiFi, so there is no way out to the internet. |
| A red code | It 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. |
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.
- 1The Buddy is on a show, checking for updates in the background
- 2Tap the cog, then Software. It shows the version installed, the latest one, and the channel: Production
- 3Tap HOLD. Latest reads Not checking and the Buddy says it stays on this version. Install is switched off
- 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.
- 1QLab and the Buddy stand by on the same cue
- 2Tap BOOT and let go within 0.6 s: GO. QLab runs the cue, and both move to the next
- 3Hold the left edge of LIVE for half a second: QLab’s playhead goes back one cue. Nothing runs
- 4Hold the right edge: the playhead moves on one cue. Still nothing runs
- 5Hold BOOT for 5 s: PANIC. QLab stops every running cue. Let go sooner and nothing is sent
- 6The playhead stays where it was, ready for the next GO
| Device | GO | PANIC | Previous / next cue |
|---|---|---|---|
| QLAB Buddy 3.5″ | Tap BOOT (under 0.6 s) | Hold BOOT for 5 s | Hold 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 Mini | Press GO on the REMOTE page (under 0.6 s) | Hold GO on REMOTE for 3 s | The 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.
- 1QLab, the Buddy and the Mini on the same cue, the relay standing by
- 2Tap BOOT on the Mini: the REMOTE page
- 3◀ and ▶ go straight to QLab and move its playhead. The Buddy follows QLab; nothing fires
- 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
- 5Keep a finger on GO: it fills red, and at 3 s the Mini tells QLab to panic
- 6Let go and the page is ready again
| You do | It sends |
|---|---|
| Tap GO (under 0.6 s) | GO, when you lift your finger |
| Hold GO 0.6 to 3 s, then let go | Nothing |
| Hold GO 3 s | PANIC. 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.
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.
Setting it up
- Teach an RF Relay your remotes. Each learned slot becomes a button with the slot’s name. See RF Relay.
- Open the page. Tap the cog, then RF Springboard.
- Tap Launch Springboard. The grid fills the screen and the relays lock.
Every setting on the page
send time, reset time, PINs
| Row | What it does | Default |
|---|---|---|
| Buttons | Hide or disable buttons, and teach new remotes. See below. | – |
| Relays | Each paired relay, its address, its button count, and Connected, Locked, Locking... or Not answering. | – |
| RF Send Time | How long each tap sends the signal: 1, 3, 5 or 10 s. | 3 s |
| RF Reset Time | How long a button rests before it can fire again: Off, 2, 5, 10 or 30 s. | Off |
| QLab Detection | On: QLab cues can still fire props. Off: only this screen can; relays refuse cues from QLab and other Buddies. | On |
| Owner’s PIN | 4 to 6 digits, typed twice. Needed to get back to this page. Remove (tap twice) also removes the Guest PIN. | Off |
| Guest PIN | Locks the buttons after the Guest Lock Time. Needs an Owner’s PIN first, and must differ from it. | Off |
| Guest Lock Time | Idle 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.
- 1Settings → RF Springboard. The Buddy lists the four buttons it learned from the relay
- 2Buttons: tap one once to disable it, twice to hide it. Strobe is disabled, Snow hidden
- 3Owner’s PIN: type it twice. It guards this page once the grid is up
- 4Guest PIN: type it twice. Guests need it to use the buttons
- 5Launch Springboard. The relay locks to this Buddy and its knob goes dead; the Mini asks for the Guest PIN
- 6Tap Confetti on the Buddy. The relay shows what it sends
- 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
- 8The Mini only works through the Buddy. Unplug the Buddy and the Mini says Can’t reach Buddy until it is back
- 9Hold the Status Dot for 3 s and type the Owner’s PIN. Back leaves Springboard and unlocks the relay
| Button shows | Meaning |
|---|---|
| Grey, then soft green | Tapped, then the relay confirmed it fired |
| SENDING | The relay is still sending the signal |
| WAITING | Another button on the same relay is sending. This one fires next. |
| READY IN | Counting down the RF Reset Time |
| NOT SENT | The relay could not be reached |
| OFFLINE | The relay is not answering |
| ON / OFF tag | The 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.
- 1The cog, then RF Springboard. Tap Buttons
- 2Tap a button once: DISABLED. It stays on the grid, dimmed
- 3Tap it again: HIDDEN. It leaves the grid with no gap
- 4Tap ADD REMOTE, then press the remote near the relay within 15 s. The relay says CAPTURED and a Slot 5 button appears
- 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.
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.
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.
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.
- 1No WiFi, grey: never set up
- 2WiFi: on your network, looking for the show
- 3QLAB, blue: your show is open
- 4LAN: cabled to the Mac
- 5Pairing, yellow: the Buddy is pairing a prop
- 6No WiFi, red: a saved network was lost
| Status bar | What it means |
|---|---|
| Cues work. Only the clock and updates wait on the internet. | |
| Green dot: all healthy. | |
| Green: network fine, still looking for a show. | |
| Always grey with a white dot on a cable. The clock and updates still reach the internet. | |
| The show hotspot is up and empty. | |
| Green: a prop, Mac or phone has joined. | |
| Yellow: Pair Devices is on and no show is open. | |
| No network saved yet. Tap the cog → WiFi. | |
| Red: the saved network is lost, or WiFi is off with no cable. Plug in USB-C, or tap the network in Settings → WiFi. |
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.
- 1QLab has an OSC passcode, and the Buddy does not have it. LIVE reads PASSCODE REQUIRED and the bar turns red, Passcode
- 2Tap the cog, then OSC Access. Under OSC Passcodes, QLab reads Not set
- 3Tap ON beside QLab, type the same passcode QLab uses, then SAVE
- 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.
- 1Tap Move on a prop. Its row turns yellow: Moving to hotspot...
- 2It arrives: On hotspot in green, with its signal
- 3Move All brings every other prop over
| A prop’s row reads | Meaning |
|---|---|
| On hotspot | On the show hotspot, with its signal |
| On WiFi name | On 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 again | It 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 hotspot | Pairing hotspot | |
|---|---|---|
| Name | QLAB Buddy and four characters from the board, such as QLAB Buddy 3F2A. You can rename it. | Always QLAB Buddy |
| Password | buddy and six characters from the board. You can change it. | Always qlabbuddy |
| When it is up | While you have it switched on | Only 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.
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.
- 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
- 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
- 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
- 4Connecting..., then Venue is ACTIVE. The relay is back, with a new address from the venue’s router
- 5On DEVICES, both props are back at their new addresses. Update any QLab Network Patches or Go Button tags that use them
- Save the new network. Tap the cog, WiFi, then +.
- Tap it. The row reads Checking - tap to cancel while the Buddy tests the network and password itself.
- The props move. The row reads Moving 3 devices..., then Connecting.... Each prop restarts onto the new WiFi.
- 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.
- Tap +. It opens Pair Devices.
- 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.
- Close Pair Devices. Do it once the prop has arrived. It keeps its name and the last number of its address.
- 1A yellow bar: 1 Device Not On This WiFi - Tap + To Pair. The relay was off when the Buddy changed WiFi
- 2Tap + to open Pair Devices
- 3Power the relay on. It tries the old WiFi first, and after about a minute it gives up (sped up here)
- 4It joins the pairing hotspot, and the Buddy brings it over by itself: WAIT, then it answers on this WiFi. No SYNC tap
- 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 this | What happens |
|---|---|
| Tap a row | Use that show. The Buddy keeps it through WiFi drops and restarts. |
| Hold a row 2.5 s | Lock to that show and that machine’s address. The row fills yellow as you hold. |
| Hold it again | Unlock |
| Back (top-right) | Return to Settings |
- 1Open the workspace list
- 2Press and hold your show
- 3Keep holding while the bar fills
- 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.
- 1Matinee is locked: its row in the picker reads LOCKED
- 2Its Mac goes away. The row stays at the top, reading Locked Workspace and Offline - 192.168.1.45. The Buddy waits for it
- 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
- 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.
- 1Tap the cog, then OSC Access
- 2Tap VIEW: watch only. GO, PANIC and cue steps are switched off
- 3Tap CTRL to give control back
- 4Passcode set in QLab? Tap ON beside QLab, type the same code and SAVE
| Row | What it does |
|---|---|
| Mode | CTRL (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.2 | Whether this Buddy writes the section-times run log into your show file. The caption says what happened last run. |
| QLab passcode | The OSC passcode from QLab’s Workspace Settings → Network → OSC Access, if set. Sent on every connect. |
| Go Button passcode | The Go Button show’s OSC passcode, if set. Enter it only here: the Buddy shares it with every prop. |
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.
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 in | What you get |
|---|---|
| QLab | Full control, per cue: countdown, count-up, pause, resume, end, and section times. Set with tags in cue Notes. |
| Go Button | One 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.
- 1The standby cue carries #timer/45.00 Act One. Before GO, every screen shows the target in grey
- 2GO: the countdown starts, green while there is time to spare
- 3The last five minutes: yellow (sped up here)
- 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.
#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
| Cue | Notes | On GO |
|---|---|---|
| 1 House to half | #timer/start Test Show #timer/lap Intro | The clock starts. Intro begins. |
| 2 Fountain | #timer/lap First trick | Intro ends, First trick begins. |
| 3 Second trick | #timer/lap Second Trick | First 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
- 1Cue 4 carries #timer/5.00 Gala and #timer/lap Walk-in. NEXT in yellow names the section it will start
- 2GO: the five-minute countdown starts, and so does Walk-in
- 3GO on Reveal, tagged #timer/lap Reveal: NOW names the section running
- 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/startheads the log. - A bare
#timer/lapnames 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
| Cue | Notes | On 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 Fountain | Opener ends, Card Fountain begins. |
| 3 Mind reading | #timer/lap Mentalism | Card Fountain ends, Mentalism begins. |
| 4 Bow | #timer/lap Closer | Mentalism 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
beforerow 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/clearalso takes the log back out of the#timer/logcue, 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:
- On one Buddy: Settings → OSC Access → Timer Log → ON. Only one unit should write. A Buddy in VIEW mode can do it.
- In QLab: tick Edit on the Buddy’s passcode row. Workspace Settings → Network → OSC Access.
On the screen
- Stand the playhead on the
#timer/logcue 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 says | What happened |
|---|---|
| Writes into the #timer/log cue | Switch on, no run yet. Ready. |
| This unit does not write it | Switch off, no run yet. |
| log cue tagged - switch is off | This unit is not the writer. Normal on every Buddy but one. |
| waiting for the #timer/log cue | The 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 run | Nothing carried the tag, or a new run began first. The log is still on the debug console. |
| written to the #timer/log cue | Written and read back unchanged. Done. |
| write refused - check Edit access | QLab ignored the write. Almost always the missing Edit tick from step 2. |
| no room in the #timer/log cue | The 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 ours | Another 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 cue | A #timer/clear cue took the log out. Your own lines stayed. |
| nothing written - could not verify | The read-back never came. The log may or may not have landed, so the Buddy does not claim it did. |
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.
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:
- 1No internet, so the clock reads --:-- --. Tap it
- 2Type the time as four digits
- 3Tap PM or AM, then OK. The clock runs from there
- Type the time. Four digits.
- 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
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.
- 1CLEAR: four dim segments. A quiet band, the normal state
- 2SAFE: one green. Something is there, well below trouble
- 3BUSY: two yellow. Real traffic; fires get through, expect the odd retry
- 4HOSTILE: three orange. Strong interference, and a cue can miss
- 5Four red: something is holding the band
- 6It only warns. Press to fire and the relay still sends
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.
| Screen | What it measures | Answers |
|---|---|---|
| Slot list | Every 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 slot | Only 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.
| Row | Reading |
|---|---|
| NOISE | The latest sample, in dBm. |
| MIN | The lowest reading inside the latest sample. |
| FLOOR | The background level the meter measures against. |
| PEAK | The loudest sample on this band. |
| LEVEL | The meter’s 0–4 verdict and word, such as 2/4 BUSY. |
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.
| Section | You type | It shows |
|---|---|---|
| WIKITEST | A full URL | Whatever text the server returns. |
| BRIDGE | A full URL | A JSON value, as from a wkt.pw-style bridge. |
| ELIPS | Your user code, then your access code | Artist, Song and Word from a lyric feed. |
| QPAL | Your QPAL ID | The spectator’s drawing and the text read from it. |
| GOO | Your Goo ID | The latest search. |
| UNIFI | Your Unifi user ID | The latest result, and which service it came from. |
Setting a URL
- Double-tap a section’s header. On the API tab. The keyboard opens.
- Type the URL or ID. Then confirm.
- 1On the API tab, double-tap a section. A single tap does nothing
- 2The keyboard opens with the start of the address filled in. Type the rest
- 3SAVE. The Buddy checks at once and shows the value, with the time it last changed
http://andhttps://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
valueorrawValuefield. Shown as Value. - If both fields are there,
valuewins. Other keys are ignored.
ELIPS: artist, song, word
- Reads
artistandsonginto their own rows. - For Word, it uses the first of
word,lyric,selectedortitlethat 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 shown | What it means |
|---|---|
Set URL — double-tap header | No URL set for this section yet. |
Can't connect | Could not reach the server (DNS failure or refused). |
No response | Connected, but the reply timed out. |
Wrong URL or code | 401 or 403. Check the URL or access token. |
Link not found | 404. The path does not exist. |
Server busy | 5xx. Try again, or check the service. |
Check the link | The 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 Internet | WiFi 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.
- 1Another Buddy on the WiFi tapped Sync To Network. This one asks first, and says who from
- 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.
Nothing matches that search.
Ports
Universal Controller — motors
| Address | What it does | Ver |
|---|---|---|
| /mN/start | Run motor N forward at the defaults | 0.12.x |
| /mN/start/VEL | Forward at VEL % for the default 5 s | 0.12.x |
| /mN/start/VEL/DUR | Forward at VEL % for DUR | 0.12.x |
| /mN/reverse | Same three forms, running backwards | 0.12.x |
| /mN/stop | Halt motor N. Never passcode-gated | 0.12.x |
| /mN/test | Fire at the built-in 75 % / 5 s test values, ignoring any arguments | 0.12.x |
| /stop | Emergency stop — halts every motor and, from 0.13.0, parks every servo too. Never passcode-gated | 0.12.x |
| /start · /reverse · /test | Aliases targeting M1, so an older patch keeps working. /start and /reverse accept the same /VEL/DUR tail | 0.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
Universal Controller — servos
| Address | What it does | Ver |
|---|---|---|
| /sN/ANGLE | Go to ANGLE immediately | 0.12.x |
| /sN/ANGLE/DUR | Travel to ANGLE over DUR | 0.12.x |
| /sN/angle/ANGLE/DUR | The same move, spelled out | 0.12.x |
| /sN | Angle taken from the first numeric argument; 90° if there is none | 0.12.x |
| /sN/center | Go to 90° | 0.12.x |
| /sN/velocity/DPS | Sweep at DPS degrees per second until the servo reaches its travel limit. Negative reverses | 0.12.x |
| /sN/pulse/US | Drive the raw pulse width in microseconds, bypassing the angle model. Defaults to 1500 | 0.12.x |
| /sN/bounce/DPS | Sweep back and forth across the permitted travel at DPS. Defaults to 30 | 0.12.x |
| /sN/stop | Stop where it stands, clearing velocity and bounce. Never passcode-gated | 0.12.x |
| /sN/sweep/A/B/DPS | Sweep between A and B at DPS, instead of across the whole range | 0.13.0 |
| /sN/limits/A/B | Constrain this servo to A–B so a linkage cannot be driven into its stop. Bare form resets to 0–180 | 0.13.0 |
| /sN/toggle/A/B/DUR | Alternate between two positions on each call — one cue, fired repeatedly | 0.13.0 |
| /sN/nudge/±DEG/DUR | Move relative to where it is now | 0.13.0 |
| /sN/home | Return to this servo’s home position | 0.13.0 |
| /sN/home/ANGLE | Set the home position to ANGLE instead of going there | 0.13.0 |
Addressing several channels at once 0.13.0
- 1
/s*/0put every servo at 0° - 2
/s{1,2}/90: S1 and S2 snap to 90° together, in one message - 3
/s*/45/2s: every servo heads for 45°, and they all arrive together at 2 s
| Address | What it does | Ver |
|---|---|---|
| /s{1,2}/0 | S1 and S2 both to 0°, in one message | 0.13.0 |
| /s*/90 | Every servo the board has, to 90° | 0.13.0 |
| /s{1,2,3,4}/45/2s | Four servos to 45° over 2 s | 0.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 message | 0.13.0 |
| /m*/stop | Halt every motor | 0.13.0 |
| /s*/stop | Park every servo, leave the motors running | 0.13.0 |
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.
/s1/0,/s2/0 is refused on purpose. It would break against every other OSC tool.RF Relay
| Address | What it does | Ver |
|---|---|---|
| /rf/N | Fire slot N for the default hold | 0.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 written | 0.12.x |
| /rf/N/TIME | Hold encoded in the path instead — /rf/1/3, /rf/1/400ms, /rf/1/00:01.30. See how a duration is written | 0.12.x |
| /rf/N/start | Same as /rf/N, named so a latching cue list reads as a start/stop pair. on works too | 0.13.0 |
| /rf/N/stop | Fire slot N’s OFF code — latching hardware with separate on and off codes only. Does nothing if no OFF code is learned. off works too | 0.13.0 |
| /rf/learn/N | Arm 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/MHZ | Arm capture at an explicit frequency; 0 scans all bands | 0.12.x |
| /rf/learnoff/N | Arm capture of slot N’s OFF code, all bands, 15 s. The ON code is kept | 0.13.0 |
| /rf/learnoff/N/MHZ | The same at an explicit frequency | 0.13.0 |
| /rf/freq/MHZ | Set the active band and frequency | 0.12.x |
| /rf/stop | Cancel an armed learn and abort a fire already in flight | 0.12.x |
/rf/stop included. Cancel a learn with a short press on the relay.| Address | What it does | Ver |
|---|---|---|
| /rf/slots | Ask 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 up | 0.13.2 |
| /springboard/lock/SECS | Lock 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 up | 0.13.2 |
| /springboard/only/0|1 | QLab Detection off (1) or on (0). Only the lock holder can send it, and only while the lock is held | 0.13.2 |
| /springboard/state | The relay’s reply to a release over TCP: 0 unlocked, 1 still locked | 0.13.2 |
How a duration is written
| You write | You get | |
|---|---|---|
| 400ms · 0.4s | 400 milliseconds | the same duration, two ways |
| 0.4 0.13.1 | 400 milliseconds | bare decimal, one separator — on the shipping 0.13.0 relay this is still read as clock form and means 4 seconds instead |
| 1500ms · 1.5s | 1.5 seconds | |
| 3 · 3s · 3sec · 3secs | 3 seconds | a bare number is seconds |
| 90 · 90s · 1:30 · 1.5min | 90 seconds | |
| 00:00.05 | 5 seconds | HH:MM.SS |
| 00:01.30 | 90 seconds | HH:MM.SS |
| 00:20.00 · 20:00 · 20min | 20 minutes | |
| 01:00:00 · 1h | 1 hour | |
| 00:00:12:5 | 12.5 seconds | a fourth field is a fraction of a second |
| 1.30.00 · 1:30:00 | 90 minutes | dots and colons are the same separator in here |
| 0 · 0ms · anything unreadable | the RF Relay’s or Flipper app’s default hold | the 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/stpo | nothing fires | RF 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.00is twenty minutes, the same as#timer/00:20.00in a cue note, and1.30.00is ninety minutes. - One separator is the only unclear case. A plain number wins it, so
0.4is 0.4 seconds. That arrives in 0.13.1, still in beta. On a 0.13.0 relay,0.4still means 4 seconds. Write400msor0.4sto get the same on both.
Every prop answers these
| Address | What it does | Ver |
|---|---|---|
| /ping | Learns the sender’s address, replies /pong to port 53001 and announces itself with /hello. Never moves the prop | 0.12.x |
| /identify | Flashes 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/connected | Buddy broadcast: QLab is up. Props use it to skip their own detection | 0.12.x |
| /qlab/disconnected | Buddy broadcast: QLab has gone away | 0.12.x |
OSC passcode
/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
How exact a short cue is
for RF cues under a second
- 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
| Address | Target | What it is for |
|---|---|---|
| /workspaces | QLab | Discover open workspaces |
| /workspace/<id>/connect | QLab | Open a session, passing the workspace passcode |
| /alwaysReply | QLab | Set to 1 so QLab answers every query, cue properties included |
| /workspace/<id>/cueList/playbackPositionId | QLab | Which cue the playhead is on — the heart of the whole display |
| /workspace/<id>/runningOrPausedCues | QLab | What is actually running; the GO detector for device tags |
| /workspace/<id>/cue_id/<id>/valuesForKeys | QLab | Name, number, notes and type in one round trip |
| /workspace/<id>/cueList/updates | QLab | Subscribe to change pushes instead of polling everything |
| /playheadID | QLab | Unscoped playhead query, used by the RF Relay and the Mini |
| /cue/playhead/number · /displayName · /notes | QLab | Unscoped cue-property forms, for a default workspace |
| /go · /panic | QLab | Sent only from the BOOT button on the 3.5″ Buddy: tap for GO, hold 5 s for PANIC |
| /shows | Go Button | List the shows on the device |
| /show/<id>/<verb> | Go Button | Go Button’s equivalent of a workspace-scoped address |
| /thump | Go Button | Liveness probe; the reply says whether a file is actually open |
| /udpReplyPort · /udpKeepAlive | Go Button | Point replies at 53001 and hold the session open |
| /timer/elapsed · /timer/duration | Go Button | Replies the Buddy reads to drive its countdown |
How answers come back
/reply/ and /update/
Internal fleet traffic
| Address | Direction | Carries |
|---|---|---|
| /hello | Prop → Buddy | Identity, firmware version and capabilities on join |
| /pong | Prop → Buddy | Liveness answer to /ping |
| /fired | Prop → Buddy | Confirms which verb ran, with the speed and duration used |
| /buddy/config | Buddy → Buddy | Old 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/conn | Buddy → Mini | Live cue, timer tick and connection state |
| /mini/devs · /mini/ws · /mini/cfg | Buddy → Mini | Device list, workspace name and configuration |
| /mini/api · /mini/peek · /mini/fired | Buddy → Mini | API values, QPAL peek payload and fire confirmations |
| /qlab/at | Buddy → Props, Mini | Where QLab is and which workspace is open |
| /rf/slotlist | Relay → Buddy | The learned slots, in answer to /rf/slots, for RF Springboard |
| /goodbye · /goodbye/ack | Prop ↔ Buddy | A prop leaving its Buddy after an unpair, and the Buddy’s answer |
| /buddy/cfgoffer | Buddy → Buddy | Magic API URLs offered by Sync To Network; the other Buddy asks Accept Sync / Deny Sync |
| /mini/sb · /mini/sbb · /mini/sb/pin | Buddy → Mini | RF Springboard on the Mini: the grid, its buttons in pages of 12, and PIN answers |
| /sb/tap · /sb/pin | Mini → Buddy | A button tapped on the Mini’s springboard, and a Guest PIN to check |
Looks like OSC, is not
| Path | Method | What it is for |
|---|---|---|
| /wifi | HTTP POST | Push network credentials to a prop |
| /passcode | HTTP POST | Sync the OSC passcode |
| /name | HTTP POST | Rename the device |
| /resync | HTTP POST | Wipe the prop’s network and pairing when you delete it on the Buddy |
| /ota | HTTP POST | Start a firmware update |
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 ↗
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
- Plug the board in.
- Click Add Device and pick the board in the browser’s list.
- 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
| Control | What it does |
|---|---|
| Add Device | Opens the port picker. The only click you need; the rest is automatic. |
| Open .log | Replays a saved log, from Download .txt or any serial capture, with the same chips and filters. Dropping a file works too. Any browser. |
| Pause / Resume | Stops the scroll. Lines that arrive while paused are not kept. Adding a device by hand resumes. |
| Mark or M | Drops 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. |
| Clear | Empties the log and the issues. Devices stay connected. |
| Copy | Copies the whole log. |
| Download .txt | Saves the log, named after its devices and the time, e.g. RF_Relay+QLAB_Buddy_2026-09-21T02-00-00-000Z.log.txt. |
| Copy report | Copies a bug report. See Sending a bug report. |
| Auto-connect known devices | Reopens 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 box | Shows only lines containing what you type. / jumps there, Esc clears it. Marks always stay visible. |
| All / Flagged / Errors / Warnings / Notes | Show 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 counter | Lines 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 chips | One 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. |
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. |
| Pairing | Rebooting to join the new WiFi. Expected. |
| An unpair or forget | Rebooting to look for the pairing network. Expected. |
| Anything else | Treated 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
wifiorqlab. 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
| Symptom | Where to look |
|---|---|
| Device went blank or restarted | DEVICE REBOOTED and the red chips after it |
| Fired on one device, not the other | Press M at the moment, compare both after the mark |
| Connected, nothing in the log | Status line. Is it a USB device? Another program on the port? A data cable? |
| A wall of the same line | Repeats fold to ×N; use the filter box |
| “Web Serial isn’t available” | Use desktop Chrome, Edge or Opera |
| Installer stuck on Preparing installation | Close this console, or let it stand down, then retry |
| Someone sent you a .log.txt | Open .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.
Testing a branch in the simulator
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) | |
|---|---|---|
| Resolution | 480 × 320 | 800 × 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 button | BOOT | None: 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 Springboard | Hold BOOT or the Status Dot | Hold the Status Dot only |
| Brightness / screen off | Yes | No. The backlight is always on. |
| Rotate 180° | Yes | Yes, from the Settings header |
| Updates | Any channel | BETA channel only. On Production, Software says there is no build yet. |
- 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.
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 see | Do this |
|---|---|
| “Browser not supported” | Use desktop Chrome, Edge or Opera. Firefox and Safari can’t flash. |
| The port isn’t listed | Try 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-loops | Put 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 blank | Power-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
.qlab4files via File → Import.
Connected, but GO and PANIC do nothing
- Check the Buddy first. Settings → OSC Access on VIEW turns off every control on purpose. Tap CTRL. See OSC Access.
- 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.
- 1A prop won’t fire from a cue? Open DEVICES on the Buddy. A green edge on its row means the prop is answering
- 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
/pingfirst 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.
Release History
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,/stopand/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.
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
- 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.
RF Relay: laptop mount
- You also need a small set of magnets. These work.