Summary
Barco Pulse series projectors (F80Q9, F90 4K13, W13) controlled via JSON-RPC 2.0 over TCP/IP (port 9090) or RS-232 serial. Supports power management, source selection, illumination/laser power control, picture adjustments (brightness, contrast, gamma, saturation, sharpness), warp/blend/blacklevel processing, optics (zoom, focus, lens shift, shutter), DMX, and environmental monitoring.
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
description: Authentication via JSON-RPC method "authenticate" with code parameter. Only required for elevated access levels; normal end-user access can skip auth.
Traits
traits:
- powerable # system.poweron / system.poweroff
- queryable # property.get for all readable properties
- routable # image.window.main.source selection, image.source.list
- levelable # brightness, contrast, gamma, saturation, sharpness, laser 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: set_property
label: Set Property
kind: action
method: property.set
params:
- name: property
type: string
description: "Dot-notation property name, e.g. image.window.main.source"
- name: value
type: any
description: "Value to set; type depends on property"
- id: get_property
label: Get Property
kind: query
method: property.get
params:
- name: property
type: string
description: "Dot-notation property name"
- name: id
type: integer
required: false
description: "Request identifier"
- id: subscribe_property
label: Subscribe to Property Changes
kind: action
method: property.subscribe
params:
- name: property
type: string
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
description: "Property name or array of property names"
- id: signal_subscribe
label: Subscribe to Signal
kind: action
method: signal.subscribe
params:
- name: signal
type: string
description: "Signal name or array of signal names"
- id: signal_unsubscribe
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 Object Tree
kind: query
method: introspect
params:
- name: object
type: string
required: false
description: "Object name in dot notation; empty introspects everything"
- name: recursive
type: boolean
required: false
description: "If false, only list object names one level deep"
- 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 Connectors for Source
kind: query
method: "image.source.{sourceObjectName}.listconnectors"
params:
- name: sourceObjectName
type: string
description: "Source name converted to lowercase with non-word chars removed, e.g. displayport1"
- id: set_active_source
label: Set Active Source
kind: action
method: property.set
params:
- name: property
type: string
description: "image.window.main.source"
- name: value
type: string
description: "Source name from image.source.list, e.g. DisplayPort 1, HDMI"
- id: set_illumination_power
label: Set Illumination Laser Power
kind: action
method: property.set
params:
- name: property
type: string
description: "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
description: "image.brightness"
- name: value
type: float
description: "Normalized value, -1 to 1, default 0"
- id: set_contrast
label: Set Contrast
kind: action
method: property.set
params:
- name: property
type: string
description: "image.contrast"
- name: value
type: float
description: "Normalized value, 0 to 2, default 1"
- id: set_gamma
label: Set Gamma
kind: action
method: property.set
params:
- name: property
type: string
description: "image.gamma"
- name: value
type: float
description: "Value 1 to 3, default 2.2"
- id: set_saturation
label: Set Saturation
kind: action
method: property.set
params:
- name: property
type: string
description: "image.saturation"
- name: value
type: float
description: "Normalized value, 0 to 2, default 1"
- id: set_sharpness
label: Set Sharpness
kind: action
method: property.set
params:
- name: property
type: string
description: "image.sharpness"
- name: value
type: integer
description: "Value -2 to 8"
- id: set_orientation
label: Set Orientation
kind: action
method: property.set
params:
- name: property
type: string
description: "image.orientation"
- name: value
type: string
description: "One of 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
description: "image.window.main.scalingmode"
- name: value
type: string
description: "One of Fill, OneToOne, FillScreen, Stretch"
- id: set_warp_enable
label: Enable/Disable Warp
kind: action
method: property.set
params:
- name: property
type: string
description: "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
description: "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
description: "image.processing.warp.file.selected"
- name: value
type: string
description: "Filename of uploaded warp grid"
- id: set_blend_enable
label: Enable/Disable Blend Mask
kind: action
method: property.set
params:
- name: property
type: string
description: "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
description: "image.processing.blend.file.selected"
- name: value
type: string
description: "Filename of uploaded blend mask"
- id: set_blacklevel_enable
label: Enable/Disable Black Level Correction
kind: action
method: property.set
params:
- name: property
type: string
description: "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
description: "image.processing.blacklevel.file.selected"
- name: value
type: string
description: "Filename of uploaded black level mask"
- id: set_shutter_position
label: Set Shutter Position
kind: action
method: property.set
params:
- name: property
type: string
description: "optics.shutter.position"
- name: value
type: string
description: "One of Open, Closed"
- id: set_zoom
label: Set Zoom Position
kind: action
method: property.set
params:
- name: property
type: string
description: "optics.zoom.position"
- name: value
type: integer
- id: set_focus
label: Set Focus Position
kind: action
method: property.set
params:
- name: property
type: string
description: "optics.focus.position"
- name: value
type: integer
- id: set_lens_shift_horizontal
label: Set Horizontal Lens Shift
kind: action
method: property.set
params:
- name: property
type: string
description: "optics.lensshift.horizontal.position"
- name: value
type: integer
- id: set_lens_shift_vertical
label: Set Vertical Lens Shift
kind: action
method: property.set
params:
- name: property
type: string
description: "optics.lensshift.vertical.position"
- name: value
type: integer
- id: set_standby_enable
label: Enable/Disable Standby State
kind: action
method: property.set
params:
- name: property
type: string
description: "system.standby.enable"
- name: value
type: boolean
- id: set_eco_enable
label: Enable/Disable ECO State
kind: action
method: property.set
params:
- name: property
type: string
description: "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
description: "dmx.mode"
- name: value
type: string
- id: set_dmx_start_channel
label: Set DMX Start Channel
kind: action
method: property.set
params:
- name: property
type: string
description: "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
description: "dmx.shutdown"
- name: value
type: boolean
- 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: environment_get_control_blocks
label: Get Environment Control Blocks
kind: query
method: environment.getcontrolblocks
params:
- name: type
type: string
description: "Sensor type: Sensor, Filter, Controller, Actuator, Alarm, GenericBlock"
- name: valuetype
type: string
description: "Value type: Temperature, Speed, PWM, Voltage, Current, Power, etc."
- id: environment_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_component_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: illumination_clo_engage
label: Engage CLO
kind: action
method: illumination.clo.engage
params: []
- id: illumination_laser_get_serial
label: Get Laser Serial Number
kind: query
method: illumination.laser.getserialnumber
params: []
- id: led_blink
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: eco_wakeup_serial
label: ECO Wakeup via Serial
kind: action
transport: serial
description: "Send ASCII :POWR1\\r over RS-232 to wake from ECO mode"
params: []
- id: image_color_copy_preset
label: Copy Color Preset to Custom
kind: action
method: image.color.p7.custom.copypresettocustom
params:
- name: presetname
type: string
- id: image_color_reset_preset
label: Reset Color Preset
kind: action
method: image.color.p7.custom.resetpreset
params:
- name: presetname
type: string
- id: image_color_reset_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: []
Feedbacks
feedbacks:
- id: system_state
type: enum
values: [boot, eco, standby, ready, conditioning, "on", deconditioning, service, error]
property: system.state
description: "Current projector operating state"
- id: illumination_state
type: enum
values: [On, Off]
property: illumination.state
description: "Illumination on/off state"
- id: laser_power
type: float
property: illumination.sources.laser.power
description: "Current laser power level in percent"
- id: laser_min_power
type: float
property: illumination.sources.laser.minpower
description: "Minimum laser power in percent"
- id: laser_max_power
type: float
property: illumination.sources.laser.maxpower
description: "Maximum laser power in percent"
- id: active_source
type: string
property: image.window.main.source
description: "Currently active source name"
- id: brightness
type: float
property: image.brightness
description: "Brightness value -1 to 1"
- id: contrast
type: float
property: image.contrast
description: "Contrast value 0 to 2"
- id: gamma
type: float
property: image.gamma
description: "Gamma value 1 to 3"
- id: saturation
type: float
property: image.saturation
description: "Saturation value 0 to 2"
- id: sharpness
type: integer
property: image.sharpness
description: "Sharpness value -2 to 8"
- 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: shutter_target
type: enum
values: [Open, Closed]
property: optics.shutter.target
- 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: network_state
type: enum
values: [CONNECTED, DISCONNECTED]
property: network.device.lan.state
- id: alarm_state
type: enum
values: [Fatal, Error, Alert, Warning, Ok]
property: environment.alarmstate
description: "Current alarm severity"
- id: dmx_mode
type: string
property: dmx.mode
- id: dmx_start_channel
type: integer
property: dmx.startchannel
- id: connector_detected_signal
type: object
property: "image.connector.{name}.detectedsignal"
description: "Signal info for a connector: active, name, resolution, frequency, color_space, etc."
- id: warp_enable
type: boolean
property: image.processing.warp.enable
- id: warp_file_selected
type: string
property: image.processing.warp.file.selected
Variables
variables:
- id: laser_power
property: illumination.sources.laser.power
type: float
min: 0
max: 100
description: "Laser power target in percent"
- id: brightness
property: image.brightness
type: float
min: -1
max: 1
precision: 0.01
description: "Image brightness offset, 0 is default"
- id: contrast
property: image.contrast
type: float
min: 0
max: 2
precision: 0.01
description: "Image contrast gain, 1 is default"
- id: gamma
property: image.gamma
type: float
min: 1
max: 3
precision: 0.1
description: "Image gamma, default 2.2"
- id: saturation
property: image.saturation
type: float
min: 0
max: 2
precision: 0.01
description: "Color saturation, 1 is default"
- id: sharpness
property: image.sharpness
type: integer
min: -2
max: 8
description: "Image sharpness"
- id: zoom_position
property: optics.zoom.position
type: integer
description: "Zoom position"
- id: focus_position
property: optics.focus.position
type: integer
description: "Focus position"
- id: lens_shift_h
property: optics.lensshift.horizontal.position
type: integer
description: "Horizontal lens shift"
- id: lens_shift_v
property: optics.lensshift.vertical.position
type: integer
description: "Vertical lens shift"
- 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: "Triggered when object structure changes (objects added or removed)"
Macros
# UNRESOLVED: no multi-step macro sequences explicitly described in source
Safety
confirmation_required_for: []
interlocks:
- description: "Verify projector state is standby or ready before issuing power on"
applies_to: [system_poweron]
- description: "Verify projector state is on before issuing power off"
applies_to: [system_poweroff]
# UNRESOLVED: source does not describe explicit safety interlock sequences beyond good-practice state checks
Notes
- All commands use JSON-RPC 2.0 framing. Parameter order is insignificant.
- Source names vary by projector model; always query
image.source.listbefore setting. - Source-to-object-name mapping: strip non-word chars and lowercase (e.g. "DisplayPort 1" → "displayport1").
- Best practice: wait for
property.setconfirmation before re-setting same property. - File upload (warp grids, blend masks, black level masks) via HTTP POST to
http://{projector-ip}/api/{endpoint}. - ECO mode wakeup via serial: send ASCII
:POWR1\r. - API is partially dynamic — introspection (
introspectmethod) is the authoritative way to discover available objects/properties for a specific unit and configuration. - Connector signal info includes detailed timing: resolution, sync, frequency, color space, chroma sampling, gamma type, color primaries.
Provenance
source_domains:
- audiogeneral.com
- docs
source_urls:
- "https://www.audiogeneral.com/barco/UDX%20Series/JSON_ReferenceGuide.pdf"
retrieved_at: 2026-05-14T11:45:24.811Z
last_checked_at: 2026-06-02T21:49:55.511Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:49:55.511Z
matched_actions: 54
action_count: 54
confidence: medium
summary: "All 54 spec actions traced to source. (8 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "no multi-step macro sequences explicitly described in source"
- "source does not describe explicit safety interlock sequences beyond good-practice state checks"
- "firmware version compatibility not stated in source"
- "exact laser power range per model not stated (min/max are dynamic, lens-dependent)"
- "HTTP file transfer endpoint authentication not specified"
- "exact available sources and connectors per model variant not listed"
- "warp file format details only referenced as \"same as MCM500/400\""
- "lens position integer ranges not stated"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0