Summary

Barco Ls4K projector exposes Pulse services through TCP/IP and RS-232 using JSON-RPC 2.0. HTTP endpoints support file upload and download for warp, blend, and black-level data.

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
  required_for: elevated_access
  normal_access: none
  # UNRESOLVED: passcode provisioning and valid credential format not stated in source

Traits

- powerable  # inferred from system.poweron and system.poweroff
- routable  # inferred from source selection commands
- queryable  # inferred from property.get and query methods
- levelable  # inferred from illumination and image level controls

Actions

- id: authenticate
  label: Authenticate for Elevated Access
  kind: action
  command: '{"jsonrpc":"2.0","method":"authenticate","params":{"code":{code}},"id":{id}}'
  params:
    - name: code
      type: integer
      description: Secret pass code
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: invoke_method
  label: Invoke Pulse Method
  kind: action
  command: '{"jsonrpc":"2.0","method":"{method}","params":{params},"id":{id}}'
  params:
    - name: method
      type: string
      description: Dot-notation method name
    - name: params
      type: object
      description: Named method parameters
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: property_set
  label: Set Property
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"{property}","value":{value}},"id":{id}}'
  params:
    - name: property
      type: string
      description: Dot-notation property name
    - name: value
      type: any
      description: Value compatible with property type
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: property_get
  label: Get Property
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"{property}"},"id":{id}}'
  params:
    - name: property
      type: string
      description: Dot-notation property name or array of names
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: property_subscribe
  label: Subscribe to Property
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"{property}"},"id":{id}}'
  params:
    - name: property
      type: string
      description: Dot-notation property name or array of names
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: property_unsubscribe
  label: Unsubscribe from Property
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.unsubscribe","params":{"property":"{property}"},"id":{id}}'
  params:
    - name: property
      type: string
      description: Dot-notation property name or array of names
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: signal_subscribe
  label: Subscribe to Signal
  kind: action
  command: '{"jsonrpc":"2.0","method":"signal.subscribe","params":{"signal":"{signal}"},"id":{id}}'
  params:
    - name: signal
      type: string
      description: Dot-notation signal name or array of names
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: signal_unsubscribe
  label: Unsubscribe from Signal
  kind: action
  command: '{"jsonrpc":"2.0","method":"signal.unsubscribe","params":{"signal":"{signal}"},"id":{id}}'
  params:
    - name: signal
      type: string
      description: Dot-notation signal name or array of names
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: introspect
  label: Introspect Pulse Object
  kind: query
  command: '{"jsonrpc":"2.0","method":"introspect","params":{"object":"{object}","recursive":{recursive}},"id":{id}}'
  params:
    - name: object
      type: string
      description: Object name; empty value introspects everything
    - name: recursive
      type: boolean
      description: Whether child objects are recursively described
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: power_on
  label: Power On
  kind: action
  command: '{"jsonrpc":"2.0","method":"system.poweron"}'
  params: []

- id: power_off
  label: Power Off
  kind: action
  command: '{"jsonrpc":"2.0","method":"system.poweroff"}'
  params: []

- id: serial_eco_wake
  label: Wake from ECO over RS-232
  kind: action
  command: ':POWR1\r'
  params: []

