Summary
Control spec for Barco Pulse projectors using JSON-RPC 2.0 over TCP/IP (port 9090) and RS-232 serial. Covers power management, source selection, image adjustment (brightness, contrast, saturation, gamma), laser illumination control, optics (focus, zoom, lens shift, shutter), warping, blending, black level correction, DMX, environmental monitoring, and notification management. File transfers (firmware, warp grids, blend masks, EDID, test patterns) use HTTP endpoints at /api/ paths.
Transport
protocols:
- tcp
- serial
- http
addressing:
port: 9090
base_url: "http://{projector_ip}/api/"
serial:
baud_rate: 19200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: code
description: >-
Passcode-based authentication for elevated access levels.
End-user access does not require authentication.
Request: {"jsonrpc": "2.0", "method": "authenticate", "params": {"code": <passcode>}}
Response: {"jsonrpc": "2.0", "result": true, "id": <id>}
Traits
traits:
- powerable
- queryable
- levelable
- routable
Actions
actions:
- id: system_poweron
label: Power On
kind: action
command:
method: system.poweron
params: []
notes: Returns null result. Verify state is standby or ready before issuing.
- id: system_poweroff
label: Power Off
kind: action
command:
method: system.poweroff
params: []
notes: Returns null result. Verify state is on before issuing.
- id: system_reboot
label: Reboot
kind: action
command:
method: system.reboot
params: []
notes: Powers off the projector first then reboots.
- id: system_gotoeco
label: Go to ECO Mode
kind: action
command:
method: system.gotoeco
params: []
- id: system_gotoready
label: Go to Ready Mode
kind: action
command:
method: system.gotoready
params: []
- id: system_reset
label: Reset Domains
kind: action
command:
method: system.reset
params:
- name: domains
type: array
description: List of reset domain enums
values:
- ImageConnector
- ImageSource
- ImageFeatures
- ImageRealColor
- ImageWarp
- ImageBlend
- ImageOrientation
- ImageResolution
- ImageStereo
- ImageDisplay
- ImageTestPattern
- ImageConvergence
- UserInterface
- Optics
- Illumination
- Network
- Screen
- System
- LightMeasurement
- Dmx
- id: system_resetall
label: Reset All Domains
kind: action
command:
method: system.resetall
params: []
- id: authenticate
label: Authenticate
kind: action
command:
method: authenticate
params:
- name: code
type: integer
description: Secret passcode for elevated access level
- id: property_set
label: Set Property
kind: action
command:
method: property.set
params:
- name: property
type: string
description: Property name in dot notation
- name: value
type: any
description: Value to set
notes: Wait for confirmation before setting the same property again.
- id: property_get
label: Get Property
kind: action
command:
method: property.get
params:
- name: property
type: string
description: Property name or array of property names
- id: property_subscribe
label: Subscribe to Property
kind: action
command:
method: property.subscribe
params:
- name: property
type: string
description: Property name or array of property names
- id: property_unsubscribe
label: Unsubscribe from Property
kind: action
command:
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
command:
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
command:
method: signal.unsubscribe
params:
- name: signal
type: string
description: Signal name or array of signal names
- id: introspect
label: Introspect Object
kind: action
command:
method: introspect
params:
- name: object
type: string
description: Object name in dot notation (empty for root)
- name: recursive
type: boolean
description: If false only list object names one level deep
- id: select_source
label: Select Input Source
kind: action
command:
method: property.set
params:
- name: property
type: string
constant: "image.window.main.source"
- name: value
type: string
description: Source name from image.source.list (e.g. DisplayPort 1, HDMI, HDBaseT, SDI)
- id: image_source_list
label: List Available Sources
kind: action
command:
method: image.source.list
params: []
- id: image_connector_list
label: List Connectors
kind: action
command:
method: image.connector.list
params: []
- id: shutter_toggle
label: Toggle Shutter
kind: action
command:
method: optics.shutter.toggle
params: []
- id: eco_wake_serial
label: Wake from ECO via Serial
kind: action
command:
raw: ":POWR1\r"
params: []
notes: ASCII command sent over RS-232 only to wake from ECO mode. Alternatives include Wake-on-LAN or physical buttons.
- id: environment_getcontrolblocks
label: Get Environment Sensors
kind: action
command:
method: environment.getcontrolblocks
params:
- name: type
type: string
values: [Sensor, Filter, Controller, Actuator, Alarm, GenericBlock]
- name: valuetype
type: string
values: [Temperature, Speed, PWM, Voltage, Current, Power, Altitude, Pressure, Humidity, ADC, Coordinate, Peltier, Waveform, Average, Delay, Difference, Interpolation, Limit, Median, Noise, Weighting, Comparison, Threshold, Formula, Driver, PID, Mode, State, Pump, Resistance, Simulation, Constant, Manual, Range, Any]
- id: environment_getalarminfo
label: Get Alarm Info
kind: action
command:
method: environment.getalarminfo
params: []
- id: notification_list
label: List Active Notifications
kind: action
command:
method: notification.list
params: []
- id: notification_dismiss
label: Dismiss Notification
kind: action
command:
method: notification.dismiss
params:
- name: id
type: string
- name: response
type: string
values: [NONE, OK, CANCEL, IGNORE, YES, NO, SUPPRESS]
- id: notification_suppress
label: Suppress Notification Code
kind: action
command:
method: notification.suppress
params:
- name: code
type: string
- id: system_getidentification
label: Get Device Identification
kind: action
command:
method: system.getidentification
params: []
- id: system_getidentifications
label: Get All Identifications
kind: action
command:
method: system.getidentifications
params: []
- id: firmware_listcomponents
label: List Firmware Components
kind: action
command:
method: firmware.listcomponents
params: []
- id: firmware_listcomponentversionstatus
label: List Firmware Version Status
kind: action
command:
method: firmware.listcomponentversionstatus
params: []
- id: statistics_listcounters
label: List Statistics Counters
kind: action
command:
method: statistics.listcounters
params: []
- id: system_boards_getboardlist
label: Get Board List
kind: action
command:
method: system.boards.getboardlist
params: []
- id: system_boards_getboardinfo
label: Get Board Info
kind: action
command:
method: system.boards.getboardinfo
params:
- name: boardname
type: string
- id: system_activity
label: Signal User Activity
kind: action
command:
method: system.activity
params: []
notes: Resets timeout countdown timers.
- id: keydispatcher_sendclickevent
label: Send Key Click
kind: action
command:
method: keydispatcher.sendclickevent
params:
- name: key
type: string
values: [RC_SHUTTER_OPEN, RC_SHUTTER_CLOSE, RC_POWER_ON, RC_POWER_OFF, RC_OSD, RC_LCD, RC_PATTERN, RC_RGB, RC_ZOOM_PLUS, RC_ZOOM_MINUS, RC_SHIFT_LEFT, RC_SHIFT_UP, RC_SHIFT_RIGHT, RC_SHIFT_DOWN, RC_FOCUS_PLUS, RC_FOCUS_MINUS, RC_MENU, RC_DEFAULT, RC_BACK, RC_UP, RC_LEFT, RC_OK, RC_RIGHT, RC_DOWN, RC_ADDRESS, RC_INPUT, RC_MACRO, RC_1, RC_2, RC_3, RC_4, RC_5, RC_6, RC_7, RC_8, RC_9, RC_0, RC_ASTERISK, RC_NUMBER, KP_LEFT, KP_UP, KP_OK, KP_RIGHT, KP_DOWN, KP_MENU, KP_POWER, KP_BACK, KP_OSD, KP_LENS, KP_PATTERN, KP_SHUTTER, KP_INPUT, KP_STANDBY]
- id: image_testpattern_list
label: List Test Patterns
kind: action
command:
method: image.testpattern.list
params: []
- id: image_testpattern_setproperties
label: Set Test Pattern Properties
kind: action
command:
method: image.testpattern.setproperties
params:
- name: id
type: string
- name: properties
type: array
description: Array of {key, value} pairs
- id: image_window_list
label: List Windows
kind: action
command:
method: image.window.list
params: []
- id: network_list
label: List Network Devices
kind: action
command:
method: network.list
params: []
Feedbacks
feedbacks:
- id: system_state
type: enum
values: [boot, eco, standby, ready, conditioning, on, service, deconditioning, error]
property: system.state
- id: illumination_state
type: enum
values: ["On", "Off"]
property: illumination.state
- id: active_source
type: string
property: image.window.main.source
- id: laser_power
type: float
property: illumination.sources.laser.power
- id: laser_max_power
type: float
property: illumination.sources.laser.maxpower
- id: laser_min_power
type: float
property: illumination.sources.laser.minpower
- id: laser_power_limited
type: boolean
property: illumination.sources.laser.ispowerlimited
- id: laser_power_limit_reason
type: string
property: illumination.sources.laser.powerlimitreason
- id: brightness
type: float
property: image.brightness
constraints: {min: -1, max: 1, precision: 0.01}
- id: contrast
type: float
property: image.contrast
constraints: {min: 0, max: 2, precision: 0.01}
- id: saturation
type: float
property: image.saturation
constraints: {min: 0, max: 2, precision: 0.01}
- id: gamma
type: float
property: image.gamma
constraints: {min: 1, max: 3, precision: 0.1}
- id: sharpness
type: integer
property: image.sharpness
constraints: {min: -2, max: 8}
- id: intensity
type: float
property: image.intensity
constraints: {min: 0, max: 1, precision: 0.01}
- id: shutter_position
type: enum
values: [Open, Closed]
property: optics.shutter.position
- id: alarm_state
type: enum
values: [Fatal, Error, Alert, Warning, Ok]
property: environment.alarmstate
- id: firmware_version
type: string
property: system.firmwareversion
- id: model_name
type: string
property: system.modelname
- id: serial_number
type: string
property: system.serialnumber
- id: family_name
type: string
property: system.familyname
- id: article_number
type: string
property: system.articlenumber
- id: orientation
type: enum
values: [DESKTOP_FRONT, DESKTOP_REAR, CEILING_FRONT, CEILING_REAR]
property: image.orientation
- id: display_mode
type: enum
values: [Mono, AutoStereo, ActiveStereo, NightVision, IGPixelShift]
property: image.display.displaymode
- id: detected_signal
type: object
property: "image.connector.{name}.detectedsignal"
description: Returns active bool, resolution name, horizontal/vertical totals, frequencies, pixel rate, scan type, bits per component, color space, signal range, chroma sampling, gamma type
- id: eco_available
type: boolean
property: system.eco.available
- id: standby_available
type: boolean
property: system.standby.available
- id: network_state
type: enum
values: [CONNECTED, DISCONNECTED]
property: network.device.lan.state
- id: network_ip4config
type: object
property: network.device.lan.ip4config
description: Current IPv4 config with Address, Mask, Gateway, NameServers
- id: network_hwaddress
type: string
property: network.device.lan.hwaddress
- id: clo_state
type: enum
values: [Ok, TooDim, TooBright]
property: illumination.clo.state
- id: clo_availability
type: enum
values: [Available, SensorUnavailable, PendingWarmup, Unavailable, Unknown]
property: illumination.clo.availability
- id: license_valid
type: boolean
property: system.license.valid
- id: resolution
type: string
property: image.resolution.resolution
Variables
variables:
- id: image_brightness
property: image.brightness
type: float
min: -1
max: 1
precision: 0.01
access: rw
description: Normalized brightness/offset. 0 is default.
- id: image_contrast
property: image.contrast
type: float
min: 0
max: 2
precision: 0.01
access: rw
description: Normalized contrast/gain. 1 is default.
- id: image_saturation
property: image.saturation
type: float
min: 0
max: 2
precision: 0.01
access: rw
description: Normalized saturation. 1 is default.
- id: image_gamma
property: image.gamma
type: float
min: 1
max: 3
precision: 0.1
access: rw
description: Image gamma. Default is 2.2.
- id: image_sharpness
property: image.sharpness
type: integer
min: -2
max: 8
access: rw
- id: image_intensity
property: image.intensity
type: float
min: 0
max: 1
precision: 0.01
access: rw
- id: laser_power
property: illumination.sources.laser.power
type: float
access: rw
description: Target laser power in percent.
- id: window_source
property: image.window.main.source
type: string
access: rw
description: Active source name for main window.
- id: window_position
property: image.window.main.position
type: object
access: rw
description: "{x: int, y: int}"
- id: window_size
property: image.window.main.size
type: object
access: rw
description: "{width: int, height: int}"
- id: scaling_mode
property: image.window.main.scalingmode
type: enum
values: [Fill, OneToOne, FillScreen, Stretch]
access: rw
- id: warp_enable
property: image.processing.warp.enable
type: boolean
access: rw
description: Globally enable/disable warp.
- id: warp_file_enable
property: image.processing.warp.file.enable
type: boolean
access: rw
- id: warp_file_selected
property: image.processing.warp.file.selected
type: string
access: rw
description: Name of the selected warp grid file.
- id: blend_file_enable
property: image.processing.blend.file.enable
type: boolean
access: rw
- id: blend_file_selected
property: image.processing.blend.file.selected
type: string
access: rw
- id: blacklevel_file_enable
property: image.processing.blacklevel.file.enable
type: boolean
access: rw
- id: blacklevel_file_selected
property: image.processing.blacklevel.file.selected
type: string
access: rw
- id: orientation
property: image.orientation
type: enum
values: [DESKTOP_FRONT, DESKTOP_REAR, CEILING_FRONT, CEILING_REAR]
access: rw
- id: initial_state
property: system.initialstate
type: enum
values: [boot, eco, standby, ready, conditioning, on, service, deconditioning, error]
access: rw
description: State to transition to when unit starts.
- id: eco_enable
property: system.eco.enable
type: boolean
access: rw
- id: standby_enable
property: system.standby.enable
type: boolean
access: rw
- id: network_configuration
property: network.device.lan.configuration
type: enum
values: [AUTO, MANUAL]
access: rw
- id: network_ip4config_manual
property: network.device.lan.ip4configmanual
type: object
access: rw
description: "{Address, Mask, Gateway, NameServers}"
- id: dmx_artnet
property: dmx.artnet
type: boolean
access: rw
description: Enable/disable ArtNet.
- id: dmx_startchannel
property: dmx.startchannel
type: integer
min: 1
max: 512
access: rw
- id: dmx_shutdown
property: dmx.shutdown
type: boolean
access: rw
description: Enable/disable DMX shutdown.
- id: dmx_shutdowntimeout
property: dmx.shutdowntimeout
type: integer
access: rw
description: Shutdown timeout in minutes.
- id: stealth_mode
property: ui.stealthmode
type: enum
values: [Off, On]
access: rw
description: When on all controllable LEDs are switched off.
- id: testpattern_show
property: image.testpattern.show
type: boolean
access: rw
- id: testpattern_selected
property: image.testpattern.selected
type: string
access: rw
description: Unique ID of the selected pattern.
- id: clo_enable
property: illumination.clo.enable
type: boolean
access: rw
description: Enable constant light output.
- id: clo_scale
property: illumination.clo.scale
type: float
access: rw
description: Percentage to scale CLO setpoint by.
- id: clo_setpoint
property: illumination.clo.setpoint
type: float
access: rw
description: Target luminosity for CLO.
- id: display_desired_mode
property: image.display.desireddisplaymode
type: enum
values: [Mono, AutoStereo, ActiveStereo, NightVision, IGPixelShift]
access: rw
- id: blend_scurve
property: image.processing.blend.scurve
type: float
min: 1
max: 4
precision: 0.1
access: rw
- id: remotecontrol_address
property: remotecontrol.address
type: integer
min: 1
max: 31
access: rw
description: IR remote control address.
Events
events:
- id: property_changed
description: Fired when a subscribed property value changes
method: property.changed
payload:
property: "array of {property_name: value} objects"
- id: signal_callback
description: Fired when a subscribed signal triggers
method: signal.callback
payload:
signal: "array of {signal_name: {arg1: val1, ...}} objects"
- id: model_updated
description: Fired when API objects appear or disappear
signal: modelupdated
payload:
object: string
newobject: boolean
accesslevel: "enum [UNAUTHENTICATED_END_USER, END_USER, POWER_USER, SERVICE_PARTNER, MANUFACTURING, DEVELOPMENT, INACCESSIBLE]"
- id: notification_emitted
description: Fired when a new notification is emitted
signal: notification.emitted
payload:
notification: "object with severity, id, code, timestamp, message, timeout, actions"
- id: notification_dismissed
description: Fired when a notification is dismissed
signal: notification.dismissed
- id: system_performed
description: Fired when reset domains complete resetting
signal: system.performed
payload:
domains: "array of domain enum values"
- id: system_identificationchanged
description: Fired when an identification changes
signal: system.identificationchanged
- id: warp_file_listchanged
description: Fired when warp file list changes
signal: image.processing.warp.file.listchanged
- id: blend_file_listchanged
description: Fired when blend file list changes
signal: image.processing.blend.file.listchanged
- id: blacklevel_file_listchanged
description: Fired when black level file list changes
signal: image.processing.blacklevel.file.listchanged
- id: testpattern_added
description: Fired when a test pattern is added
signal: image.testpattern.added
- id: testpattern_removed
description: Fired when a test pattern is removed
signal: image.testpattern.removed
- id: testpattern_changed
description: Fired when a test pattern changes
signal: image.testpattern.changed
- id: network_added
description: Fired when a network device is added
signal: network.added
- id: network_removed
description: Fired when a network device is removed
signal: network.removed
Macros
# UNRESOLVED: no explicit multi-step macro sequences described in source
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source does not describe explicit safety interlock procedures.
# Source notes: good practice to verify projector state before power on/off.
# ECO mode wake requires special handling (WOL, serial :POWR1\r, or physical button).
Notes
- All commands use JSON-RPC 2.0 over both TCP (port 9090) and RS-232 serial. The same command set is available on both transports.
- Object and method names use lowercase dot notation (e.g.
image.brightness,system.state). - Properties are accessed via generic
property.get/property.set/property.subscribe/property.unsubscribemethods. Dedicated methods exist for listing operations (e.g.image.source.list,image.connector.list). - Property subscriptions deliver change notifications via
property.changedon the client. Initial values are NOT sent on subscribe; useproperty.getto read current value first. - Source selection generates two
property.changednotifications: one for deselection of old source (empty string value), one for selection of new source. property.setshould not be called repeatedly for the same property without waiting for confirmation, as this may flood the server and reduce performance.- The introspection API (
introspectmethod) allows runtime discovery of all available objects, properties, methods, and signals. Metadata includes type constraints (min, max, precision, step-size) for building UI controls. - Authentication is optional for end-user access; a passcode is required only for elevated access levels (power user, service, etc.). Access levels include: UNAUTHENTICATED_END_USER, END_USER, POWER_USER, SERVICE_PARTNER, MANUFACTURING, DEVELOPMENT, INACCESSIBLE.
- File transfers use HTTP POST (upload) and GET (download) at endpoints like
http://{ip}/api/image/processing/warp/file/transfer. Supported formats include PNG (up to 16-bit), JPEG, TIFF for blend/black level masks. - ECO mode wake requires Wake-on-LAN (MAC address), physical power button, or serial ASCII command
:POWR1\r. - The full property catalog is extensive (hundreds of properties). The introspect API should be used for complete runtime discovery. Key property groups: system, image, illumination, optics, network, environment, dmx, ui, statistics, notification.
- Connector signal detection (
image.connector.{name}.detectedsignal) returns detailed signal info including resolution, frequencies, color space, chroma sampling, and stereo mode. - The
environment.getcontrolblocksmethod provides access to temperature sensors, fan speeds, voltages, and other environmental data as a flat dictionary.
Provenance
source_domains:
- audiogeneral.com
source_urls:
- "https://www.audiogeneral.com/barco/UDX%20Series/JSON_ReferenceGuide.pdf"
retrieved_at: 2026-04-29T22:42:13.413Z
last_checked_at: 2026-06-02T21:49:53.131Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:49:53.131Z
matched_actions: 38
action_count: 38
confidence: medium
summary: "All 38 spec actions traced to source. (8 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "exact projector model names not stated in source; source refers generically to \"Pulse services\""
- "firmware version compatibility ranges not stated in source"
- "no explicit multi-step macro sequences described in source"
- "source does not describe explicit safety interlock procedures."
- "exact projector model names and hardware variants not stated in source"
- "maximum concurrent TCP/serial connection limits not stated"
- "JSON-RPC message size limits or fragmentation behavior not documented"
- "error recovery sequences and fault behavior not documented beyond error response objects"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0