Summary
Barco Pulse-series laser projectors (G100 W16/W19/W22) controlled via JSON-RPC 2.0 over TCP (port 9090) or RS-232 serial. API covers power, source selection, illumination, picture settings, warp/blend/black-level, optics, DMX, environment monitoring, and firmware management. All commands use named parameters; properties support subscribe/notify patterns.
Transport
protocols:
- tcp
- serial
addressing:
port: 9090
serial:
baud_rate: 19200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: passcode
# Source: "A client session must start with an authentication request containing a secret pass code."
# Authentication is optional for normal end-user access; required for elevated access levels.
# Method: authenticate with param "code" (integer).
Traits
traits:
- powerable # system.poweron / system.poweroff
- queryable # property.get for all readable properties
- routable # image.window.main.source switching
- levelable # brightness, contrast, saturation, gamma, sharpness, laser power
Actions
actions:
- id: power_on
label: Power On
kind: action
method: system.poweron
params: []
notes: Best practice to verify system.state is standby or ready before issuing.
- id: power_off
label: Power Off
kind: action
method: system.poweroff
params: []
notes: Best practice to verify system.state is on before issuing.
- id: eco_wake_serial
label: ECO Wake via Serial
kind: action
command: ":POWR1\r"
params: []
notes: ASCII string sent over RS-232 to wake projector from ECO mode.
- id: authenticate
label: Authenticate
kind: action
method: authenticate
params:
- name: code
type: integer
description: Secret pass code for elevated access level
- id: set_property
label: Set Property
kind: action
method: property.set
params:
- name: property
type: string
description: Dot-notation property name (e.g. image.brightness)
- name: value
type: any
description: Value to set (type depends on property)
- id: get_property
label: Get Property
kind: action
method: property.get
params:
- name: property
type: string
description: Dot-notation property name
- id: get_properties
label: Get Multiple Properties
kind: action
method: property.get
params:
- name: property
type: array
description: Array of dot-notation property names
- id: subscribe_property
label: Subscribe to Property Changes
kind: action
method: property.subscribe
params:
- name: property
type: string
description: Dot-notation property name or array of names
- id: unsubscribe_property
label: Unsubscribe from Property Changes
kind: action
method: property.unsubscribe
params:
- name: property
type: string
description: Dot-notation property name or array of names
- id: subscribe_signal
label: Subscribe to Signal
kind: action
method: signal.subscribe
params:
- name: signal
type: string
description: Signal name or array of signal names
- id: unsubscribe_signal
label: Unsubscribe from Signal
kind: action
method: signal.unsubscribe
params:
- name: signal
type: string
description: Signal name or array of signal names
- id: introspect
label: Introspect Objects
kind: action
method: introspect
params:
- name: object
type: string
description: Object name in dot notation (empty = all)
- name: recursive
type: boolean
description: If false, list only immediate child object names
- id: select_source
label: Select Input Source
kind: action
method: property.set
params:
- name: property
type: string
value: "image.window.main.source"
description: Fixed property name
- name: value
type: string
description: "Source name (e.g. DisplayPort 1, HDMI, DVI 1, HDBaseT, SDI)"
- id: list_sources
label: List Available Sources
kind: action
method: image.source.list
params: []
- id: list_connectors
label: List Connectors
kind: action
method: image.connector.list
params: []
- id: set_laser_power
label: Set Laser Power
kind: action
method: property.set
params:
- name: property
type: string
value: "illumination.sources.laser.power"
- name: value
type: float
description: Target power in percent
- id: set_brightness
label: Set Brightness
kind: action
method: property.set
params:
- name: property
type: string
value: "image.brightness"
- name: value
type: float
description: "Normalized offset, -1 to 1, step 0.01"
- id: set_contrast
label: Set Contrast
kind: action
method: property.set
params:
- name: property
type: string
value: "image.contrast"
- name: value
type: float
description: "Normalized gain, 0 to 2, step 0.01, default 1"
- id: set_gamma
label: Set Gamma
kind: action
method: property.set
params:
- name: property
type: string
value: "image.gamma"
- name: value
type: float
description: "1 to 3, step 0.1, default 2.2"
- id: set_saturation
label: Set Saturation
kind: action
method: property.set
params:
- name: property
type: string
value: "image.saturation"
- name: value
type: float
description: "0 to 2, step 0.01, default 1"
- id: set_sharpness
label: Set Sharpness
kind: action
method: property.set
params:
- name: property
type: string
value: "image.sharpness"
- name: value
type: integer
description: "-2 to 8"
- id: set_orientation
label: Set Orientation
kind: action
method: property.set
params:
- name: property
type: string
value: "image.orientation"
- name: value
type: string
description: "DESKTOP_FRONT, DESKTOP_REAR, CEILING_FRONT, CEILING_REAR"
- id: set_scaling_mode
label: Set Scaling Mode
kind: action
method: property.set
params:
- name: property
type: string
value: "image.window.main.scalingmode"
- name: value
type: string
description: "Fill, OneToOne, FillScreen, Stretch"
- id: set_shutter
label: Set Shutter
kind: action
method: property.set
params:
- name: property
type: string
value: "optics.shutter.position"
- name: value
type: string
description: "Open or Closed"
- id: set_warp_enable
label: Enable/Disable Warp
kind: action
method: property.set
params:
- name: property
type: string
value: "image.processing.warp.enable"
- name: value
type: boolean
- id: set_warp_file_enable
label: Enable/Disable File Warp
kind: action
method: property.set
params:
- name: property
type: string
value: "image.processing.warp.file.enable"
- name: value
type: boolean
- id: select_warp_file
label: Select Warp File
kind: action
method: property.set
params:
- name: property
type: string
value: "image.processing.warp.file.selected"
- name: value
type: string
description: Filename of uploaded warp grid
- id: set_blend_file_enable
label: Enable/Disable Blend File
kind: action
method: property.set
params:
- name: property
type: string
value: "image.processing.blend.file.enable"
- name: value
type: boolean
- id: select_blend_file
label: Select Blend File
kind: action
method: property.set
params:
- name: property
type: string
value: "image.processing.blend.file.selected"
- name: value
type: string
description: Filename of uploaded blend mask
- id: set_blacklevel_file_enable
label: Enable/Disable Black Level File
kind: action
method: property.set
params:
- name: property
type: string
value: "image.processing.blacklevel.file.enable"
- name: value
type: boolean
- id: select_blacklevel_file
label: Select Black Level File
kind: action
method: property.set
params:
- name: property
type: string
value: "image.processing.blacklevel.file.selected"
- name: value
type: string
description: Filename of uploaded black level mask
- id: set_standby_enable
label: Enable/Disable Standby
kind: action
method: property.set
params:
- name: property
type: string
value: "system.standby.enable"
- name: value
type: boolean
- id: set_eco_enable
label: Enable/Disable ECO Mode
kind: action
method: property.set
params:
- name: property
type: string
value: "system.eco.enable"
- name: value
type: boolean
- id: set_dmx_mode
label: Set DMX Mode
kind: action
method: property.set
params:
- name: property
type: string
value: "dmx.mode"
- name: value
type: string
description: DMX mode name
- id: set_dmx_start_channel
label: Set DMX Start Channel
kind: action
method: property.set
params:
- name: property
type: string
value: "dmx.startchannel"
- name: value
type: integer
description: "1..512"
- id: engage_clo
label: Engage CLO
kind: action
method: illumination.clo.engage
params: []
notes: Engages Constant Light Output at current light level
- id: get_environment_temperatures
label: Get Temperature Sensors
kind: action
method: environment.getcontrolblocks
params:
- name: type
type: string
value: "Sensor"
- name: valuetype
type: string
value: "Temperature"
- id: get_environment_fan_speeds
label: Get Fan Speeds
kind: action
method: environment.getcontrolblocks
params:
- name: type
type: string
value: "Sensor"
- name: valuetype
type: string
value: "Speed"
- id: list_firmware_components
label: List Firmware Components
kind: action
method: firmware.listcomponents
params: []
- id: list_firmware_versions
label: List Firmware Version Status
kind: action
method: firmware.listcomponentversionstatus
params: []
- id: schedule_firmware_upgrade
label: Schedule Firmware Upgrade
kind: action
method: firmware.schedulecomponentupgrade
params: []
- id: get_alarm_info
label: Get Alarm Info
kind: action
method: environment.getalarminfo
params: []
- id: list_dmx_channels
label: List DMX Channels
kind: action
method: dmx.listchannels
params: []
- id: list_dmx_modes
label: List DMX Modes
kind: action
method: dmx.listmodes
params: []
- id: blink_led
label: Blink LED
kind: action
method: ledctrl.blink
params:
- name: led
type: string
description: LED identifier (e.g. systemstatus)
- name: color
type: string
description: Color name (e.g. red)
- name: period
type: integer
description: Blink period
- id: get_laser_serial_number
label: Get Laser Serial Number
kind: action
method: illumination.laser.getserialnumber
params: []
- id: copy_color_preset_to_custom
label: Copy Color Preset to Custom
kind: action
method: image.color.p7.custom.copypresettocustom
params:
- name: presetname
type: string
description: Name of the preset to copy to custom
- id: reset_color_preset
label: Reset Color Preset
kind: action
method: image.color.p7.custom.resetpreset
params:
- name: presetname
type: string
description: Name of the preset to reset back to its default values
- id: reset_color_to_native
label: Reset Color to Native
kind: action
method: image.color.p7.custom.resettonative
params: []
- id: next_rgb_mode
label: Next RGB Mode
kind: action
method: image.color.rgbmode.nextrgbmode
params: []
notes: Cycles through all possible RGB modes.
Feedbacks
feedbacks:
- id: system_state
type: enum
values: [boot, eco, standby, ready, conditioning, on, deconditioning, service, error]
property: system.state
- id: illumination_state
type: enum
values: [On, Off]
property: illumination.state
- id: laser_power
type: float
description: Current laser power in percent
property: illumination.sources.laser.power
- id: laser_min_power
type: float
description: Minimum laser power in percent
property: illumination.sources.laser.minpower
- id: laser_max_power
type: float
description: Maximum laser power in percent
property: illumination.sources.laser.maxpower
- id: active_source
type: string
description: Currently active source name
property: image.window.main.source
- id: brightness
type: float
description: "Image brightness offset, -1 to 1"
property: image.brightness
- id: contrast
type: float
description: "Image contrast gain, 0 to 2"
property: image.contrast
- id: gamma
type: float
description: "Image gamma, 1 to 3"
property: image.gamma
- id: saturation
type: float
description: "Image saturation, 0 to 2"
property: image.saturation
- id: sharpness
type: integer
description: "Image sharpness, -2 to 8"
property: image.sharpness
- id: orientation
type: enum
values: [DESKTOP_FRONT, DESKTOP_REAR, CEILING_FRONT, CEILING_REAR]
property: image.orientation
- id: scaling_mode
type: enum
values: [Fill, OneToOne, FillScreen, Stretch]
property: image.window.main.scalingmode
- id: shutter_position
type: enum
values: [Open, Closed]
property: optics.shutter.position
- id: zoom_position
type: integer
property: optics.zoom.position
- id: focus_position
type: integer
property: optics.focus.position
- id: lens_shift_horizontal
type: integer
property: optics.lensshift.horizontal.position
- id: lens_shift_vertical
type: integer
property: optics.lensshift.vertical.position
- id: alarm_state
type: enum
values: [Fatal, Error, Alert, Warning, Ok]
property: environment.alarmstate
- id: network_lan_state
type: enum
values: [CONNECTED, DISCONNECTED]
property: network.device.lan.state
- id: connector_detected_signal
type: object
description: Detailed signal info on a connector (active, resolution, frequency, color space, etc.)
# UNRESOLVED: connector names vary by model; property path is image.connector.[name].detectedsignal
Variables
variables:
- id: laser_power_level
property: illumination.sources.laser.power
type: float
min: null # UNRESOLVED: minpower is dynamic, read from illumination.sources.laser.minpower
max: null # UNRESOLVED: maxpower is dynamic, read from illumination.sources.laser.maxpower
unit: percent
- id: brightness_level
property: image.brightness
type: float
min: -1
max: 1
step: 0.01
- id: contrast_level
property: image.contrast
type: float
min: 0
max: 2
step: 0.01
- id: gamma_level
property: image.gamma
type: float
min: 1
max: 3
step: 0.1
- id: saturation_level
property: image.saturation
type: float
min: 0
max: 2
step: 0.01
- id: sharpness_level
property: image.sharpness
type: integer
min: -2
max: 8
Events
events:
- id: property_changed
method: property.changed
description: "Pushed when a subscribed property changes. Params contain array of property/value pairs."
payload:
- name: property
type: array
description: "Array of {objectname.propertyname: value} objects"
- id: signal_callback
method: signal.callback
description: "Pushed when a subscribed signal fires. Params contain array of signal/argument pairs."
payload:
- name: signal
type: array
description: "Array of {objectname.signalname: {args}} objects"
- id: model_updated
method: signal.callback
description: "Triggered when object structure changes (objects added or removed). Subscribe via signal.subscribe with signal=modelupdated."
payload:
- name: object
type: string
- name: isnew
type: boolean
description: "true = object added, false = object removed"
Macros
# UNRESOLVED: no explicit multi-step macros documented in source
Safety
confirmation_required_for: []
interlocks: []
# Source notes: power on does nothing if projector already on or in state transition;
# power off does nothing if already off or in transition.
# Best practice: verify state before issuing power commands.
# UNRESOLVED: no explicit safety interlock sequences documented in source
Notes
- All commands use JSON-RPC 2.0 format over both TCP and serial transports.
- Property names use dot notation (e.g.
image.brightness). Objects and members are lowercase. property.setbest practice: wait for confirmation before re-setting the same property to avoid flooding the server.- Source-to-object-name translation: strip non-word characters and lowercase (e.g. "DisplayPort 1" → "displayport1").
- File upload/download (warp grids, blend masks, black level masks) uses HTTP POST to
http://<projector-ip>/api/<endpoint>. - Source notifications deliver two events on source switch: one for deselection (empty value), one for new selection.
- API is partially dynamic — available objects depend on projector configuration and connected peripherals. Use introspection to discover the exact API for a specific unit.
- ECO wake via serial uses ASCII
:POWR1\r(not JSON-RPC). - Subscribe does not return current value; use
property.getfirst to initialize.
Provenance
source_domains:
- audiogeneral.com
- docs
source_urls:
- "https://www.audiogeneral.com/barco/UDX%20Series/JSON_ReferenceGuide.pdf"
retrieved_at: 2026-05-14T11:48:18.070Z
last_checked_at: 2026-06-02T21:49:58.472Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:49:58.472Z
matched_actions: 50
action_count: 50
confidence: medium
summary: "All 50 spec actions traced to source. (13 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "exact connector set per G100 variant not stated; source lists DVI 1/2, DisplayPort 1/2, HDMI, HDBaseT, SDI but notes \"list contents will vary depending on projector model\""
- "connector names vary by model; property path is image.connector.[name].detectedsignal"
- "minpower is dynamic, read from illumination.sources.laser.minpower"
- "maxpower is dynamic, read from illumination.sources.laser.maxpower"
- "no explicit multi-step macros documented in source"
- "no explicit safety interlock sequences documented in source"
- "firmware version compatibility not stated in source"
- "exact available sources and connectors per G100 variant not stated"
- "window position/size properties documented but no worked example for multi-window setup"
- "lens shift, zoom, focus position value ranges not stated"
- "warp grid file format described as \"same as MCM500/400\" but no spec provided"
- "DMX mode names and channel mappings not enumerated"
- "illumination source types beyond laser (LED, xenon, UHP) not enumerated for this model"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0