Skip to content
Hardware

Brainbox Serial Protocol Reference

7 min read Updated Jun 2026

The Brainbox receives data from Podcatcher devices over BLE and exposes it as CSV frames on a USB serial connection. Interactive installations, kiosks, and custom software can read these frames to react to visitor actions in real time.

ParameterValue
InterfaceUSB Serial (CDC)
Line delimiter\r\n (CR+LF)
USB Vendor ID0x2dcf
USB Product ID0x6003

Connect the Brainbox to a computer via USB. It appears as a standard serial (COM) port — no special drivers are required on modern operating systems.

After opening the serial port, activate the Brainbox console and enable the frame types you need:

<CR> ← send a carriage return (0x0D), wait 300 ms
console tracking 1<CR> ← enable Tracking V2 frames, wait 200 ms
console interactive 1<CR> ← enable Interactive V1 frames, wait 200 ms
version<CR> ← response: "version: 2.5.1"
CommandFunction
console tracking 1Enable Tracking V2 output
console tracking 0Disable Tracking V2 output
console interactive 1Enable Interactive V1 output
console interactive 0Disable Interactive V1 output
console syncdock 1Enable Basecamp frames (not yet in firmware — see AVS-147)
versionQuery firmware version
helpList all available commands

To understand the frame data, it helps to know how content is organized in the Guide-ID CMS:

Site
└── Tour
└── Stop
└── Clip (audio file + optional Interactive Clip Id)
  • A site has one or more tours
  • A tour contains one or more stops
  • A stop contains one or more clips — a clip is the actual content, typically with an audio file linked to it
  • Each clip has an optional Interactive Clip Id (1–65535) that uniquely identifies it for interactive setups

The clipIdUser value in the frames below corresponds to this Interactive Clip Id. You configure it per clip in the CMS under the clip settings.

Clip settings in the CMS — the Interactive Clip Id field at the bottom uniquely identifies this clip for interactive setups.

A clip starts playing on the Podcatcher in one of these ways:

  • Beacon scan — the visitor manually scans a beacon at a stop
  • UWB auto-trigger — the visitor enters a zone and the Podcatcher triggers automatically based on proximity (UWB distance)
  • Clip flow navigation — the visitor presses buttons (Up, Down, Left, Right) to navigate through the clip flow within a stop (e.g. choice clips with multiple branches)

The Tour Editor clip flow — a stop with multiple clips connected via button choices (Left, Up).

Each time a clip starts, the Brainbox sends a frame with the corresponding Interactive Clip Id — regardless of how the clip was triggered.

All frames arrive as CSV lines over serial. The first field (version byte) determines the frame type.

Sent approximately once per second for each device in range. Use this for real-time visitor position tracking, battery monitoring, and button state.

66,pp009071,0xA1B2C3D4E5F60718,1001,150,3700,0x0004,0x0000
#FieldTypeExampleDescription
0versiondecimal66Always 66
1deviceSerialstringpp009071Podcatcher serial number (pp + 6 digits)
2visitorIdhex0xA1B2C3D4E5F6071816 hex chars (8 bytes) — 0x0000000000000000 = idle
3clipIdUserdecimal1001Interactive Clip Id of last activated clip (0 = none)
4lastTriggerDistancedecimal150UWB distance in cm (0 = no trigger)
5batteryMvdecimal3700Battery voltage in mV
6keysLasthex0x0004Last pressed buttons (bitmask)
7keysHeldhex0x0000Currently held buttons (bitmask)
BitHexButtonDescription
00x0001DownButton down
10x0002RightButton right
20x0004CenterButton center
30x0008UpButton up
40x0010LeftButton left
120x1000Volume UpIncrease volume one step
130x2000Volume DownDecrease volume one step

Sent every time a clip starts playing on a Podcatcher — whether triggered by a beacon scan, UWB auto-trigger, or clip flow navigation. Each frame tells you:

  • Which device triggered (deviceSerial)
  • Which visitor is using it (visitorId — unique per session)
  • Which language they selected (NL, EN, DE, FR, ES, IT)
  • Which clip was triggered (clipIdUser — the Interactive Clip Id configured in the CMS)
  • Which armed code was set by the Podcatcher (requestedVideoCode — usually an AV-Sync video code)
  • How many triggers this visitor has had so far (sequence)
161,pp009071,A1B2C3D4E5F60718,2005,EN,7,0x0000001A
#FieldTypeExampleDescription
0versiondecimal161161 or 160 (both accepted)
1deviceSerialstringpp009071Podcatcher serial number
2visitorIdhex0xA1B2C3D4E5F60718Visitor ID (unique per session)
3clipIdUserdecimal2005Interactive Clip Id of triggered clip
4languagestringEN2-character language code from the trigger file (NL, EN, DE, FR, ES, IT)
5sequencedecimal7Counter that increments per trigger, rolls over after 255
6requestedVideoCodehex0x0000001AArmed code — usually an AV-Sync video code (0x00000000 = none)

A visitor walks past an interactive display with their Podcatcher. The display receives:

161,pp009071,0xA1B2C3D4E5F60718,2005,EN,7,0x0000001A

The display now knows instantly:

  • Visitor 0xA1B2C3D4E5F60718 → recognizable at the next display too
  • Language is English → show English subtitles or text
  • Clip 2005 → play the matching animation
  • Armed code 0x1A → play the AV-Sync video assigned to this stop
  • Trigger #7 → visitor has been active for a while, adapt content accordingly

Automatic language adaptation The visitor selects their language on the Podcatcher. Every display in the museum adapts automatically — no touchscreen or language button needed on the display itself.

Visitor recognition across rooms The visitorId persists throughout the entire visit. A visitor triggers a display in room A, then walks to room B — the display there recognizes the same visitorId and can personalize: “Welcome back, you previously saw…” No login or QR scan required.

Interactive projections and animations A Podcatcher comes in range → the projection starts automatically. Multiple visitors at once? Your application sees all active visitorId values in the zone and can adapt content to the number of visitors (solo experience vs. group experience).

AV-sync with external displays When a visitor triggers a stop, the Podcatcher arms a code (usually an AV-Sync video code). This requestedVideoCode is sent via the interactive frame. The connected display matches the armed code and plays the corresponding content — no additional hardware (tablet, touchscreen) needed.

When developing an interactive installation, use a serial monitor to:

  • Live debug: See frames arriving in real time as you stand in front of the display
  • Test language switching: Change language on the Podcatcher, verify the display reacts
  • Check timing: Frames arrive within 1 second of the beacon trigger
  • Multi-visitor testing: Test with 2–3 Podcatchers simultaneously and observe all visitorId values
Was this article helpful?