Summary

Barco G62 Wx Series Pulse projector controlled via JSON-RPC 2.0 over TCP/IP (port 9090) or RS-232 serial. Supports power management, source selection, image adjustment (brightness, contrast, gamma, saturation, sharpness), illumination control, warp/blend/black level file management, optics (shutter, zoom, focus, lens shift), DMX, and environment monitoring. Authentication is optional and uses a numeric passcode to elevate access level.

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  # source: "Authentication is only necessary when a higher level than normal end user is required"
  method: jsonrpc_authenticate
  description: >
    Authenticate via JSON-RPC method "authenticate" with params {"code": <passcode>}.
    Normal end-user access does not require authentication.

Traits

- powerable    # system.poweron / system.poweroff methods
- queryable    # property.get method for all readable properties
- levelable    # image.brightness, image.contrast, image.gamma, image.saturation, image.sharpness, illumination power
- routable     # image.window.main.source selection from image.source.list

Actions

- id: power_on
  label: Power On
  kind: action
  jsonrpc_method: system.poweron
  params: []
  note: Verify projector state is standby or ready before issuing.

- id: power_off
  label: Power Off
  kind: action
  jsonrpc_method: system.poweroff
  params: []
  note: Verify projector state is on before issuing.

- id: eco_wake_serial
  label: ECO Wake via Serial
  kind: action
  command: ":POWR1\\r"
  transport: serial
  params: []
  note: ASCII command sent over RS-232 to wake projector from ECO mode.

- id: authenticate
  label: Authenticate
  kind: action
  jsonrpc_method: authenticate
  params:
    - name: code
      type: integer
      description: Secret passcode for elevated access level

- id: set_property
  label: Set Property
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      description: Dot-notation property name (e.g. "image.brightness")
    - name: value
      type: any
      description: Value to set (type depends on property)

- id: get_property
  label: Get Property
  kind: action
  jsonrpc_method: property.get
  params:
    - name: property
      type: string
      description: Dot-notation property name

- id: get_properties
  label: Get Multiple Properties
  kind: action
  jsonrpc_method: property.get
  params:
    - name: property
      type: array
      description: Array of dot-notation property names

- id: subscribe_property
  label: Subscribe to Property Changes
  kind: action
  jsonrpc_method: property.subscribe
  params:
    - name: property
      type: string_or_array
      description: Single property name or array of property names

- id: unsubscribe_property
  label: Unsubscribe from Property Changes
  kind: action
  jsonrpc_method: property.unsubscribe
  params:
    - name: property
      type: string_or_array
      description: Single property name or array of property names

- id: subscribe_signal
  label: Subscribe to Signal
  kind: action
  jsonrpc_method: signal.subscribe
  params:
    - name: signal
      type: string_or_array
      description: Signal name or array of signal names

- id: unsubscribe_signal
  label: Unsubscribe from Signal
  kind: action
  jsonrpc_method: signal.unsubscribe
  params:
    - name: signal
      type: string_or_array
      description: Signal name or array of signal names

- id: introspect
  label: Introspect Object Metadata
  kind: action
  jsonrpc_method: introspect
  params:
    - name: object
      type: string
      description: "Object name in dot notation (empty for all). Default: empty."
    - name: recursive
      type: boolean
      description: "If false, only list object names (one level). Default: true."

- id: select_source
  label: Select Input Source
  kind: action
  jsonrpc_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)"

- id: list_sources
  label: List Available Sources
  kind: action
  jsonrpc_method: image.source.list
  params: []
  response_type: array
  response_description: Array of source name strings

- id: list_connectors
  label: List Available Connectors
  kind: action
  jsonrpc_method: image.connector.list
  params: []
  response_type: array
  response_description: Array of connector name strings

- id: list_source_connectors
  label: List Connectors for Source
  kind: action
  jsonrpc_method: "image.source.<sourcename>.listconnectors"
  params: []
  note: "Source object name derived from source name by removing non-word chars and lowercasing (e.g. DisplayPort 1 → displayport1)"
  response_type: array
  response_description: Array of connector info objects with name and gridposition

