Summary
Barco Fsn3G 2002 projector exposes Pulse API control over TCP/IP and RS-232. TCP service uses port 9090; JSON-RPC methods control power, sources, illumination, image processing, introspection, environment data, firmware, and file endpoints.
Transport
protocols:
- tcp
- serial
addressing:
port: 9090
serial:
baud_rate: 19200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: secret_code # Authentication request requires secret pass code for elevated access; normal end-user access may skip authentication.
Traits
- powerable # inferred from system.poweron and system.poweroff
- routable # inferred from image.window.main.source and source-management commands
- queryable # inferred from property.get, introspect, and list/query methods
- levelable # inferred from illumination and image-property controls
Actions
- id: system_poweron
label: Power On
kind: action
command: '{"jsonrpc":"2.0","method":"system.poweron"}'
params: []
- id: system_poweroff
label: Power Off
kind: action
command: '{"jsonrpc":"2.0","method":"system.poweroff"}'
params: []
- id: select_input
label: Select Active Source
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.window.main.source","value":"{source}"}}'
params:
- name: source
type: string
description: Available source name returned by image.source.list.
- 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 Available Connectors
kind: query
command: '{"jsonrpc":"2.0","method":"image.connector.list"}'
params: []
- id: property_get
label: Read Property
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: Read Multiple Properties
kind: query
command: '{"jsonrpc":"2.0","method":"property.get","params":{"property":["{property}"]}}'
params:
- name: property
type: array
description: Array of dot-notation property names.
- id: property_set
label: Set Property
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"{property}","value":{value}}}'
params:
- name: property
type: string
description: Dot-notation property name.
- name: value
type: any
description: Value accepted by target property.
- 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.
- id: property_subscribe_multiple
label: Subscribe to Multiple Property Changes
kind: action
command: '{"jsonrpc":"2.0","method":"property.subscribe","params":{"property":["{property}"]}}'
params:
- name: property
type: array
description: Array of dot-notation property 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.
- id: property_unsubscribe_multiple
label: Unsubscribe from Multiple Property Changes
kind: action
command: '{"jsonrpc":"2.0","method":"property.unsubscribe","params":{"property":["{property}"]}}'
params:
- name: property
type: array
description: Array of dot-notation property 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: Dot-notation signal name.
- id: signal_subscribe_multiple
label: Subscribe to Multiple Signals
kind: action
command: '{"jsonrpc":"2.0","method":"signal.subscribe","params":{"signal":["{signal}"]}}'
params:
- name: signal
type: array
description: Array of signal 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: Dot-notation signal name.
- id: signal_unsubscribe_multiple
label: Unsubscribe from Multiple Signals
kind: action
command: '{"jsonrpc":"2.0","method":"signal.unsubscribe","params":{"signal":["{signal}"]}}'
params:
- name: signal
type: array
description: Array of signal names.
- id: introspect_recursive
label: Recursive Introspection
kind: query
command: '{"jsonrpc":"2.0","method":"introspect","params":["{object}",true]}'
params:
- name: object
type: string
description: Object name in dot notation.
- id: introspect_nonrecursive
label: Non-Recursive Introspection
kind: query
command: '{"jsonrpc":"2.0","method":"introspect","params":["{object}",false]}'
params:
- name: object
type: string
description: Object name in dot notation.
- id: image_source_listconnectors
label: List Source Connectors
kind: query
command: '{"jsonrpc":"2.0","method":"image.source.{source_object}.listconnectors"}'
params:
- name: source_object
type: string
description: Lowercase source object name.
- id: environment_getcontrolblocks
label: Read Environment Control Blocks
kind: query
command: '{"jsonrpc":"2.0","method":"environment.getcontrolblocks","params":{"type":"{type}","valuetype":"{valuetype}"}}'
params:
- name: type
type: string
description: Sensor, Filter, Controller, Actuator, Alarm, or GenericBlock.
- name: valuetype
type: string
description: Documented environment value type.
- id: environment_getalarminfo
label: Read Alarm Information
kind: query
command: '{"jsonrpc":"2.0","method":"environment.getalarminfo"}'
params: []
- id: dmx_listchannels
label: List DMX Channels
kind: query
command: '{"jsonrpc":"2.0","method":"dmx.listchannels"}'
params: []
- id: dmx_listmodes
label: List DMX Modes
kind: query
command: '{"jsonrpc":"2.0","method":"dmx.listmodes"}'
params: []
- id: firmware_listcomponents
label: List Firmware Components
kind: query
command: '{"jsonrpc":"2.0","method":"firmware.listcomponents"}'
params: []
- id: firmware_listcomponentversionstatus
label: List Firmware Component Version Status
kind: query
command: '{"jsonrpc":"2.0","method":"firmware.listcomponentversionstatus"}'
params: []
- id: firmware_schedulecomponentupgrade
label: Schedule Firmware Component Upgrade
kind: action
command: '{"jsonrpc":"2.0","method":"firmware.schedulecomponentupgrade"}'
params: []
- id: illumination_clo_engage
label: Engage Constant Light Output
kind: action
command: '{"jsonrpc":"2.0","method":"illumination.clo.engage"}'
params: []
- id: illumination_laser_getserialnumber
label: Read Laser Serial Number
kind: query
command: '{"jsonrpc":"2.0","method":"illumination.laser.getserialnumber"}'
params: []
- id: image_color_p7_custom_copypresettocustom
label: Copy Preset to Custom
kind: action
command: '{"jsonrpc":"2.0","method":"image.color.p7.custom.copypresettocustom","params":{"presetname":"{presetname}"}}'
params:
- name: presetname
type: string
description: Preset name.
- id: image_color_p7_custom_resetpreset
label: Reset Custom Preset
kind: action
command: '{"jsonrpc":"2.0","method":"image.color.p7.custom.resetpreset","params":{"presetname":"{presetname}"}}'
params:
- name: presetname
type: string
description: Preset name.
- 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: Select Next RGB Mode
kind: action
command: '{"jsonrpc":"2.0","method":"image.color.rgbmode.nextrgbmode"}'
params: []
- id: warp_upload
label: Upload Warp File
kind: action
command: 'curl -X POST -F file=@{file} http://{address}/api/image/processing/warp/file/transfer'
params:
- name: file
type: string
description: Local warp file path.
- name: address
type: string
description: Projector network address.
- id: warp_select_file
label: Select Warp File
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.file.selected","value":"{file}"}}'
params:
- name: file
type: string
description: Uploaded warp filename.
- id: warp_enable
label: Enable Warp
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.enable","value":true}}'
params: []
- id: warp_file_enable
label: Enable File Warp
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.warp.file.enable","value":true}}'
params: []
- id: blend_upload
label: Upload Blend Mask
kind: action
command: 'curl -X POST -F file=@{file} http://{address}/api/image/processing/blend/file/transfer'
params:
- name: file
type: string
description: Local blend mask path.
- name: address
type: string
description: Projector network address.
- id: blend_select_file
label: Select Blend Mask
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blend.file.selected","value":"{file}"}}'
params:
- name: file
type: string
description: Uploaded blend filename.
- id: blend_file_enable
label: Enable Blend Mask
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blend.file.enable","value":true}}'
params: []
- id: blacklevel_upload
label: Upload Black Level Mask
kind: action
command: 'curl -X POST -F file=@{file} http://{address}/api/image/processing/blacklevel/file/transfer'
params:
- name: file
type: string
description: Local black-level mask path.
- name: address
type: string
description: Projector network address.
- id: blacklevel_select_file
label: Select Black Level Mask
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blacklevel.file.selected","value":"{file}"}}'
params:
- name: file
type: string
description: Uploaded black-level filename.
- id: blacklevel_file_enable
label: Enable Black Level Mask
kind: action
command: '{"jsonrpc":"2.0","method":"property.set","params":{"property":"image.processing.blacklevel.file.enable","value":true}}'
params: []
- id: eco_wake_serial
label: Wake from ECO Mode
kind: action
command: ':POWR1\r'
params: []
Feedbacks
- id: system_state
type: enum
property: system.state
values:
- boot
- eco
- standby
- ready
- conditioning
- on
- deconditioning
- service
- error
- id: active_source
type: string
property: image.window.main.source
- id: illumination_state
type: enum
property: illumination.state
values:
- On
- Off
- id: detected_signal
type: object
property: image.connector.{connector}.detectedsignal
- id: property_changed
type: object
property: property.changed
- id: signal_callback
type: object
property: signal.callback
- 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
- id: shutter_target
type: enum
property: optics.shutter.target
values:
- Open
- Closed
- id: environment_alarm_state
type: enum
property: environment.alarmstate
values:
- Fatal
- Error
- Alert
- Warning
- Ok
Variables
- id: laser_power
type: float
property: illumination.sources.laser.power
range:
min: 0
max: 100
- id: image_brightness
type: float
property: image.brightness
range:
min: -1
max: 1
precision: 0.01
- id: image_contrast
type: float
property: image.contrast
range:
min: 0
max: 2
precision: 0.01
- id: image_gamma
type: float
property: image.gamma
range:
min: 1
max: 3
precision: 0.1
- id: image_saturation
type: float
property: image.saturation
range:
min: 0
max: 2
precision: 0.01
- id: image_sharpness
type: integer
property: image.sharpness
range:
min: -2
max: 8
- id: image_window_position
type: object
property: image.window.main.position
- id: image_window_size
type: object
property: image.window.main.size
- id: image_scaling_mode
type: enum
property: image.window.main.scalingmode
values:
- Fill
- OneToOne
- FillScreen
- Stretch
- id: image_orientation
type: enum
property: image.orientation
values:
- DESKTOP_FRONT
- DESKTOP_REAR
- CEILING_FRONT
- CEILING_REAR
- id: selected_warp_file
type: string
property: image.processing.warp.file.selected
- id: selected_blend_file
type: array
property: image.processing.blend.file.selected
- id: selected_blacklevel_file
type: string
property: image.processing.blacklevel.file.selected
- id: dmx_mode
type: string
property: dmx.mode
- id: dmx_start_channel
type: integer
property: dmx.startchannel
range:
min: 1
max: 512
- id: dmx_shutdown
type: boolean
property: dmx.shutdown
- id: network_ipv4_config
type: object
property: network.device.lan.ip4config
- id: zoom_position
type: integer
property: optics.zoom.position
- id: focus_position
type: integer
property: optics.focus.position
- id: lensshift_horizontal_position
type: integer
property: optics.lensshift.horizontal.position
- id: lensshift_vertical_position
type: integer
property: optics.lensshift.vertical.position
- id: standby_enabled
type: boolean
property: system.standby.enable
- id: eco_enabled
type: boolean
property: system.eco.enable
Events
- id: property_changed
type: notification
command: '{"jsonrpc":"2.0","method":"property.changed","params":{"property":[{"{property}":{value}}]}}'
- id: signal_callback
type: notification
command: '{"jsonrpc":"2.0","method":"signal.callback","params":{"signal":[{"{signal}":{arguments}}]}}'
- id: model_updated
type: signal
name: modelupdated
command: '{"jsonrpc":"2.0","method":"signal.callback","params":{"signal":[{"modelupdated":{arguments}}]}}'
Macros
- id: activate_uploaded_warp_file
label: Upload, select, enable warp file
steps:
- action: warp_upload
- action: warp_select_file
- action: warp_file_enable
- id: activate_uploaded_blend_mask
label: Upload, select, enable blend mask
steps:
- action: blend_upload
- action: blend_select_file
- action: blend_file_enable
- id: activate_uploaded_blacklevel_mask
label: Upload, select, enable black-level mask
steps:
- action: blacklevel_upload
- action: blacklevel_select_file
- action: blacklevel_file_enable
Safety
confirmation_required_for:
- system_poweroff
interlocks:
- Verify system.state is standby or ready before system.poweron.
- Verify system.state is on before system.poweroff.
Notes
Pulse API availability varies by projector configuration and peripherals. Use introspection to determine exact available objects, methods, properties, and signals.
Wait for property.set confirmation before setting same property again; repeated writes without confirmation may flood server and reduce performance.
Authentication requires secret pass code for elevated access. Normal end-user access may skip authentication.
ECO-mode wake may require Wake-on-LAN, remote/keypad power button, or RS-232 command :POWR1\r.
Provenance
source_domains:
- audiogeneral.com
source_urls:
- "https://www.audiogeneral.com/barco/UDX%20Series/JSON_ReferenceGuide.pdf"
retrieved_at: 2026-08-01T18:16:39.551Z
last_checked_at: 2026-08-05T08:05:15.881Z
Verification Summary
verdict: verified
checked_at: 2026-08-05T08:05:15.881Z
matched_actions: 43
action_count: 43
confidence: medium
summary: "All 43 spec actions map verbatim to JSON-RPC methods, HTTP file endpoints, or the RS-232 wake sequence documented in the source; transport parameters match exactly. (4 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "Exact Fsn3G 2002-specific API availability depends on projector configuration and must be confirmed through introspection."
- "Authentication secret pass-code format and credentials not stated in source."
- "Exact Fsn3G 2002-specific source, connector, illumination, lens, DMX, environment, firmware, and image API availability not fully identified."
- "Firmware compatibility ranges not stated in source."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0