Summary

Pulse API for Barco Aurora projector. JSON-RPC 2.0 over TCP port 9090 and serial (RS-232, 19200/8/N/1). Document covers power, input source selection, illumination, image settings (brightness/contrast/gamma/saturation/sharpness/orientation), warping, blending, black level, optics (shutter/zoom/focus/lensshift), environment sensors, DMX, firmware management, introspection, and signal subscriptions.

Transport

protocols:
  - tcp
  - serial
addressing:
  port: 9090
serial:
  baud_rate: 19200
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: optional  # UNRESOLVED: source describes optional opt-in authentication, not a required login

Traits

- powerable       # inferred from system.poweron / system.poweroff
- routable        # inferred from image.window.main.source switch examples
- queryable       # inferred from property.get / property.subscribe examples
- levelable       # inferred from illumination.sources.laser.power (settable)

Actions

- id: authenticate
  label: Authenticate (optional)
  kind: action
  command: '{"jsonrpc": "2.0", "method": "authenticate", "params": {"id": 1, "code": 98765}, "id": 1}'
  params:
    - name: code
      type: integer
      description: Secret pass code required only for access levels above normal end user
- id: system_poweron
  label: Power On
  kind: action
  command: '{"jsonrpc": "2.0", "method": "system.poweron", "params": {"id": 3, "property": "system.state"}, "id": 3}'
  params: []
- id: system_poweroff
  label: Power Off
  kind: action
  command: '{"jsonrpc": "2.0", "method": "system.poweroff", "params": {"id": 4, "property": "system.state"}, "id": 4}'
  params: []
- id: property_set
  label: Set Property
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.set", "params": {"property": "objectname.propertyname", "value": 100}, "id": 3}'
  params:
    - name: property
      type: string
      description: Dot-notation property path (e.g. image.window.main.source)
    - name: value
      type: string
      description: Value to assign (type per property schema)
- id: property_get
  label: Get Property
  kind: query
  command: '{"jsonrpc": "2.0", "method": "property.get", "params": {"property": "objectname.propertyname"}, "id": 4}'
  params:
    - name: property
      type: string
      description: Dot-notation property path
- id: property_get_multi
  label: Get Multiple Properties
  kind: query
  command: '{"jsonrpc": "2.0", "method": "property.get", "params": {"property": ["image.brightness", "image.contrast"]}, "id": 5}'
  params:
    - name: property
      type: array
      description: Array of dot-notation property paths
- id: property_subscribe
  label: Subscribe to Property Changes
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.subscribe", "params": {"property": "image.brightness"}, "id": 6}'
  params:
    - name: property
      type: string
      description: Single dot-notation property path or array of paths
- id: property_unsubscribe
  label: Unsubscribe from Property
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.unsubscribe", "params": {"property": "image.brightness"}, "id": 8}'
  params:
    - name: property
      type: string
      description: Single dot-notation property path or array of paths
- id: signal_subscribe
  label: Subscribe to Signal
  kind: action
  command: '{"jsonrpc": "2.0", "method": "signal.subscribe", "params": {"signal": "modelupdated"}, "id": 10}'
  params:
    - name: signal
      type: string
      description: Signal name or array of signal names
- id: signal_unsubscribe
  label: Unsubscribe from Signal
  kind: action
  command: '{"jsonrpc": "2.0", "method": "signal.unsubscribe", "params": {"signal": "modelupdated"}, "id": 12}'
  params:
    - name: signal
      type: string
      description: Signal name or array of signal names
- id: introspect
  label: Introspect Object
  kind: query
  command: '{"jsonrpc": "2.0", "method": "introspect", "params": {"object": "foo", "recursive": true}, "id": 1}'
  params:
    - name: object
      type: string
      description: Dot-notation object name (default empty introspects all)
    - name: recursive
      type: boolean
      description: If false, only one level object names are listed
- id: introspect_short
  label: Introspect Object (positional)
  kind: query
  command: '{"method": "introspect", "params": ["foo", true], "id": 1}'
  params:
    - name: object
      type: string
    - name: recursive
      type: boolean
- id: ledctrl_blink
  label: Blink LED
  kind: action
  command: '{"jsonrpc": "2.0", "method": "ledctrl.blink", "params": {"led": "systemstatus", "color": "red", "period": 42}, "id": 3}'
  params:
    - name: led
      type: string
    - name: color
      type: string
    - name: period
      type: integer
- id: system_state_get
  label: Get System State
  kind: query
  command: '{"jsonrpc": "2.0", "method": "property.get", "params": {"property": "system.state"}, "id": 1}'
  params: []
- id: system_state_subscribe
  label: Subscribe to System State
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.subscribe", "params": {"property": "system.state"}, "id": 2}'
  params: []