- id: set_brightness
  label: Set Brightness
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "image.brightness"
    - name: value
      type: float
      description: "Normalized brightness offset. -1 to 1. Default 0."

- id: set_contrast
  label: Set Contrast
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "image.contrast"
    - name: value
      type: float
      description: "Normalized contrast/gain. 0 to 2. Default 1."

- id: set_gamma
  label: Set Gamma
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "image.gamma"
    - name: value
      type: float
      description: "Gamma value. 1 to 3. Default 2.2."

- id: set_saturation
  label: Set Saturation
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "image.saturation"
    - name: value
      type: float
      description: "Normalized saturation. 0 to 2. Default 1."

- id: set_sharpness
  label: Set Sharpness
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "image.sharpness"
    - name: value
      type: integer
      description: "-2 to 8."

- id: set_orientation
  label: Set Image Orientation
  kind: action
  jsonrpc_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
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "image.window.main.scalingmode"
    - name: value
      type: enum
      values: [Fill, OneToOne, FillScreen, Stretch]

- id: set_laser_power
  label: Set Laser Power
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "illumination.sources.laser.power"
    - name: value
      type: float
      description: "Target power in percent. Check minpower/maxpower for valid range."

- id: set_shutter
  label: Set Shutter Position
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "optics.shutter.target"
    - name: value
      type: enum
      values: [Open, Closed]

- id: set_zoom
  label: Set Zoom Position
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "optics.zoom.position"
    - name: value
      type: integer

- id: set_focus
  label: Set Focus Position
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "optics.focus.position"
    - name: value
      type: integer

- id: set_lens_shift_horizontal
  label: Set Horizontal Lens Shift
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "optics.lensshift.horizontal.position"
    - name: value
      type: integer

- id: set_lens_shift_vertical
  label: Set Vertical Lens Shift
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "optics.lensshift.vertical.position"
    - name: value
      type: integer

- id: set_warp_enable
  label: Enable/Disable Warp
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "image.processing.warp.enable"
    - name: value
      type: boolean

- id: set_warp_file
  label: Select Warp File
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "image.processing.warp.file.selected"
    - name: value
      type: string
      description: Warp grid filename (e.g. warp.xml)

- id: enable_warp_file
  label: Enable Warp File
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "image.processing.warp.file.enable"
    - name: value
      type: boolean

- id: set_blend_file
  label: Select Blend Mask File
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "image.processing.blend.file.selected"
    - name: value
      type: string
      description: Blend mask filename (e.g. mask.png)

- id: enable_blend_file
  label: Enable Blend Mask
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "image.processing.blend.file.enable"
    - name: value
      type: boolean

- id: set_blacklevel_file
  label: Select Black Level Mask File
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "image.processing.blacklevel.file.selected"
    - name: value
      type: string
      description: Black level mask filename (e.g. blacklevel.png)

- id: enable_blacklevel_file
  label: Enable Black Level Mask
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "image.processing.blacklevel.file.enable"
    - name: value
      type: boolean

- id: set_dmx_mode
  label: Set DMX Mode
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "dmx.mode"
    - name: value
      type: string

- id: set_dmx_start_channel
  label: Set DMX Start Channel
  kind: action
  jsonrpc_method: property.set
  params:
    - name: property
      type: string
      value: "dmx.startchannel"
    - name: value
      type: integer
      description: "DMX start channel, 1 to 512."

- id: list_dmx_channels
  label: List DMX Channels
  kind: action
  jsonrpc_method: dmx.listchannels
  params: []
  response_type: array

- id: list_dmx_modes
  label: List DMX Modes
  kind: action
  jsonrpc_method: dmx.listmodes
  params: []
  response_type: array

- id: get_environment_sensors
  label: Get Environment Sensor Data
  kind: action
  jsonrpc_method: environment.getcontrolblocks
  params:
    - name: type
      type: enum
      values: [Sensor, Filter, Controller, Actuator, Alarm, GenericBlock]
    - name: valuetype
      type: enum
      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]
  response_type: object
  response_description: Dictionary of sensor name to float value

- id: get_alarm_info
  label: Get Alarm Info
  kind: action
  jsonrpc_method: environment.getalarminfo
  params: []
  response_type: array
  response_description: Array of alarm objects with severity, timestamp, source, description, custommessage

