Summary
Barco Pulse projector control via the Pulse API, a JSON-RPC 2.0 service reachable over TCP/IP (port 9090), RS-232 serial (19200 baud), and HTTP file endpoints. Covers power, source selection, illumination/laser power, image picture settings, warp/blend/black-level file handling, optics, DMX, and environment telemetry.
Transport
protocols:
- tcp
- serial
- http
addressing:
port: 9090
base_url: "http://{projector_address}/api"
serial:
baud_rate: 19200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: passcode # source documents an `authenticate` request with a `code`; optional (skippable for normal end-user access)
Traits
traits:
- powerable # inferred: system.poweron / system.poweroff present
- queryable # inferred: property.get and many list/status queries present
- levelable # inferred: brightness/contrast/gamma/saturation/sharpness/laser power controls present
- routable # inferred: image.window.main.source selection present
Actions
- id: system_poweron
label: Power On Projector
kind: action
command: '{"jsonrpc": "2.0", "method": "system.poweron"}'
params: []
- id: system_poweroff
label: Power Off Projector
kind: action
command: '{"jsonrpc": "2.0", "method": "system.poweroff"}'
params: []
- id: eco_wake_serial
label: Wake From ECO Mode Over Serial
kind: action
command: ':POWR1\r'
params: []
- id: authenticate
label: Authenticate Session
kind: action
command: '{"jsonrpc": "2.0", "method": "authenticate", "params": {"code": 98765}}'
params:
- name: code
type: integer
description: Secret pass code that sets the user access level
- id: property_set
label: Set Property Value
kind: action
command: '{"jsonrpc": "2.0", "method": "property.set", "params": {"property": "{property}", "value": {value}}}'
params:
- name: property
type: string
description: Dot-notation property name (e.g. image.brightness)
- name: value
type: any
description: Value to assign; type and range depend on the target property
- id: property_get
label: Get Property Value
kind: query
command: '{"jsonrpc": "2.0", "method": "property.get", "params": {"property": "{property}"}}'
params:
- name: property
type: string
description: Dot-notation property name
- id: property_get_multiple
label: Get Multiple Property Values
kind: query
command: '{"jsonrpc": "2.0", "method": "property.get", "params": {"property": ["{property1}", "{property2}"]}}'
params:
- name: properties
type: array
description: Array of dot-notation property names
- id: property_subscribe
label: Subscribe To Property Changes
kind: action
command: '{"jsonrpc": "2.0", "method": "property.subscribe", "params": {"property": "{property}"}}'
params:
- name: property
type: string
description: Dot-notation property name, or an array of names
- id: property_unsubscribe
label: Unsubscribe From Property Changes
kind: action
command: '{"jsonrpc": "2.0", "method": "property.unsubscribe", "params": {"property": "{property}"}}'
params:
- name: property
type: string
description: Dot-notation property name, or an array of names
- id: signal_subscribe
label: Subscribe To Signal
kind: action
command: '{"jsonrpc": "2.0", "method": "signal.subscribe", "params": {"signal": "{signal}"}}'
params:
- name: signal
type: string
description: Signal name, or an array of names
- id: signal_unsubscribe
label: Unsubscribe From Signal
kind: action
command: '{"jsonrpc": "2.0", "method": "signal.unsubscribe", "params": {"signal": "{signal}"}}'
params:
- name: signal
type: string
description: Signal name, or an array of names
- id: introspect
label: Introspect Object Metadata
kind: query
command: '{"jsonrpc": "2.0", "method": "introspect", "params": {"object": "{object}", "recursive": true}}'
params:
- name: object
type: string
description: Object name in dot notation; empty/omitted introspects everything
- name: recursive
type: boolean
description: If false, only one level of object names is listed
- id: image_source_list
label: List Available Sources
kind: query
command: '{"jsonrpc": "2.0", "method": "image.source.list"}'
params: []
- id: image_connector_list
label: List Connectors
kind: query
command: '{"jsonrpc": "2.0", "method": "image.connector.list"}'
params: []
- id: image_source_listconnectors
label: List Connectors For Source
kind: query
command: '{"jsonrpc": "2.0", "method": "image.source.{source}.listconnectors"}'
params:
- name: source
type: string
description: Source object name; derived by stripping non-word chars and lowercasing the source name (e.g. displayport1)
- id: environment_getcontrolblocks
label: Get Environment Control Blocks
kind: query
command: '{"jsonrpc": "2.0", "method": "environment.getcontrolblocks", "params": {"type": "{type}", "valuetype": "{valuetype}"}}'
params:
- name: type
type: string
description: Sensor block type (Sensor, Filter, Controller, Actuator, Alarm, GenericBlock)
- name: valuetype
type: string
description: Value type (Temperature, Speed, Voltage, Current, Power, PWM, Humidity, etc.)
- id: environment_getalarminfo
label: Get Alarm Info
kind: query
command: '{"jsonrpc": "2.0", "method": "environment.getalarminfo"}'
params: []
- id: firmware_listcomponents
label: List Firmware Components
kind: query
command: '{"jsonrpc": "2.0", "method": "firmware.listcomponents"}'
params: []
- id: firmware_listcomponentversionstatus
label: List Firmware Version Status
kind: query
command: '{"jsonrpc": "2.0", "method": "firmware.listcomponentversionstatus"}'
params: []
- id: firmware_schedulecomponentupgrade
label: Schedule Component Upgrade At Reboot
kind: action
command: '{"jsonrpc": "2.0", "method": "firmware.schedulecomponentupgrade"}'
params: []
- id: illumination_clo_engage
label: Engage CLO At Current Light Level
kind: action
command: '{"jsonrpc": "2.0", "method": "illumination.clo.engage"}'
params: []
- id: illumination_laser_getserialnumber
label: Get Laser Serial Number
kind: query
command: '{"jsonrpc": "2.0", "method": "illumination.laser.getserialnumber"}'
params: []
- id: image_color_p7_custom_copypresettocustom
label: Copy Color Preset To Custom
kind: action
command: '{"jsonrpc": "2.0", "method": "image.color.p7.custom.copypresettocustom", "params": {"presetname": "{presetname}"}}'
params:
- name: presetname
type: string
description: Name of the preset to copy
- id: image_color_p7_custom_resetpreset
label: Reset Color Preset To Defaults
kind: action
command: '{"jsonrpc": "2.0", "method": "image.color.p7.custom.resetpreset", "params": {"presetname": "{presetname}"}}'
params:
- name: presetname
type: string
description: Name of the preset to reset
- id: image_color_p7_custom_resettonative
label: Reset Color To Native
kind: action
command: '{"jsonrpc": "2.0", "method": "image.color.p7.custom.resettonative"}'
params: []
- id: image_color_rgbmode_nextrgbmode
label: Cycle To Next RGB Mode
kind: action
command: '{"jsonrpc": "2.0", "method": "image.color.rgbmode.nextrgbmode"}'
params: []
- id: ledctrl_blink
label: Blink LED
kind: action
command: '{"jsonrpc": "2.0", "method": "ledctrl.blink", "params": {"led": "{led}", "color": "{color}", "period": 42}}'
params:
- name: led
type: string
description: LED identifier (e.g. systemstatus)
- name: color
type: string
description: LED color (e.g. red)
- name: period
type: integer
description: Blink period
- id: warp_file_upload
label: Upload Warp Grid File
kind: action
command: 'POST http://{projector_address}/api/image/processing/warp/file/transfer (multipart form field: file=@warp.xml)'
params:
- name: file
type: file
description: Warp grid XML file (MCM500/400 compatible format)
- id: warp_file_download
label: Download Warp Grid File
kind: query
command: 'GET http://{projector_address}/api/image/processing/warp/file/transfer'
params: []
- id: blend_mask_upload
label: Upload Blend Mask Image
kind: action
command: 'POST http://{projector_address}/api/image/processing/blend/file/transfer (multipart form field: file=@mask.png)'
params:
- name: file
type: file
description: Grayscale blend mask (PNG up to 16 bit, JPEG, or TIFF); resolution must match blend layer
- id: blacklevel_mask_upload
label: Upload Black Level Mask Image
kind: action
command: 'POST http://{projector_address}/api/image/processing/blacklevel/file/transfer (multipart form field: file=@blacklevel.png)'
params:
- name: file
type: file
description: Grayscale black-level mask (PNG up to 16 bit, JPEG, or TIFF); resolution must match black-level layer
Feedbacks
- id: system_state
type: enum
values: [boot, eco, standby, ready, conditioning, on, service, deconditioning, error]
- id: illumination_state
type: enum
values: [On, Off]
- id: active_source
type: string
- id: illumination_power
type: float
description: Current laser/illumination power level in percent
- 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: connector_detectedsignal
type: object
description: Per-connector detected signal info (active, resolution, timings, color, etc.)
- id: property_changed_notification
type: object
description: Unsolicited notification carrying an array of property/value pairs
- id: signal_callback_notification
type: object
description: Unsolicited notification carrying an array of signal/argument pairs
Variables
- id: illumination_sources_laser_power
type: float
access: read_write
unit: percent
description: Target laser power level (min/max dynamic; read minpower/maxpower properties)
- id: image_window_main_source
type: string
access: read_write
description: Source displayed in the main window
- id: image_window_main_scalingmode
type: enum
access: read_write
values: [Fill, OneToOne, FillScreen, Stretch]
- id: image_window_main_position
type: object
access: read_write
description: Window position with x and y integer fields
- id: image_window_main_size
type: object
access: read_write
description: Window size with width and height integer fields
- id: image_brightness
type: float
access: read_write
min: -1
max: 1
description: Normalized brightness/offset (0 default, 1 = 100% offset)
- id: image_contrast
type: float
access: read_write
min: 0
max: 2
description: Normalized contrast/gain (1 default)
- id: image_gamma
type: float
access: read_write
min: 1
max: 3
description: Image gamma (default 2.2)
- id: image_saturation
type: float
access: read_write
min: 0
max: 2
description: Normalized color saturation (1 default)
- id: image_sharpness
type: integer
access: read_write
min: -2
max: 8
description: Normalized image sharpness
- id: image_orientation
type: enum
access: read_write
values: [DESKTOP_FRONT, DESKTOP_REAR, CEILING_FRONT, CEILING_REAR]
- id: image_processing_warp_enable
type: boolean
access: read_write
description: Enable/disable all warp functions
- id: image_processing_warp_file_enable
type: boolean
access: read_write
description: Enable/disable file warp
- id: image_processing_warp_file_selected
type: string
access: read_write
description: Currently selected warp file
- id: image_processing_blend_file_enable
type: boolean
access: read_write
description: Enable/disable file blend
- id: image_processing_blend_file_selected
type: array
access: read_write
description: Currently selected blend files
- id: image_processing_blacklevel_file_enable
type: boolean
access: read_write
description: Enable/disable black-level correction
- id: image_processing_blacklevel_file_selected
type: string
access: read_write
description: Currently selected black-level file
- id: dmx_mode
type: string
access: read_write
description: Current DMX mode
- id: dmx_startchannel
type: integer
access: read_write
min: 1
max: 512
description: DMX start channel
- id: dmx_shutdown
type: boolean
access: read_write
description: Shutdown enabled or not
- id: optics_shutter_target
type: enum
access: read_write
values: [Open, Closed]
- id: system_standby_enable
type: boolean
access: read_write
description: Enable/disable use of the standby state
- id: system_eco_enable
type: boolean
access: read_write
description: Enable/disable use of the ECO state
Events
- id: property_changed
description: Server-pushed notification when a subscribed property value changes; carries an array of property/value pairs
- id: signal_callback
description: Server-pushed notification when a subscribed signal is emitted; carries an array of signal/argument pairs
- id: modelupdated
description: Signal triggered when the object structure changes (objects added or removed)
- id: introspect_objectchanged
description: Callback reporting an introspected object was added or removed, with the object name and an isnew flag
Macros
macros: []
Safety
confirmation_required_for: []
interlocks: []
Notes
- Source/entity mismatch (critical): see the UNRESOLVED block in the Summary. The source is the Barco Pulse projector API; it does not describe a "Fiberlink 2" device. Reconcile before publishing.
- The API is JSON-RPC 2.0. Request parameters are passed by name and are order-independent. Notifications carry no
idand must not be answered. - Best practice from source: wait for the
property.setconfirmation before setting the same property again; repeated sets without confirmation may flood the server. - Power on/off are idempotent in transition states. Source recommends verifying
system.stateisstandby/readybeforesystem.poweron, andonbeforesystem.poweroff. - ECO-mode wake requires one of: wake-on-LAN (MAC address), remote/keypad power button, or the serial ASCII sequence
:POWR1\r. - File endpoints: warp grid format matches MCM500/400. Blend/black-level masks are grayscale (8 or 16 bit); color images accepted but only the blue channel is used. Mask resolution must match the projector's blend/black-level layer (WUXGA 1920x1200; WQXGA/4K 1280x800; 4K Cinemascope 1280x540).
- Parts of the API are dynamic and depend on the fitted peripherals (e.g. motorized lens, DMX channel mode). Introspection is the authoritative way to discover the exact API of a specific unit.
Provenance
source_domains:
- audiogeneral.com
source_urls:
- "https://www.audiogeneral.com/barco/UDX%20Series/JSON_ReferenceGuide.pdf"
retrieved_at: 2026-07-26T10:34:12.995Z
last_checked_at: 2026-08-05T08:01:15.465Z
Verification Summary
verdict: verified
checked_at: 2026-08-05T08:01:15.465Z
matched_actions: 31
action_count: 31
confidence: medium
summary: "All 31 spec actions match documented JSON-RPC methods, file endpoints, and serial wake sequence; transport params (port 9090, 19200 8N1) verified verbatim. (9 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- dmx.listchannels
- dmx.listmodes
- "SOURCE/ENTITY MISMATCH. The source artifact is named"
- "no specific projector model number stated (only \"Pulse\" family)."
- "no firmware version compatibility stated in source."
- "no multi-step command sequences explicitly described as macros in the source."
- "specific projector model number not stated (only \"Pulse\" family)."
- "firmware version compatibility not stated."
- "protocol/API version number not stated."
- "laser power min/max are dynamic per device; not fixed in source."
- "no explicit safety interlocks or power-sequencing locks stated beyond advisory best-practice notes."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0