- id: image_window_main_source_get
  label: Get Active Source
  kind: query
  command: '{"jsonrpc": "2.0", "method": "property.get", "params": {"property": "image.window.main.source"}, "id": 0}'
  params: []
- id: image_source_list
  label: List Available Sources
  kind: query
  command: '{"jsonrpc": "2.0", "method": "image.source.list", "id": 1}'
  params: []
- id: image_window_main_source_set
  label: Set Active Source
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.set", "params": {"property": "image.window.main.source", "value": "DisplayPort 1"}, "id": 2}'
  params:
    - name: value
      type: string
      description: Source name from image.source.list
- id: image_connector_list
  label: List Available Connectors
  kind: query
  command: '{"jsonrpc": "2.0", "method": "image.connector.list", "id": 3}'
  params: []
- id: image_source_listconnectors
  label: List Connectors for a Source
  kind: query
  command: '{"jsonrpc": "2.0", "method": "image.source.displayport1.listconnectors", "id": 4}'
  params:
    - name: source_object
      type: string
      description: Source object name (e.g. displayport1)
- id: image_connector_detectedsignal_get
  label: Get Connector Detected Signal
  kind: query
  command: '{"jsonrpc": "2.0", "method": "property.get", "params": {"property": "image.connector.displayport1.detectedsignal"}, "id": 5}'
  params:
    - name: connector_object
      type: string
      description: Connector object name (e.g. displayport1)
- id: image_window_main_source_subscribe
  label: Subscribe to Active Source Changes
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.subscribe", "params": {"property": "image.window.main.source"}, "id": 6}'
  params: []
- id: illumination_state_get
  label: Get Illumination State
  kind: query
  command: '{"jsonrpc": "2.0", "method": "property.get", "params": {"property": "illumination.state"}, "id": 0}'
  params: []
- id: illumination_state_subscribe
  label: Subscribe to Illumination State
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.subscribe", "params": {"property": "illumination.state"}, "id": 1}'
  params: []
- id: illumination_sources_introspect
  label: Introspect Illumination Sources
  kind: query
  command: '{"jsonrpc": "2.0", "method": "introspect", "params": {"recursive": false}, "id": 2}'
  params: []
- id: illumination_laser_power_get
  label: Get Laser Power
  kind: query
  command: '{"jsonrpc": "2.0", "method": "property.get", "params": {"property": "illumination.sources.laser.power"}, "id": 3}'
  params: []
- id: illumination_laser_power_set
  label: Set Laser Power
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.set", "params": {"property": "illumination.sources.laser.power", "value": 40}, "id": 5}'
  params:
    - name: value
      type: integer
      description: Target power in percent (between minpower and maxpower)
- id: illumination_laser_power_subscribe
  label: Subscribe to Laser Power
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.subscribe", "params": {"property": ["illumination.sources.laser.power"]}, "id": 4}'
  params: []
- id: illumination_laser_minpower_get
  label: Get Laser Min Power
  kind: query
  command: '{"jsonrpc": "2.0", "method": "property.get", "params": {"property": "illumination.sources.laser.minpower"}, "id": 6}'
  params: []
- id: illumination_laser_maxpower_get
  label: Get Laser Max Power
  kind: query
  command: '{"jsonrpc": "2.0", "method": "property.get", "params": {"property": "illumination.sources.laser.maxpower"}, "id": 5}'
  params: []
- id: image_brightness_get
  label: Get Brightness
  kind: query
  command: '{"jsonrpc": "2.0", "method": "property.get", "params": {"property": "image.brightness"}, "id": 7}'
  params: []
- id: image_brightness_set
  label: Set Brightness
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.set", "params": {"property": "image.brightness", "value": 0.15}, "id": 9}'
  params:
    - name: value
      type: float
      description: Range -1 to 1, step 0.01, default 0
- id: image_brightness_subscribe
  label: Subscribe to Brightness
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.subscribe", "params": {"property": ["image.brightness"]}, "id": 8}'
  params: []
- id: image_introspect
  label: Introspect Image Service
  kind: query
  command: '{"jsonrpc": "2.0", "method": "introspect", "params": {"object": "image", "recursive": false}, "id": 6}'
  params: []
- id: image_processing_warp_enable_set
  label: Enable/Disable Warp
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.set", "params": {"property": "image.processing.warp.enable", "value": true}, "id": 10}'
  params:
    - name: value
      type: boolean
- id: warp_file_upload
  label: Upload Warp File
  kind: action
  command: 'curl -X POST -F file=@warp.xml http://{host}/api/image/processing/warp/file/transfer'
  params:
    - name: host
      type: string
      description: Projector IP address
- id: warp_file_select
  label: Select Warp File
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.set", "params": {"property": "image.processing.warp.file.selected", "value": "warp.xml"}, "id": 11}'
  params:
    - name: value
      type: string