- id: get_projector_state
  label: Get Projector State
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"system.state"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: subscribe_projector_state
  label: Subscribe to Projector State
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"system.state"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: get_active_source
  label: Get Active Source
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.window.main.source"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: set_active_source
  label: Set Active Source
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.window.main.source","value":"{source}"},"id":{id}}'
  params:
    - name: source
      type: string
      description: Source name returned by image.source.list
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: list_sources
  label: List Available Sources
  kind: query
  command: '{"jsonrpc":"2.0","method":"image.source.list","id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: list_connectors
  label: List Available Connectors
  kind: query
  command: '{"jsonrpc":"2.0","method":"image.connector.list","id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: list_source_connectors
  label: List Connectors for Source
  kind: query
  command: '{"jsonrpc":"2.0","method":"image.source.{source_object}.listconnectors","id":{id}}'
  params:
    - name: source_object
      type: string
      description: Source name stripped of non-word characters and converted to lowercase
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: get_connector_signal
  label: Get Connector Signal
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.connector.{connector_object}.detectedsignal"},"id":{id}}'
  params:
    - name: connector_object
      type: string
      description: Connector name stripped of non-word characters and converted to lowercase
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: get_illumination_state
  label: Get Illumination State
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"illumination.state"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: subscribe_illumination_state
  label: Subscribe to Illumination State
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"illumination.state"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: get_laser_power
  label: Get Laser Power
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"illumination.sources.laser.power"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: set_laser_power
  label: Set Laser Power
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"illumination.sources.laser.power","value":{level}},"id":{id}}'
  params:
    - name: level
      type: float
      description: Target power percentage within dynamic limits reported by projector
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: subscribe_laser_power
  label: Subscribe to Laser Power
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"illumination.sources.laser.power"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: get_laser_minimum_power
  label: Get Minimum Laser Power
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"illumination.sources.laser.minpower"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: get_laser_maximum_power
  label: Get Maximum Laser Power
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"illumination.sources.laser.maxpower"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: get_brightness
  label: Get Brightness
  kind: query
  command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":"image.brightness"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: set_brightness
  label: Set Brightness
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.brightness","value":{value}},"id":{id}}'
  params:
    - name: value
      type: float
      minimum: -1
      maximum: 1
      precision: 0.01
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: subscribe_brightness
  label: Subscribe to Brightness
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":"image.brightness"},"id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: set_warp_enabled
  label: Enable or Disable Warp
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.enable","value":{enabled}},"id":{id}}'
  params:
    - name: enabled
      type: boolean
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: upload_warp_file
  label: Upload Warp File
  kind: action
  command: 'POST http://{projector-address}/api/image/processing/warp/file/transfer multipart/form-data file=@{file}'
  params:
    - name: projector-address
      type: string
    - name: file
      type: string
      description: Local warp file path

- id: select_warp_file
  label: Select Warp File
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.file.selected","value":"{filename}"},"id":{id}}'
  params:
    - name: filename
      type: string
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: set_warp_file_enabled
  label: Enable or Disable Warp File
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.file.enable","value":{enabled}},"id":{id}}'
  params:
    - name: enabled
      type: boolean
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: upload_blend_mask
  label: Upload Blend Mask
  kind: action
  command: 'POST http://{projector-address}/api/image/processing/blend/file/transfer multipart/form-data file=@{file}'
  params:
    - name: projector-address
      type: string
    - name: file
      type: string
      description: Local PNG, JPEG, or TIFF mask path

- id: select_blend_file
  label: Select Blend File
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blend.file.selected","value":"{filename}"},"id":{id}}'
  params:
    - name: filename
      type: string
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: set_blend_file_enabled
  label: Enable or Disable Blend File
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blend.file.enable","value":{enabled}},"id":{id}}'
  params:
    - name: enabled
      type: boolean
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: upload_black_level_mask
  label: Upload Black-Level Mask
  kind: action
  command: 'POST http://{projector-address}/api/image/processing/blacklevel/file/transfer multipart/form-data file=@{file}'
  params:
    - name: projector-address
      type: string
    - name: file
      type: string
      description: Local PNG, JPEG, or TIFF mask path

- id: select_black_level_file
  label: Select Black-Level File
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blacklevel.file.selected","value":"{filename}"},"id":{id}}'
  params:
    - name: filename
      type: string
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: set_black_level_file_enabled
  label: Enable or Disable Black-Level File
  kind: action
  command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blacklevel.file.enable","value":{enabled}},"id":{id}}'
  params:
    - name: enabled
      type: boolean
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: get_environment_control_blocks
  label: Get Environment Control Blocks
  kind: query
  command: '{"jsonrpc":"2.0","method":"environment.getcontrolblocks","params":{"type":"{type}","valuetype":"{value_type}"},"id":{id}}'
  params:
    - name: type
      type: enum
      values: [Sensor, Filter, Controller, Actuator, Alarm, GenericBlock]
    - name: value_type
      type: string
      description: Documented sensor value type
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: dmx_list_channels
  label: List DMX Channels
  kind: query
  command: '{"jsonrpc":"2.0","method":"dmx.listchannels","id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: dmx_list_modes
  label: List DMX Modes
  kind: query
  command: '{"jsonrpc":"2.0","method":"dmx.listmodes","id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: environment_get_alarm_info
  label: Get Environment Alarm Information
  kind: query
  command: '{"jsonrpc":"2.0","method":"environment.getalarminfo","id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: firmware_list_components
  label: List Firmware Components
  kind: query
  command: '{"jsonrpc":"2.0","method":"firmware.listcomponents","id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: firmware_list_component_version_status
  label: List Firmware Component Version Status
  kind: query
  command: '{"jsonrpc":"2.0","method":"firmware.listcomponentversionstatus","id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: firmware_schedule_component_upgrade
  label: Schedule Firmware Component Upgrade
  kind: action
  command: '{"jsonrpc":"2.0","method":"firmware.schedulecomponentupgrade","params":{params},"id":{id}}'
  params:
    - name: params
      type: object
      description: "UNRESOLVED: method parameters not stated in source"
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: engage_clo
  label: Engage Constant Light Output
  kind: action
  command: '{"jsonrpc":"2.0","method":"illumination.clo.engage","id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: get_laser_serial_number
  label: Get Laser Serial Number
  kind: query
  command: '{"jsonrpc":"2.0","method":"illumination.laser.getserialnumber","id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: copy_color_preset_to_custom
  label: Copy Color Preset to Custom
  kind: action
  command: '{"jsonrpc":"2.0","method":"image.color.p7.custom.copypresettocustom","params":{"presetname":"{preset_name}"},"id":{id}}'
  params:
    - name: preset_name
      type: string
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: reset_custom_color_preset
  label: Reset Custom Color Preset
  kind: action
  command: '{"jsonrpc":"2.0","method":"image.color.p7.custom.resetpreset","params":{"presetname":"{preset_name}"},"id":{id}}'
  params:
    - name: preset_name
      type: string
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: reset_color_to_native
  label: Reset Color to Native
  kind: action
  command: '{"jsonrpc":"2.0","method":"image.color.p7.custom.resettonative","id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

