Summary
Barco HDX series projectors (W12, W14, W18) controlled via JSON-RPC 2.0 over TCP/IP (port 9090) or RS-232 serial. Supports power management, input source selection, illumination control, picture adjustments (brightness, contrast, gamma, saturation, sharpness), warp/blend/blacklevel file management, shutter, zoom, focus, lens shift, DMX, and environment monitoring (temperatures, fan speeds, alarms). Property subscription and signal callbacks provide real-time state updates.
Transport
protocols:
- tcp
- serial
addressing:
port: 9090
serial:
baud_rate: 19200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: none # inferred: auth is optional and only required for elevated access levels; normal end-user access skips authentication
Traits
traits:
- powerable # system.poweron / system.poweroff methods
- queryable # property.get for state, signal, environment readings
- routable # image.window.main.source for input selection
- levelable # brightness, contrast, gamma, saturation, sharpness, illumination power
Actions
actions:
- id: system_poweron
label: Power On
kind: action
method: system.poweron
params: []
- id: system_poweroff
label: Power Off
kind: action
method: system.poweroff
params: []
- id: eco_wakeup_serial
label: ECO Wakeup via Serial
kind: action
description: Send ASCII ":POWR1\r" on RS232 to wake projector from ECO mode
params: []
- 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 from image.source.list, e.g. DisplayPort 1, HDMI, DVI 1, DVI 2, HDBaseT, SDI"
- id: set_illumination_power
label: Set Illumination Power
kind: action
method: property.set
params:
- name: property
type: string
value: illumination.sources.laser.power
description: Fixed property name
- name: value
type: float
description: "Power level in percent (min/max dynamic via minpower/maxpower properties)"
- 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, default 0"
- 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, step 1"
- id: set_orientation
label: Set Orientation
kind: action
method: property.set
params:
- name: property
type: string
value: image.orientation
- name: value
type: enum
values: [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: enum
values: [Fill, OneToOne, FillScreen, Stretch]
- id: set_shutter_position
label: Set Shutter Position
kind: action
method: property.set
params:
- name: property
type: string
value: optics.shutter.position
- name: value
type: enum
values: [Open, Closed]
- id: set_zoom_position
label: Set Zoom Position
kind: action
method: property.set
params:
- name: property
type: string
value: optics.zoom.position
- name: value
type: integer
- id: set_focus_position
label: Set Focus Position
kind: action
method: property.set
params:
- name: property
type: string
value: optics.focus.position
- name: value
type: integer
- id: set_lensshift_horizontal
label: Set Horizontal Lens Shift
kind: action
method: property.set
params:
- name: property
type: string
value: optics.lensshift.horizontal.position
- name: value
type: integer
- id: set_lensshift_vertical
label: Set Vertical Lens Shift
kind: action
method: property.set
params:
- name: property
type: string
value: optics.lensshift.vertical.position
- name: value
type: integer
- id: set_warp_enable
label: Enable 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 Warp File
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, e.g. warp.xml"
- id: set_blend_file_enable
label: Enable 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, e.g. mask.png"
- id: set_blacklevel_file_enable
label: Enable 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, e.g. blacklevel.png"
- 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
- id: set_dmx_startchannel
label: Set DMX Start Channel
kind: action
method: property.set
params:
- name: property
type: string
value: dmx.startchannel
- name: value
type: integer
description: "DMX start channel, 1-512"
- id: set_dmx_shutdown
label: Set DMX Shutdown
kind: action
method: property.set
params:
- name: property
type: string
value: dmx.shutdown
- name: value
type: boolean
- id: set_standby_enable
label: Enable Standby Mode
kind: action
method: property.set
params:
- name: property
type: string
value: system.standby.enable
- name: value
type: boolean
- id: set_eco_enable
label: Enable ECO Mode
kind: action
method: property.set
params:
- name: property
type: string
value: system.eco.enable
- name: value
type: boolean
- id: authenticate
label: Authenticate
kind: action
method: authenticate
params:
- name: code
type: integer
description: "Secret pass code for elevated access level"
- id: list_sources
label: List Available Sources
kind: query
method: image.source.list
params: []
- id: list_connectors
label: List Connectors
kind: query
method: image.connector.list
params: []
- id: list_source_connectors
label: List Source Connectors
kind: query
method: "image.source.{sourcename}.listconnectors"
params:
- name: sourcename
type: string
description: "Source name lowercased with non-word chars removed, e.g. displayport1"
- id: get_property
label: Get Property Value
kind: query
method: property.get
params:
- name: property
type: string
description: "Dot-notation property name, e.g. system.state"
- id: subscribe_property
label: Subscribe to Property Changes
kind: action
method: property.subscribe
params:
- name: property
type: string_or_array
description: "Property name or array of property names"
- id: unsubscribe_property
label: Unsubscribe from Property Changes
kind: action
method: property.unsubscribe
params:
- name: property
type: string_or_array
- id: subscribe_signal
label: Subscribe to Signal
kind: action
method: signal.subscribe
params:
- name: signal
type: string_or_array
description: "Signal name or array of signal names, e.g. modelupdated"
- id: unsubscribe_signal
label: Unsubscribe from Signal
kind: action
method: signal.unsubscribe
params:
- name: signal
type: string_or_array
- id: introspect
label: Introspect Objects
kind: query
method: introspect
params:
- name: object
type: string
description: "Object name to introspect (dot notation), empty for all"
- name: recursive
type: boolean
description: "true = full metadata, false = object names only (one level)"
- id: get_environment_temperatures
label: Get Environment Temperatures
kind: query
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: query
method: environment.getcontrolblocks
params:
- name: type
type: string
value: Sensor
- name: valuetype
type: string
value: Speed
- id: get_alarm_info
label: Get Alarm Info
kind: query
method: environment.getalarminfo
params: []
- id: firmware_list_components
label: List Firmware Components
kind: query
method: firmware.listcomponents
params: []
- id: firmware_list_version_status
label: List Firmware Version Status
kind: query
method: firmware.listcomponentversionstatus
params: []
- id: firmware_schedule_upgrade
label: Schedule Firmware Upgrade
kind: action
method: firmware.schedulecomponentupgrade
params: []
- id: clo_engage
label: Engage Constant Light Output
kind: action
method: illumination.clo.engage
params: []
- id: dmx_list_channels
label: List DMX Channels
kind: query
method: dmx.listchannels
params: []
- id: dmx_list_modes
label: List DMX Modes
kind: query
method: dmx.listmodes
params: []
- id: get_system_state
label: Get System State
kind: query
method: property.get
params:
- name: property
type: string
value: system.state
description: "Fixed property name for projector state"
- id: get_illumination_state
label: Get Illumination State
kind: query
method: property.get
params:
- name: property
type: string
value: illumination.state
description: "Fixed property name for illumination state"
- id: get_illumination_minpower
label: Get Illumination Min Power
kind: query
method: property.get
params:
- name: property
type: string
value: illumination.sources.laser.minpower
description: "Read-only minimum laser power percent"
- id: get_illumination_maxpower
label: Get Illumination Max Power
kind: query
method: property.get
params:
- name: property
type: string
value: illumination.sources.laser.maxpower
description: "Read-only maximum laser power percent"
- id: get_network_lan_ip4config
label: Get LAN IP4 Configuration
kind: query
method: property.get
params:
- name: property
type: string
value: network.device.lan.ip4config
description: "Returns Address, Mask, Gateway, NameServers"
- id: get_network_lan_state
label: Get LAN State
kind: query
method: property.get
params:
- name: property
type: string
value: network.device.lan.state
description: "Returns CONNECTED or DISCONNECTED"
- id: set_window_main_position
label: Set Main Window Position
kind: action
method: property.set
params:
- name: property
type: string
value: image.window.main.position
description: "Fixed property name"
- name: value
type: object
description: "Object with x (int) and y (int) fields"
- id: set_window_main_size
label: Set Main Window Size
kind: action
method: property.set
params:
- name: property
type: string
value: image.window.main.size
description: "Fixed property name"
- name: value
type: object
description: "Object with width (int) and height (int) fields"
- id: illumination_laser_get_serial
label: Get Laser Serial Number
kind: query
method: illumination.laser.getserialnumber
params: []
- id: image_color_p7_next_rgb_mode
label: Next RGB Mode
kind: action
method: image.color.rgbmode.nextrgbmode
params: []
Feedbacks
feedbacks:
- id: system_state
type: enum
values: [boot, eco, standby, ready, conditioning, on, service, deconditioning, error]
description: "Current projector state via property.get on system.state"
- id: illumination_state
type: enum
values: ["On", "Off"]
- id: illumination_power
type: float
description: "Current laser power percent via illumination.sources.laser.power"
- id: illumination_min_power
type: float
description: "Minimum laser power percent"
- id: illumination_max_power
type: float
description: "Maximum laser power percent"
- id: active_source
type: string
description: "Currently active source name via image.window.main.source"
- id: available_sources
type: array
description: "List of available source names from image.source.list"
- id: available_connectors
type: array
description: "List of available connector names from image.connector.list"
- id: connector_signal
type: object
description: "Detected signal info on a connector (active, name, resolution, frequencies, color space, etc.) via image.connector.{name}.detectedsignal"
- id: brightness
type: float
description: "Current brightness value, -1 to 1"
- id: contrast
type: float
description: "Current contrast value, 0 to 2"
- id: gamma
type: float
description: "Current gamma value, 1 to 3"
- id: saturation
type: float
description: "Current saturation value, 0 to 2"
- id: sharpness
type: integer
description: "Current sharpness value, -2 to 8"
- id: alarm_state
type: enum
values: [Fatal, Error, Alert, Warning, Ok]
- id: network_state
type: enum
values: [CONNECTED, DISCONNECTED]
- id: shutter_position
type: enum
values: [Open, Closed]
- id: shutter_target
type: enum
values: [Open, Closed]
- id: zoom_position
type: integer
- id: focus_position
type: integer
- id: lensshift_horizontal
type: integer
- id: lensshift_vertical
type: integer
- id: orientation
type: enum
values: [DESKTOP_FRONT, DESKTOP_REAR, CEILING_FRONT, CEILING_REAR]
- id: scaling_mode
type: enum
values: [Fill, OneToOne, FillScreen, Stretch]
- id: temperatures
type: dictionary
description: "Temperature readings keyed by sensor name via environment.getcontrolblocks"
- id: fan_speeds
type: dictionary
description: "Fan speed readings keyed by sensor name via environment.getcontrolblocks"
Variables
variables:
- id: image_brightness
property: image.brightness
type: float
min: -1
max: 1
step: 0.01
- id: image_contrast
property: image.contrast
type: float
min: 0
max: 2
step: 0.01
- id: image_gamma
property: image.gamma
type: float
min: 1
max: 3
step: 0.1
- id: image_saturation
property: image.saturation
type: float
min: 0
max: 2
step: 0.01
- id: image_sharpness
property: image.sharpness
type: integer
min: -2
max: 8
step: 1
- id: illumination_laser_power
property: illumination.sources.laser.power
type: float
description: "Target power in percent; min/max dynamic"
- id: dmx_start_channel
property: dmx.startchannel
type: integer
min: 1
max: 512
Events
events:
- id: property_changed
method: property.changed
description: "Pushed when a subscribed property value changes. Params contain array of property/value pairs."
- id: signal_callback
method: signal.callback
description: "Pushed when a subscribed signal fires. Params contain array of signal/argument pairs."
- id: model_updated
signal: modelupdated
description: "Fired when the object structure changes (objects added or removed)."
Macros
# UNRESOLVED: no multi-step macro sequences explicitly documented in source
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source mentions verifying projector state before power commands and best practice
# of waiting for property.set confirmation before re-setting, but no explicit safety interlocks documented.
Notes
- All commands use JSON-RPC 2.0 format over both TCP and serial connections. Same command set regardless of transport.
- Source names must be translated to object names by removing non-word characters and lowercasing (e.g. "DisplayPort 1" → "displayport1").
- File uploads (warp grids, blend masks, black level masks) use HTTP POST to
/api/...endpoints. Supported formats: PNG (up to 16-bit), JPEG, TIFF. Grayscale only; color images use blue channel. property.setbest practice: wait for confirmation before setting the same property again to avoid flooding.- ECO mode wakeup via serial requires sending ASCII
:POWR1\r. - Authentication is optional; only required for elevated access levels beyond normal end-user.
- API is dynamic — actual available methods/properties depend on projector model and connected peripherals. Use
introspectto discover the full API at runtime. - Warp file format is compatible with Barco MCM500/400.
Provenance
source_domains:
- audiogeneral.com
- docs
source_urls:
- "https://www.audiogeneral.com/barco/UDX%20Series/JSON_ReferenceGuide.pdf"
retrieved_at: 2026-05-14T11:52:47.997Z
last_checked_at: 2026-06-02T21:40:40.955Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:40:40.955Z
matched_actions: 58
action_count: 58
confidence: medium
summary: "All 58 spec actions traced to source. (7 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "no multi-step macro sequences explicitly documented in source"
- "source mentions verifying projector state before power commands and best practice"
- "firmware version compatibility not stated in source"
- "exact model differences (W12 vs W14 vs W18) not specified — source lists vary by projector model"
- "HTTP file endpoint authentication requirements not stated"
- "property.get/property.set payload size limits not stated"
- "maximum number of concurrent subscriptions not stated"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0