- id: warp_file_enable_set
  label: Enable Warp File
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.set", "params": {"property": "image.processing.warp.file.enable", "value": true}, "id": 12}'
  params:
    - name: value
      type: boolean
- id: blend_file_upload
  label: Upload Blend Mask
  kind: action
  command: 'curl -X POST -F file=@mask.png http://{host}/api/image/processing/blend/file/transfer'
  params:
    - name: host
      type: string
- id: blend_file_select
  label: Select Blend File
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.set", "params": {"property": "image.processing.blend.file.selected", "value": "mask.png"}, "id": 13}'
  params:
    - name: value
      type: string
- id: blend_file_enable_set
  label: Enable Blend File
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.set", "params": {"property": "image.processing.blend.file.enable", "value": true}, "id": 14}'
  params:
    - name: value
      type: boolean
- id: blacklevel_file_upload
  label: Upload Black Level Mask
  kind: action
  command: 'curl -X POST -F file=@blacklevel.png http://{host}/api/image/processing/blacklevel/file/transfer'
  params:
    - name: host
      type: string
- id: blacklevel_file_select
  label: Select Black Level File
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.set", "params": {"property": "image.processing.blacklevel.file.selected", "value": "blacklevel.png"}, "id": 15}'
  params:
    - name: value
      type: string
- id: blacklevel_file_enable_set
  label: Enable Black Level File
  kind: action
  command: '{"jsonrpc": "2.0", "method": "property.set", "params": {"property": "image.processing.blacklevel.file.enable", "value": true}, "id": 16}'
  params:
    - name: value
      type: boolean
- id: environment_getcontrolblocks
  label: Get Environment Sensor Blocks
  kind: query
  command: '{"jsonrpc": "2.0", "method": "environment.getcontrolblocks", "params": {"type": "Sensor", "valuetype": "Temperature"}, "id": 18}'
  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: eco_wake_serial
  label: Wake from ECO via Serial
  kind: action
  command: ':POWR1\r'
  params: []
- id: dmx_listchannels
  label: List DMX Channels
  kind: query
  command: '{"jsonrpc": "2.0", "method": "dmx.listchannels", "id": 1}'
  params: []
- id: dmx_listmodes
  label: List DMX Modes
  kind: query
  command: '{"jsonrpc": "2.0", "method": "dmx.listmodes", "id": 1}'
  params: []
- id: firmware_listcomponents
  label: List Firmware Components
  kind: query
  command: '{"jsonrpc": "2.0", "method": "firmware.listcomponents", "id": 1}'
  params: []
- id: firmware_listcomponentversionstatus
  label: List Firmware Component Versions
  kind: query
  command: '{"jsonrpc": "2.0", "method": "firmware.listcomponentversionstatus", "id": 1}'
  params: []
- id: firmware_schedulecomponentupgrade
  label: Schedule Firmware Component Upgrade
  kind: action
  command: '{"jsonrpc": "2.0", "method": "firmware.schedulecomponentupgrade", "params": {"component": "componentname"}, "id": 1}'
  params:
    - name: component
      type: string
- id: illumination_clo_engage
  label: Engage CLO at Current Light Level
  kind: action
  command: '{"jsonrpc": "2.0", "method": "illumination.clo.engage", "id": 1}'
  params: []
- id: illumination_laser_getserialnumber
  label: Get Laser Serial Number
  kind: query
  command: '{"jsonrpc": "2.0", "method": "illumination.laser.getserialnumber", "id": 1}'
  params: []
- id: image_color_p7_custom_copypresettocustom
  label: Copy P7 Preset to Custom
  kind: action
  command: '{"jsonrpc": "2.0", "method": "image.color.p7.custom.copypresettocustom", "params": {"presetname": "preset"}, "id": 1}'
  params:
    - name: presetname
      type: string
- id: image_color_p7_custom_resetpreset
  label: Reset P7 Preset to Default
  kind: action
  command: '{"jsonrpc": "2.0", "method": "image.color.p7.custom.resetpreset", "params": {"presetname": "preset"}, "id": 1}'
  params:
    - name: presetname
      type: string
- id: image_color_p7_custom_resettonative
  label: Reset P7 to Native
  kind: action
  command: '{"jsonrpc": "2.0", "method": "image.color.p7.custom.resettonative", "id": 1}'
  params: []
- id: image_color_rgbmode_nextrgbmode
  label: Cycle to Next RGB Mode
  kind: action
  command: '{"jsonrpc": "2.0", "method": "image.color.rgbmode.nextrgbmode", "id": 1}'
  params: []

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: image_window_main_source
  type: string
  description: Currently active source name (e.g. DisplayPort 1, HDMI)
- id: illumination_sources_laser_power
  type: float
  description: Current laser power in percent
- id: illumination_sources_laser_minpower
  type: float
  description: Laser minimum power in percent
- id: illumination_sources_laser_maxpower
  type: float
  description: Laser maximum power in percent