- id: next_rgb_mode
  label: Select Next RGB Mode
  kind: action
  command: '{"jsonrpc":"2.0","method":"image.color.rgbmode.nextrgbmode","id":{id}}'
  params:
    - name: id
      type: integer
      description: JSON-RPC request identifier

Feedbacks

- id: authentication_result
  type: boolean
  response_field: result

- id: property_set_result
  type: boolean
  response_field: result

- id: property_value
  type: any
  response_field: result

- id: projector_state
  type: enum
  property: system.state
  values:
    - boot
    - eco
    - standby
    - ready
    - conditioning
    - on
    - service
    - deconditioning
    - error

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

- id: available_sources
  type: array
  method: image.source.list

- id: available_connectors
  type: array
  method: image.connector.list

- id: detected_signal
  type: object
  property: "image.connector.{connector_object}.detectedsignal"

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

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

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

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

- id: image_brightness
  type: float
  property: image.brightness

- id: environment_control_blocks
  type: dictionary
  method: environment.getcontrolblocks

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

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

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

Variables

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

- id: laser_power
  property: illumination.sources.laser.power
  type: float
  access: read_write
  description: Target power percentage; minimum and maximum are dynamic

- id: image_brightness
  property: image.brightness
  type: float
  access: read_write
  minimum: -1
  maximum: 1
  precision: 0.01
  default: 0

- id: image_contrast
  property: image.contrast
  type: float
  access: read_write
  minimum: 0
  maximum: 2
  precision: 0.01
  default: 1

- id: image_gamma
  property: image.gamma
  type: float
  access: read_write
  minimum: 1
  maximum: 3
  precision: 0.1
  default: 2.2

- id: image_saturation
  property: image.saturation
  type: float
  access: read_write
  minimum: 0
  maximum: 2
  precision: 0.01
  default: 1

- id: image_sharpness
  property: image.sharpness
  type: integer
  access: read_write
  minimum: -2
  maximum: 8
  precision: 1

- id: image_orientation
  property: image.orientation
  type: enum
  access: read_write
  values: [DESKTOP_FRONT, DESKTOP_REAR, CEILING_FRONT, CEILING_REAR]

- id: image_scaling_mode
  property: image.window.main.scalingmode
  type: enum
  access: read_write
  values: [Fill, OneToOne, FillScreen, Stretch]

- id: warp_enabled
  property: image.processing.warp.enable
  type: boolean
  access: read_write

- id: warp_file_enabled
  property: image.processing.warp.file.enable
  type: boolean
  access: read_write

- id: warp_file_selected
  property: image.processing.warp.file.selected
  type: string
  access: read_write

- id: blend_file_enabled
  property: image.processing.blend.file.enable
  type: boolean
  access: read_write

- id: blend_file_selected
  property: image.processing.blend.file.selected
  type: array
  items: string
  access: read_write

- id: black_level_file_enabled
  property: image.processing.blacklevel.file.enable
  type: boolean
  access: read_write

- id: black_level_file_selected
  property: image.processing.blacklevel.file.selected
  type: string
  access: read_write

