Last updated 14 September 2025
This document provides comprehensive documentation of all OSC (Open Sound Control) messages that can be sent to and received from the RØDECaster Video device.
It was reverse engineered by Claude Code by inspection of https://github.com/bitfocus/companion-module-rode-rcv and capture of a few OSC sessions with the device.
- Protocol: OSC over TCP
- Port: 10024 (default)
- Message Format: Custom binary framing with 4-byte little-endian length prefix + standard OSC message
These messages have verified implementation in the companion module codebase
Purpose: Enable remote control mode
Parameters: None
Description: Must be sent first to enable OSC control of the device
Implementation: oscController.ts:189
Purpose: Request device state refresh
Parameters: None
Description: Triggers the device to send current state information
Implementation: commands.ts:91
, sent in index.ts:83,108
Purpose: Request complete show configuration
Parameters: None
Description: Returns complete XML configuration of current show
Implementation: commands.ts:92
, sent in index.ts:84
Purpose: Request device information
Parameters: None
Description: Triggers device to send hardware and configuration data
Implementation: commands.ts:93
, sent in index.ts:85,109
Purpose: Simulate physical button press
Parameters:
button_id
(int): Button identifierpress_state
(int): 1 for press, 0 for release
Button IDs (verified incommands.ts:30-83
):- 1-14: Physical device buttons 1-14
- 101: Media button (0x65)
- 102: Overlay button (0x66)
- 103: Multisource button (0x67)
- 104: Key button (0x68)
- 105: Cut button (0x69)
- 106: Auto button (0x6a)
- 108: Inspect button (0x6c)
- 110: Monitor change button
Purpose: Physical button LED color updates
Parameters:
color
(int): RGB color value
Implementation: Handled inrecievedDataHandler.ts:786-872
for buttons 101-110
Purpose: Select input source
Parameters:
input_number
(int): Input ID (1-6)
Implementation:commands.ts:45-51
Purpose: Select scene
Parameters:
scene_number
(int): Scene ID (1-7)
Implementation:commands.ts:52-58
Purpose: Select media source
Parameters:
media_number
(int): Media ID (1-7)
Implementation:commands.ts:59-65
Purpose: Toggle overlay on/off
Parameters:
overlay_number
(int): Overlay ID (1-7)
Implementation:commands.ts:66-72
Purpose: Scene name update
Parameters:
name
(string): Scene name
Implementation:recievedDataHandler.ts:595-623
Purpose: Media file name update
Parameters:
name
(string): Media file name
Implementation:recievedDataHandler.ts:718-767
Purpose: Overlay file name update
Parameters:
name
(string): Overlay file name
Implementation:recievedDataHandler.ts:686-717
Purpose: Current program source
Parameters:
source_id
(int): Active program source ID
Implementation:recievedDataHandler.ts:921-953
Purpose: Current preview source (Studio mode only)
Parameters:
source_id
(int): Active preview source ID
Implementation:recievedDataHandler.ts:954-1038
Purpose: Active program overlay
Parameters:
overlay_id
(int): Active overlay ID
Implementation:recievedDataHandler.ts:625-653
Purpose: Active preview overlay
Parameters:
overlay_id
(int): Preview overlay ID
Implementation:recievedDataHandler.ts:655-684
Purpose: Control recording
Parameters:
state
(int): 1 to start, 0 to stop
Implementation:commands.ts:85-86
Purpose: Control streaming
Parameters:
state
(int): 1 to start, 0 to stop
Implementation:commands.ts:87-88
Purpose: Recording capability status
Parameters:
enabled
(int): 1 if recording allowed, 0 if not
Implementation:recievedDataHandler.ts:1081-1093
Purpose: Streaming capability status
Parameters:
enabled
(int): 1 if streaming allowed, 0 if not
Implementation:recievedDataHandler.ts:1039-1051
Purpose: Current recording state
Parameters:
recording
(int): 1 if recording, 0 if not
Implementation:recievedDataHandler.ts:1094-1122
Purpose: Current streaming state
Parameters:
streaming
(int): 1 if streaming, 0 if not
Implementation:recievedDataHandler.ts:1052-1080
Purpose: Set transition type
Parameters:
type
(string): "fade", "dip", or "wipe"
Implementation:commands.ts:2-26
Purpose: Set transition parameters
Parameters:
data
(string): Transition-specific data
Valid Values: "dipBlack", "diagonal_1", "diagonal_2", "leftright", "top_bottom", "box_tl", "box_tr", "box_br", "box_bl", "corners", "barndoor-v", "barndoor-h"
Implementation:commands.ts:4-26
Purpose: Set transition duration
Parameters:
time
(float): Transition time in seconds
Implementation:commands.ts:28
Purpose: Invert wipe direction
Parameters: None
Implementation: commands.ts:27
Purpose: Current transition type
Parameters:
type
(string): Current transition type
Implementation:recievedDataHandler.ts:1233-1250
Purpose: Current transition parameters
Parameters:
data
(string): Current transition data
Implementation:recievedDataHandler.ts:1251-1266
Purpose: Current transition duration
Parameters:
time
(float): Current transition time
Implementation:recievedDataHandler.ts:1280-1293
Purpose: Current wipe invert state
Parameters:
inverted
(int): 1 if inverted, 0 if not
Implementation:recievedDataHandler.ts:1294-1310
Purpose: Set audio source level
Parameters:
level
(float): Audio level (0.0 to 1.0)
Implementation: Used inactions.ts:669
Purpose: Set live submix level
Parameters:
level
(float): Audio level (0.0 to 1.0)
Implementation: Used inactions.ts:742,825,856
Purpose: Set stream submix level
Parameters:
level
(float): Audio level (0.0 to 1.0)
Implementation: Referenced inactions.ts:824
Purpose: Set master audio delay
Parameters:
delay
(float): Delay in milliseconds
Implementation:commands.ts:106
Purpose: Set headphone and monitor volumes
Parameters:
level
(float): Volume level
Implementation:commands.ts:97-99
Purpose: Set scene-specific audio mute
Parameters:
muted
(int): 1 to mute, 0 to unmute
Implementation: Used inactions.ts:873,890
Purpose: Set scene mute with timing
Parameters:
timing
(int): Mute timing value
Implementation: Used inactions.ts:874,891
Purpose: Audio source level update
Parameters:
level
(float): Current level
Implementation:recievedDataHandler.ts:1420-1524
Purpose: Audio source name update
Parameters:
name
(string): Source name
Implementation:recievedDataHandler.ts:1420-1524
Purpose: Scene-specific mute state
Parameters:
muted
(int): 1 if muted, 0 if not
Implementation:recievedDataHandler.ts:1494-1522
Purpose: Submix level update
Parameters:
level
(float): Current level
Implementation:recievedDataHandler.ts:1340-1419
Purpose: Master audio delay value
Parameters:
delay
(float): Current delay in milliseconds
Implementation:recievedDataHandler.ts:1575-1587
Purpose: Volume level updates
Parameters:
level
(float): Current volume level
Implementation:recievedDataHandler.ts:1329-1339
Purpose: Wireless audio source state
Parameters:
state
(int): Connection state
Implementation:recievedDataHandler.ts:1531-1532
Purpose: Wireless audio source type
Parameters:
type
(int): Device type (-1=none, 1=Wireless Go Pro, 3=Wireless Interview)
Implementation:recievedDataHandler.ts:1534-1536
Purpose: Wireless audio source connection status
Parameters:
connected
(int): 1 if connected, 0 if not
Implementation:recievedDataHandler.ts:1538-1539
Purpose: Wireless signal quality
Parameters:
quality
(int): Signal quality percentage
Implementation:recievedDataHandler.ts:1541-1542
Purpose: Wireless device battery level
Parameters:
level
(int): Battery percentage
Implementation:recievedDataHandler.ts:1544-1545
Purpose: Wireless device charging status
Parameters:
charging
(int): 1 if charging, 0 if not
Implementation:recievedDataHandler.ts:1547-1548
Purpose: Wireless device remote mute status
Parameters:
muted
(int): 1 if remotely muted, 0 if not
Implementation:recievedDataHandler.ts:1550-1551
Purpose: Wireless device recording capability
Parameters:
recording
(int): 1 if can record, 0 if not
Implementation:recievedDataHandler.ts:1553-1554
Purpose: Request audio meter data
Parameters:
blob
(binary): Meter request configuration
Binary Format:- Byte 0: Mix type (uint8)
- Bytes 1-8: Output channels mask (uint64 little-endian)
- Bytes 9-16: Input channels mask (uint64 little-endian)
Implementation:commands.ts:122
,metersHelper.ts:58
Purpose: Audio meter values
Parameters:
blob
(binary): Meter data
Binary Format:- Bytes 0-15: Master meters (4x float32 LE)
- Byte 16: Output mix type (uint8)
- Bytes 17-24: Output channels mask (uint64 LE)
- Following: Channel data (16 bytes per channel)
Implementation:recievedDataHandler.ts:1670
,metersHelper.ts:62-219
Purpose: Set frame rate
Parameters:
rate
(int): Frame rate (23, 24, 25, 29, 30, 50, 59, 60)
Implementation:commands.ts:108-115
Purpose: Control logo watermark
Parameters:
enabled
(int): 1 to enable, 0 to disable
Implementation:commands.ts:101-102
Purpose: Control auto switching
Parameters:
enabled
(int): 1 to enable, 0 to disable
Implementation:commands.ts:103-104
Purpose: Show name
Parameters:
name
(string): Current show name
Implementation:recievedDataHandler.ts:540-550
Purpose: Current frame rate
Parameters:
rate
(int): Current frame rate
Implementation:recievedDataHandler.ts:553-563
Purpose: Switching mode
Parameters:
mode
(string): "studioLeft" for studio mode, other for instant mode
Implementation:recievedDataHandler.ts:566-579
Purpose: Logo watermark state
Parameters:
enabled
(int): 1 if enabled, 0 if disabled
Implementation:recievedDataHandler.ts:582-592
Purpose: Auto switching state
Parameters:
enabled
(int): 1 if enabled, 0 if disabled
Implementation:recievedDataHandler.ts:1267-1279
Purpose: Set HDMI B output source
Implementation: commands.ts:118
Purpose: Set HDMI A output source
Implementation: commands.ts:117
Purpose: Set UVC output source
Implementation: commands.ts:119
Purpose: Set NDI output type
Implementation: commands.ts:120
Purpose: HDMI output configuration
Implementation: recievedDataHandler.ts:1630-1643
Purpose: USB output configuration
Implementation: recievedDataHandler.ts:1644-1655
Purpose: NDI output configuration
Implementation: recievedDataHandler.ts:1656-1669
Purpose: Fan speed status
Implementation: recievedDataHandler.ts:770-785
Purpose: Device LED status (120=record, 121=stream)
Implementation: recievedDataHandler.ts:1068-1122
Purpose: Current monitor selection
Implementation: recievedDataHandler.ts:1311-1328
Purpose: Storage status
Implementation: recievedDataHandler.ts:1123-1154
Purpose: Active timecodes
Implementation: recievedDataHandler.ts:1155-1168
Purpose: UI button mode
Implementation: recievedDataHandler.ts:1169-1232
Purpose: Video input signal status
Implementation: recievedDataHandler.ts:1588-1629
Purpose: Video input name
Implementation: recievedDataHandler.ts:1588-1629
Purpose: Set video input background source
Implementation: actions.ts:1515,1522,1525
Purpose: Set video input source file
Implementation: actions.ts:1516,1529
Purpose: Enable/disable keying on input
Implementation: Referenced in actions but exact command structure varies
Purpose: Set keying color
Implementation: Referenced in actions but exact command structure varies
Purpose: Set keying mode
Implementation: Referenced in actions but exact command structure varies
Purpose: Direct cut action
Parameters:
state
(int): 1 to execute
Implementation:commands.ts:76
Purpose: Direct auto action
Parameters:
state
(int): 1 to execute
Implementation:commands.ts:77
When sending /show
, the device responds with a complete XML document:
Implementation: Parsed in recievedDataHandler.ts:36-536
<RcvShow switching_mode="..." name="..." logoEnable="..." frameRate="..."
transition="..." transition_data="..." transition_time="..."
hdmi1_out="..." hdmi2_out="..." usb1_uvc_out="...">
<NDISender>
<outputType>...</outputType>
</NDISender>
<AudioMixer>
<masteraudiodelay>
<valueMs>...</valueMs>
</masteraudiodelay>
<audiosources>
<value1 version="..." position="..." name="..." level="..." enabled="...">
<submixes>
<live level="..." mute="..." />
<stream level="..." mute="..." />
</submixes>
</value1>
</audiosources>
</AudioMixer>
</RcvShow>
These messages were observed in device responses but have no implementation in the companion module
Purpose: Information about the last recording
Observed: Device sends this on connection
Purpose: Current show file information
Observed: Device sends path and status information
Purpose: Scene transition status information
Observed: Device sends 4 parameters of transition state
Purpose: Media file path information
Observed: Device sends path and status
Purpose: Device language setting
Observed: Device reports current language
Purpose: Picture-in-picture layout type
Observed: Device reports PIP configuration
Purpose: PIP layout element information
Observed: Device reports layout elements
Purpose: Indicates unsaved scene changes
Observed: Device reports save status
Purpose: Wired network connection status
Observed: Device sends 5 network parameters
Purpose: WiFi connection status
Observed: Device sends 8 WiFi parameters
Purpose: WiFi DHCP status
Observed: Device reports DHCP configuration
Purpose: USB tethering status
Observed: Device reports tethering state
Purpose: Bluetooth connection status
Observed: Device sends 3 Bluetooth parameters
Purpose: Video input source type
Observed: Device reports source for inputs 1-6
Purpose: Video input sub-source information
Observed: Device reports sub-source details
Purpose: Video standard for input
Observed: Device reports video standard per input
Purpose: USB hosted audio device product ID
Observed: Channels 24-29
Purpose: USB device firmware update status
Observed: Channels 24-29
Purpose: USB device high-pass filter setting
Observed: Channels 24-29
Purpose: USB device high-frequency boost
Observed: Channels 24-29
Purpose: USB device pad setting
Observed: Channels 24-29
Purpose: Unknown button 107 LED color
Observed: Device reports color but function unknown
Purpose: Unknown button 109 LED color
Observed: Device reports color but function unknown
Purpose: Media metadata information
Observed: No parameters sent
Purpose: Fade-to-black enable status
Observed: Device reports FTB state
Purpose: Video input recording configuration
Observed: Device reports recording config
Purpose: Currently selected menu item
Observed: Device reports menu state
Purpose: Disk status clear notification
Observed: No parameters
- Implementation Status: Documented messages have verified code implementation. Undocumented messages are sent by the device but not handled by the companion module.
- Binary Protocol: 4-byte little-endian length prefix + OSC message
- Connection Sequence: Send
/remote
→/device/refresh
→/show
→/device
- Audio Channels: Sources 1-33, wireless 4-5, USB hosting 24-29
- Future Implementation: Undocumented messages could be added to expand module functionality