- id: image_brightness
  type: float
  description: Image brightness/offset, normalized, 0 is default, 1 is 100% offset
- id: image_contrast
  type: float
  description: Image contrast/gain, normalized, 1 is default
- id: image_gamma
  type: float
  description: Image gamma, default 2.2
- id: image_saturation
  type: float
  description: Image color saturation, normalized, 1 is default
- id: image_sharpness
  type: integer
  description: Image sharpness, normalized
- id: image_orientation
  type: enum
  values: [DESKTOP_FRONT, DESKTOP_REAR, CEILING_FRONT, CEILING_REAR]
- id: image_window_main_scalingmode
  type: enum
  values: [Fill, OneToOne, FillScreen, Stretch]
- id: image_window_main_position
  type: object
  description: Window position {x, y}
- id: image_window_main_size
  type: object
  description: Window size {width, height}
- id: image_connector_detectedsignal
  type: object
  description: Detected signal info (active, name, resolutions, frequencies, scan, color_space, etc.)
- id: environment_alarmstate
  type: enum
  values: [Fatal, Error, Alert, Warning, Ok]
- id: environment_temperatures
  type: object
  description: Dictionary of sensor name to temperature reading
- id: environment_fan_speeds
  type: object
  description: Dictionary of fan name to speed (RPM)
- id: dmx_mode
  type: string
- id: dmx_startchannel
  type: integer
  description: DMX start channel in range [1..512]
- id: dmx_shutdown
  type: boolean
- id: network_device_lan_ip4config
  type: object
  description: Current IPv4 configuration {Address, Mask, Gateway, NameServers}
- id: network_device_lan_state
  type: enum
  values: [CONNECTED, DISCONNECTED]
- id: optics_shutter_position
  type: enum
  values: [Open, Closed]
- id: optics_shutter_target
  type: enum
  values: [Open, Closed]
- id: optics_zoom_position
  type: integer
- id: optics_focus_position
  type: integer
- id: optics_lensshift_horizontal_position
  type: integer
- id: optics_lensshift_vertical_position
  type: integer
- id: system_standby_enable
  type: boolean
- id: system_eco_enable
  type: boolean
- id: firmware_componentstatus
  type: object
  description: Component {name, versions, available, running, status}

Variables

# Variables intentionally omitted; all settable parameters are exposed as property.set actions above.

Events

- id: property_changed
  description: Server-pushed notification when property value changes
  payload: '{"jsonrpc": "2.0", "method": "property.changed", "params": {"property": [{"objectname.propertyname": 100}]}}'
- id: signal_callback
  description: Server-pushed notification when a subscribed signal fires
  payload: '{"jsonrpc": "2.0", "method": "signal.callback", "params": {"signal": [{"objectname.signalname": {"arg1": 100}}]}}'
- id: modelupdated
  description: Signal fired when object structure changes (objects added or removed)
  payload: '{"jsonrpc": "2.0", "method": "signal.callback", "params": {"signal": [{"introspect.objectchanged": {"object": "motors.motor1", "newobject": true}}]}}'

Safety

confirmation_required_for: []
interlocks: []

Notes

Connection: TCP port 9090 for Pulse services, or RS-232 serial at 19200/8/N/1. The same JSON-RPC commands are available over both transports. Authentication is optional — only required for access levels above normal end user. Power on/off are idempotent; verify state via system.state before issuing transitions. Wake-from-ECO on serial: send :POWR1\r. To GET a list of available sources, call image.source.list first, then SET image.window.main.source. Per-property introspection is not supported — introspect the owning object (e.g. image) to discover property schemas. Append-only file endpoint for warp/blend/blacklevel upload via HTTP POST to /api/.../file/transfer. Wait for property.set confirmation before re-issuing the same property to avoid flooding.

Provenance

source_domains:
  - audiogeneral.com
source_urls:
  - "https://www.audiogeneral.com/barco/UDX%20Series/JSON_ReferenceGuide.pdf"
retrieved_at: 2026-07-23T06:42:13.079Z
last_checked_at: 2026-08-05T07:21:27.772Z

Verification Summary

verdict: verified
checked_at: 2026-08-05T07:21:27.772Z
matched_actions: 57
action_count: 57
confidence: medium
summary: "All 57 spec actions match JSON-RPC methods, properties, file endpoints, and the serial wake token documented in the Pulse API source. (3 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "product variant mapping not stated; \"Pulse API\" is shared across many Barco projector lines."
- "source describes optional opt-in authentication, not a required login"
- "per-property access constraints (READ_WRITE vs READ_ONLY) only documented for image.brightness/gamma/saturation/contrast/sharpness; full access table not in source. Firmware version compatibility ranges not stated. Image color properties (REC709, REC2020, etc.) and full signal metadata schemas (color_space, chroma_sampling enum values) only partially enumerated in source."

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0