Summary
Barco BDMC Server (Pulse-based projector platform) controlled via JSON-RPC 2.0 over TCP/IP or RS-232 serial. Supports power management, source selection, image adjustment (brightness, contrast, saturation, gamma, sharpness), warp/blend/black-level processing, lens motor control (zoom, focus, shift, shutter), illumination (laser power, CLO), DMX, environment monitoring (temperature, fan speeds), firmware management, and test patterns.
Transport
protocols:
- tcp
- serial
- http
addressing:
port: 9090
serial:
baud_rate: 19200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: passcode
notes: Authentication optional for end-user access; required for power-user and higher levels. Passcode sent via "authenticate" JSON-RPC method.
Traits
traits:
- powerable
- queryable
- routable
- levelable
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: system_reboot
label: Reboot
kind: action
method: system.reboot
params: []
- id: system_gotoeco
label: Go to ECO Mode
kind: action
method: system.gotoeco
params: []
- id: system_gotoready
label: Go to Ready
kind: action
method: system.gotoready
params: []
- id: authenticate
label: Authenticate
kind: action
method: authenticate
params:
- name: code
type: integer
description: Secret passcode for elevated access level
- id: property_set
label: Set Property
kind: action
method: property.set
params:
- name: property
type: string
description: Dot-notation property name
- name: value
type: any
description: Value to set
- id: property_get
label: Get Property
kind: query
method: property.get
params:
- name: property
type: string
description: Dot-notation property name (or array of names)
- id: property_subscribe
label: Subscribe to Property Changes
kind: action
method: property.subscribe
params:
- name: property
type: string
description: Dot-notation property name (or array of names)
- id: property_unsubscribe
label: Unsubscribe from Property Changes
kind: action
method: property.unsubscribe
params:
- name: property
type: string
description: Dot-notation property name (or array of names)
- id: signal_subscribe
label: Subscribe to Signal
kind: action
method: signal.subscribe
params:
- name: signal
type: string
description: Signal name (or array of names)
- id: signal_unsubscribe
label: Unsubscribe from Signal
kind: action
method: signal.unsubscribe
params:
- name: signal
type: string
description: Signal name (or array of names)
- id: introspect
label: Introspect Object
kind: query
method: introspect
params:
- name: object
type: string
description: Object name in dot notation
- name: recursive
type: boolean
description: If false, only list child object names
- id: image_source_list
label: List Available Sources
kind: query
method: image.source.list
params: []
- id: select_source
label: Select Input Source
kind: action
method: property.set
params:
- name: property
type: string
description: "image.window.main.source"
- name: value
type: string
description: "Source name e.g. DisplayPort 1, HDMI, DVI 1, HDBaseT, SDI"
- id: image_connector_list
label: List Connectors
kind: query
method: image.connector.list
params: []
- 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 brightness (-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 contrast (0 to 2, default 1)"
- 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 saturation (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: "Gamma value (1 to 3, default 2.2)"
- id: set_sharpness
label: Set Sharpness
kind: action
method: property.set
params:
- name: property
type: string
description: "image.sharpness"
- name: value
type: integer
description: "Sharpness (-2 to 8)"
- id: set_laser_power
label: Set Laser Power
kind: action
method: property.set
params:
- name: property
type: string
description: "illumination.sources.laser.power"
- name: value
type: float
description: "Laser power percentage"
- id: set_orientation
label: Set Orientation
kind: action
method: property.set
params:
- name: property
type: string
description: "image.orientation"
- name: value
type: string
description: "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: "Fill, OneToOne, FillScreen, Stretch"
- id: enable_warp
label: Enable/Disable Warp
kind: action
method: property.set
params:
- name: property
type: string
description: "image.processing.warp.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: Warp file name
- id: enable_blend
label: Enable/Disable Blend
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: Blend file name
- id: set_shutter
label: Set Shutter Position
kind: action
method: property.set
params:
- name: property
type: string
description: "optics.shutter.target"
- name: value
type: string
description: "Open or Closed"
- id: toggle_shutter
label: Toggle Shutter
kind: action
method: optics.shutter.toggle
params: []
- id: set_zoom_target
label: Set Zoom Target
kind: action
method: property.set
params:
- name: property
type: string
description: "optics.zoom.target"
- name: value
type: integer
- id: set_focus_target
label: Set Focus Target
kind: action
method: property.set
params:
- name: property
type: string
description: "optics.focus.target"
- 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.target"
- 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.target"
- name: value
type: integer
- id: system_reset
label: Reset Domains
kind: action
method: system.reset
params:
- name: domains
type: array
description: "List of reset domains e.g. ImageConnector, ImageSource, Optics, Illumination, etc."
- id: system_resetall
label: Reset All Domains
kind: action
method: system.resetall
params: []
- id: environment_getcontrolblocks
label: Get Environment Sensors
kind: query
method: environment.getcontrolblocks
params:
- name: type
type: string
description: "Sensor, Filter, Controller, Actuator, Alarm, or GenericBlock"
- name: valuetype
type: string
description: "Temperature, Speed, Voltage, Current, etc."
- id: environment_getalarminfo
label: Get Alarm Info
kind: query
method: environment.getalarminfo
params: []
- id: notification_list
label: List Active Notifications
kind: query
method: notification.list
params: []
- id: notification_dismiss
label: Dismiss Notification
kind: action
method: notification.dismiss
params:
- name: id
type: string
- name: response
type: string
description: "NONE, OK, CANCEL, IGNORE, YES, NO, SUPPRESS"
- id: eco_wake_serial
label: Wake from ECO (Serial)
kind: action
command: ":POWR1\r"
params: []
notes: ASCII command sent over RS-232 to wake projector from ECO/power-save mode
- id: firmware_schedule_upgrade
label: Schedule Firmware Upgrade
kind: action
method: firmware.schedulecomponentupgrade
params: []
- id: set_display_mode
label: Set Display Mode
kind: action
method: property.set
params:
- name: property
type: string
description: "image.display.desireddisplaymode"
- name: value
type: string
description: "Mono, AutoStereo, ActiveStereo, NightVision, IGPixelShift"
- id: keydispatcher_sendclickevent
label: Send Key Click
kind: action
method: keydispatcher.sendclickevent
params:
- name: key
type: string
description: "Key enum e.g. RC_POWER_ON, RC_SHUTTER_OPEN, KP_MENU, etc."
Feedbacks
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
description: Currently active input source name
- id: available_sources
type: array
method: image.source.list
description: List of available source names (varies by model)
- id: laser_power
type: float
property: illumination.sources.laser.power
description: Current laser power percentage
- id: laser_power_limit_reason
type: string
property: illumination.sources.laser.powerlimitreason
description: Reason if laser power is limited
- id: brightness
type: float
property: image.brightness
description: "Current brightness (-1 to 1)"
- id: contrast
type: float
property: image.contrast
description: "Current contrast (0 to 2)"
- id: alarm_state
type: enum
property: environment.alarmstate
values:
- Fatal
- Error
- Alert
- Warning
- Ok
- id: firmware_version
type: string
property: firmware.firmwareversion
- id: model_name
type: string
property: system.modelname
- id: serial_number
type: string
property: system.serialnumber
- id: connector_detected_signal
type: object
property: image.connector.<name>.detectedsignal
description: Signal info including active, resolution, refresh rate, color space, etc.
- id: shutter_position
type: enum
property: optics.shutter.position
values:
- Open
- Closed
- id: zoom_position
type: integer
property: optics.zoom.position
- id: focus_position
type: integer
property: optics.focus.position
- id: orientation
type: enum
property: image.orientation
values:
- DESKTOP_FRONT
- DESKTOP_REAR
- CEILING_FRONT
- CEILING_REAR
- id: display_mode
type: enum
property: image.display.displaymode
values:
- Mono
- AutoStereo
- ActiveStereo
- NightVision
- IGPixelShift
- id: temperatures
type: object
method: environment.getcontrolblocks
description: Dictionary of temperature sensor readings (laser banks, heatsinks, mainboard, inlet, outlet, etc.)
- id: fan_speeds
type: object
method: environment.getcontrolblocks
description: Dictionary of fan speed (tacho) readings
- id: network_state
type: enum
property: network.device.lan.state
values:
- CONNECTED
- DISCONNECTED
Variables
variables:
- id: image_brightness
property: image.brightness
type: float
min: -1
max: 1
step: 0.01
- id: image_contrast
property: image.contrast
type: float
min: 0
max: 2
step: 0.01
- id: image_saturation
property: image.saturation
type: float
min: 0
max: 2
step: 0.01
- id: image_gamma
property: image.gamma
type: float
min: 1
max: 3
step: 0.1
- id: image_sharpness
property: image.sharpness
type: integer
min: -2
max: 8
- id: image_intensity
property: image.intensity
type: float
min: 0
max: 1
step: 0.01
- id: laser_power_level
property: illumination.sources.laser.power
type: float
description: Laser power in percent (min/max dynamic - query illumination.sources.laser.minpower / maxpower)
- id: screen_luminance
property: screen.luminance
type: float
min: 50
max: 10000
step: 10
description: Maximum luminance in cd/m2
- id: blend_scurve
property: image.processing.blend.scurve
type: float
min: 1
max: 4
step: 0.1
- id: hdr_boost
property: screen.hdrboost
type: float
min: 0.8
max: 1.2
step: 0.01
Events
events:
- id: property_changed
method: property.changed
description: Fired when a subscribed property value changes. Params contain array of property/value pairs.
params:
- name: property
type: array
description: "Array of {objectname.propertyname: value} objects"
- id: signal_callback
method: signal.callback
description: Fired when a subscribed signal triggers. Params contain array of signal/argument pairs.
params:
- name: signal
type: array
description: "Array of {objectname.signalname: {args}} objects"
- id: model_updated
signal: modelupdated
description: Fired when objects appear or disappear in the API
params:
- name: object
type: string
- name: newobject
type: boolean
- name: accesslevel
type: string
- id: notification_emitted
signal: notification.emitted
description: New notification emitted
params:
- name: severity
type: string
- name: id
type: string
- name: code
type: string
- name: message
type: string
- id: network_added
signal: network.added
description: Network device added
- id: network_removed
signal: network.removed
description: Network device removed
Macros
macros:
- id: warp_grid_upload_and_activate
label: Upload and Activate Warp Grid
steps:
- description: "Enable warp: property.set image.processing.warp.enable = true"
- description: "Upload warp file via HTTP POST to /api/image/processing/warp/file/transfer"
- description: "Select file: property.set image.processing.warp.file.selected = <filename>"
- description: "Enable file warp: property.set image.processing.warp.file.enable = true"
- id: blend_mask_upload_and_activate
label: Upload and Activate Blend Mask
steps:
- description: "Upload blend mask via HTTP POST to /api/image/processing/blend/file/transfer"
- description: "Select file: property.set image.processing.blend.file.selected = <filename>"
- description: "Enable blend: property.set image.processing.blend.file.enable = true"
- id: blacklevel_upload_and_activate
label: Upload and Activate Black Level Mask
steps:
- description: "Upload mask via HTTP POST to /api/image/processing/blacklevel/file/transfer"
- description: "Select file: property.set image.processing.blacklevel.file.selected = <filename>"
- description: "Enable black level: property.set image.processing.blacklevel.file.enable = true"
Safety
confirmation_required_for:
- system_reboot
- system_reset
- system_resetall
interlocks:
- description: "Power on has no effect if projector is already on or in state transition. Verify state is standby or ready before issuing power on."
- description: "Power off has no effect if projector is already off or in state transition. Verify state is on before issuing power off."
- description: "Best practice to wait for property.set confirmation before setting same property again to avoid flooding the server."
# UNRESOLVED: source does not describe specific safety interlocks for lamp/laser shutdown sequences
Notes
- API is based on JSON-RPC 2.0. All parameters passed by name; order does not matter.
- The API is dynamic — available objects/properties depend on projector model, connected peripherals, and configuration. Use the introspect method to discover the exact API for a given device.
- Source names translate to object names by removing non-word characters and lowercasing (e.g. "DisplayPort 1" → "displayport1").
- HTTP file endpoints at
http://<projector-ip>/api/<path>support upload (POST with multipart form) and download (GET) for warp grids, blend masks, black level masks, EDID files, firmware images, test patterns, and notification logs. - ECO mode wake requires either WOL (MAC address), remote control power button, keypad power button, or serial command
:POWR1\r. - Properties have metadata (type, min, max, step-size, precision, access level) discoverable via introspection.
- Connector signal detection provides detailed timing info: resolution, refresh rate, sync parameters, color space, chroma sampling, bit depth, etc.
Provenance
source_domains:
- audiogeneral.com
- docs
source_urls:
- "https://www.audiogeneral.com/barco/UDX%20Series/JSON_ReferenceGuide.pdf"
retrieved_at: 2026-05-14T11:33:26.102Z
last_checked_at: 2026-06-02T21:47:56.385Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:47:56.385Z
matched_actions: 44
action_count: 44
confidence: medium
summary: "All 44 spec actions traced to source. (7 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "document is titled \"For UDX\" projectors; exact BDMC Server feature subset not specified"
- "HTTP file endpoints use base URL pattern http://<projector-ip>/api/... but HTTP is not a primary control transport — only used for file upload/download"
- "source does not describe specific safety interlocks for lamp/laser shutdown sequences"
- "firmware version compatibility ranges not stated"
- "exact connector/source set for BDMC Server model not specified — document references UDX-4K32/UDX-4K22 models"
- "laser min/max power range is dynamic (depends on lens, position) — not a fixed range"
- "ECO wake serial command (:POWR1\\r) uses raw ASCII, not JSON-RPC — protocol switching required"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0