- id: engage_clo
  label: Engage Constant Light Output
  kind: action
  jsonrpc_method: illumination.clo.engage
  params: []
  note: Engages CLO at current light level.

- id: list_firmware_components
  label: List Firmware Components
  kind: action
  jsonrpc_method: firmware.listcomponents
  params: []
  response_type: array

- id: list_firmware_version_status
  label: List Firmware Version Status
  kind: action
  jsonrpc_method: firmware.listcomponentversionstatus
  params: []
  response_type: array

- id: schedule_firmware_upgrade
  label: Schedule Firmware Upgrade
  kind: action
  jsonrpc_method: firmware.schedulecomponentupgrade
  params: []
  note: Forces component upgrade at next reboot.

- id: copy_color_preset
  label: Copy Color Preset to Custom
  kind: action
  jsonrpc_method: image.color.p7.custom.copypresettocustom
  params:
    - name: presetname
      type: string

- id: reset_color_preset
  label: Reset Color Preset
  kind: action
  jsonrpc_method: image.color.p7.custom.resetpreset
  params:
    - name: presetname
      type: string

- id: reset_color_to_native
  label: Reset Color to Native
  kind: action
  jsonrpc_method: image.color.p7.custom.resettonative
  params: []

- id: next_rgb_mode
  label: Next RGB Mode
  kind: action
  jsonrpc_method: image.color.rgbmode.nextrgbmode
  params: []
  note: Cycles through all possible RGB modes.

Feedbacks

- id: system_state
  type: enum
  property: system.state
  values: [boot, eco, standby, ready, conditioning, on, deconditioning, service, error]

- id: illumination_state
  type: enum
  property: illumination.state
  values: ["On", "Off"]

- id: active_source
  type: string
  property: image.window.main.source

- id: detected_signal
  type: object
  property: "image.connector.<name>.detectedsignal"
  note: Object with active, name, resolution, frequency, scan, color_space, etc.

- id: laser_power
  type: float
  property: illumination.sources.laser.power

- id: laser_min_power
  type: float
  property: illumination.sources.laser.minpower

- id: laser_max_power
  type: float
  property: illumination.sources.laser.maxpower

- id: brightness
  type: float
  property: image.brightness
  range: [-1, 1]

- id: contrast
  type: float
  property: image.contrast
  range: [0, 2]

- id: gamma
  type: float
  property: image.gamma
  range: [1, 3]

- id: saturation
  type: float
  property: image.saturation
  range: [0, 2]

- id: sharpness
  type: integer
  property: image.sharpness
  range: [-2, 8]

- id: alarm_state
  type: enum
  property: environment.alarmstate
  values: [Fatal, Error, Alert, Warning, Ok]

- id: shutter_position
  type: enum
  property: optics.shutter.position
  values: [Open, Closed]

- id: network_state
  type: enum
  property: network.device.lan.state
  values: [CONNECTED, DISCONNECTED]

- id: temperatures
  type: object
  method: environment.getcontrolblocks
  params: { type: Sensor, valuetype: Temperature }

- id: fan_speeds
  type: object
  method: environment.getcontrolblocks
  params: { type: Sensor, valuetype: Speed }

Variables

- id: image_brightness
  property: image.brightness
  type: float
  min: -1
  max: 1
  default: 0

- id: image_contrast
  property: image.contrast
  type: float
  min: 0
  max: 2
  default: 1

- id: image_gamma
  property: image.gamma
  type: float
  min: 1
  max: 3
  default: 2.2

- id: image_saturation
  property: image.saturation
  type: float
  min: 0
  max: 2
  default: 1

- id: image_sharpness
  property: image.sharpness
  type: integer
  min: -2
  max: 8

- id: laser_power
  property: illumination.sources.laser.power
  type: float
  unit: percent

- id: dmx_start_channel
  property: dmx.startchannel
  type: integer
  min: 1
  max: 512

- id: window_position_x
  property: image.window.main.position.x
  type: integer

- id: window_position_y
  property: image.window.main.position.y
  type: integer

- id: window_size_width
  property: image.window.main.size.width
  type: integer