- id: dmx_mode
  property: dmx.mode
  type: string
  access: read_write

- id: dmx_start_channel
  property: dmx.startchannel
  type: integer
  access: read_write
  minimum: 1
  maximum: 512

- id: dmx_shutdown
  property: dmx.shutdown
  type: boolean
  access: read_write

- id: shutter_target
  property: optics.shutter.target
  type: enum
  access: read_write
  values: [Open, Closed]

- id: standby_enabled
  property: system.standby.enable
  type: boolean
  access: read_write

- id: eco_enabled
  property: system.eco.enable
  type: boolean
  access: read_write

Events

- id: property_changed
  method: property.changed
  command: '{"jsonrpc":"2.0","method":"property.changed","params":{"property":[{property_value_pairs}]}}'
  description: Unsolicited notification carrying property/value pairs; contains no id and requires no response

- id: signal_callback
  method: signal.callback
  command: '{"jsonrpc":"2.0","method":"signal.callback","params":{"signal":[{signal_argument_pairs}]}}'
  description: Unsolicited notification carrying signal/argument-list pairs; contains no id and requires no response

- id: model_updated
  signal: modelupdated
  description: Triggered when objects are added or removed

Macros

- id: select_active_source
  label: Select Active Source Safely
  steps:
    - command: '{"jsonrpc":"2.0","method":"image.source.list","id":1}'
    - command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.window.main.source","value":"{source}"},"id":2}'

- id: activate_warp_file
  label: Upload and Activate Warp File
  steps:
    - command: 'POST http://{projector-address}/api/image/processing/warp/file/transfer multipart/form-data file=@{file}'
    - command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.file.selected","value":"{filename}"},"id":11}'
    - command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.file.enable","value":true},"id":12}'

- id: activate_blend_mask
  label: Upload and Activate Blend Mask
  steps:
    - command: 'POST http://{projector-address}/api/image/processing/blend/file/transfer multipart/form-data file=@{file}'
    - command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blend.file.selected","value":"{filename}"},"id":13}'
    - command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blend.file.enable","value":true},"id":14}'

- id: activate_black_level_mask
  label: Upload and Activate Black-Level Mask
  steps:
    - command: 'POST http://{projector-address}/api/image/processing/blacklevel/file/transfer multipart/form-data file=@{file}'
    - command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blacklevel.file.selected","value":"{filename}"},"id":15}'
    - command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blacklevel.file.enable","value":true},"id":16}'

Safety

confirmation_required_for:
  - firmware_schedule_component_upgrade
interlocks:
  - action: power_on
    requirement: Verify system.state is standby or ready before issuing command
  - action: power_off
    requirement: Verify system.state is on before issuing command
  - action: property_set
    requirement: Wait for property.set confirmation before setting same property again
  - action: set_laser_power
    requirement: Read dynamic minimum and maximum power levels before setting value
  - action: serial_eco_wake
    requirement: Use only when projector is in ECO mode

Notes

Pulse object, property, method, and signal availability is dynamic. Installed lenses, peripherals, configuration, and access level can change exposed API members; use introspect to discover exact projector capabilities.

Normal end-user access may skip authentication. Elevated access starts with an authenticate request containing a secret pass code.

Property subscriptions report later changes only. Use property.get separately to obtain current value.

Notifications contain no request identifier, and client must not return a response.

Source-selection notifications can arrive twice: first with an empty source while old source is deselected, then with newly selected source.

HTTP file endpoints may support upload, download, or both. Supported blend and black-level image formats are PNG, JPEG, and TIFF; grayscale data is used, with blue channel selected from color images.

Provenance

source_domains:
  - audiogeneral.com
source_urls:
  - "https://www.audiogeneral.com/barco/UDX%20Series/JSON_ReferenceGuide.pdf"
retrieved_at: 2026-08-18T18:11:05.765Z
last_checked_at: 2026-08-19T08:58:22.695Z

Verification Summary

verdict: verified
checked_at: 2026-08-19T08:58:22.695Z
matched_actions: 53
action_count: 53
confidence: medium
summary: "All 53 spec actions match documented JSON-RPC methods, HTTP file endpoints, and the serial wake command; transport parameters (port 9090, 19200 baud) verbatim in source. (4 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "source describes a dynamic API whose exact availability depends on projector configuration and installed peripherals."
- "passcode provisioning and valid credential format not stated in source"
- "method parameters not stated in source\""
- "firmware compatibility range and fault recovery procedures not stated in source."

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