- id: window_size_height
  property: image.window.main.size.height
  type: integer

Events

- id: property_changed
  method: property.changed
  description: >
    Unsolicited notification sent when a subscribed property value changes.
    Params contain an array of property/value pairs.
  payload:
    property:
      type: array
      description: "Array of {\"objectname.propertyname\": value} objects"

- id: signal_callback
  method: signal.callback
  description: >
    Unsolicited notification sent when a subscribed signal is emitted.
    Params contain an array of signal/argument-list pairs.
  payload:
    signal:
      type: array
      description: "Array of {\"objectname.signalname\": {arg1: val, ...}} objects"

- id: model_updated
  method: signal.callback (signal: introspect.objectchanged)
  description: Triggered when the object structure changes (objects added or removed).
  payload:
    object:
      type: string
      description: Name of changed object
    isnew:
      type: boolean
      description: "true: object added, false: object removed"

Macros

- id: upload_and_activate_warp
  label: Upload and Activate Warp Grid
  steps:
    - description: Upload warp grid file via HTTP POST
      http: "POST /api/image/processing/warp/file/transfer (multipart file upload)"
    - description: Select the uploaded warp file
      jsonrpc_method: property.set
      params: { property: "image.processing.warp.file.selected", value: "<filename>" }
    - description: Enable file-based warp
      jsonrpc_method: property.set
      params: { property: "image.processing.warp.file.enable", value: true }
    - description: Enable global warp
      jsonrpc_method: property.set
      params: { property: "image.processing.warp.enable", value: true }

- id: upload_and_activate_blend_mask
  label: Upload and Activate Blend Mask
  steps:
    - description: Upload blend mask via HTTP POST
      http: "POST /api/image/processing/blend/file/transfer (multipart file upload)"
    - description: Select the uploaded blend file
      jsonrpc_method: property.set
      params: { property: "image.processing.blend.file.selected", value: "<filename>" }
    - description: Enable blend mask
      jsonrpc_method: property.set
      params: { property: "image.processing.blend.file.enable", value: true }

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source does not describe safety interlocks or power-on sequencing beyond
# recommending state verification before power commands

Notes

  • All commands use JSON-RPC 2.0 format over both TCP and serial connections.
  • Source object names derived from display names by removing non-word characters and lowercasing (e.g. "DisplayPort 1" → "displayport1").
  • Best practice: wait for property.set confirmation before setting the same property again to avoid flooding.
  • Property subscriptions only deliver change notifications; use property.get for current value.
  • Source selection generates two notifications (deselection of old source, selection of new source).
  • API is dynamic — available methods/properties depend on projector configuration, peripherals, and connected hardware. Use introspection for the exact API surface.
  • Warp grid file format is the same as Barco MCM500/400.
  • Blend and black level masks must be grayscale (8 or 16-bit), matching the projector's blend layer resolution. PNG/JPEG/TIFF accepted; color images use only the blue channel.
  • ECO wake via serial uses raw ASCII :POWR1\r outside JSON-RPC.
  • HTTP file endpoints: /api/image/processing/warp/file/transfer, /api/image/processing/blend/file/transfer, /api/image/processing/blacklevel/file/transfer.

Provenance

source_domains:
  - audiogeneral.com
  - docs
source_urls:
  - "https://www.audiogeneral.com/barco/UDX%20Series/JSON_ReferenceGuide.pdf"
retrieved_at: 2026-05-14T11:50:42.964Z
last_checked_at: 2026-06-02T21:49:59.388Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T21:49:59.388Z
matched_actions: 50
action_count: 50
confidence: medium
summary: "All 50 spec actions traced to source. (10 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "specific G62 model variants not enumerated in source"
- "firmware version compatibility not stated"
- "HTTP file transfer endpoints have no auth requirement documented"
- "source does not describe safety interlocks or power-on sequencing beyond"
- "zoom/focus/lens shift position value ranges not specified"
- "DMX extended mode channel details not specified"
- "CLO behavior details not specified beyond engage method"
- "color preset names and P7 color mode details not fully documented"
- "HTTP file transfer authentication requirements not stated"
- "laser serial number method (illumination.laser.getserialnumber) response format partially documented"

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