Summary
Barco IOSONO Core audio/visual processor controlled via JSON-RPC 2.0 over TCP/IP or RS-232 serial. Supports power management, source selection, image adjustment (brightness, contrast, gamma, saturation, sharpness), illumination control, warp/blend/blacklevel file management, optics control (shutter, zoom, focus, lens shift), DMX, environment monitoring, and firmware updates. The source document titles the API "Pulse API" and references projector hardware throughout — the exact IOSONO Core command surface may differ.
Transport
protocols:
- tcp
- serial
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 normal end-user access; required for elevated access levels. Passcode sent via authenticate method."
Traits
traits:
- powerable # inferred: system.poweron / system.poweroff commands present
- queryable # inferred: property.get method and state queries present
- levelable # inferred: brightness, contrast, gamma, saturation, illumination power controls present
- routable # inferred: source selection via image.window.main.source present
Actions
actions:
- id: authenticate
label: Authenticate
kind: action
params:
- name: code
type: integer
description: Secret passcode for elevated access level
notes: "Required only for access levels above normal end user"
- id: system_poweron
label: Power On
kind: action
params: []
method: system.poweron
notes: "No-op if already on or in state transition"
- id: system_poweroff
label: Power Off
kind: action
params: []
method: system.poweroff
notes: "No-op if already off or in state transition"
- id: property_set
label: Set Property
kind: action
params:
- name: property
type: string
description: "Dot-notation property name (e.g. image.brightness)"
- name: value
type: any
description: Value to set
method: property.set
notes: "Best practice: wait for confirmation before setting same property again"
- id: property_get
label: Get Property
kind: action
params:
- name: property
type: string
description: "Dot-notation property name, or array of names for multi-get"
method: property.get
- id: property_subscribe
label: Subscribe to Property Changes
kind: action
params:
- name: property
type: string
description: "Dot-notation property name, or array of names"
method: property.subscribe
- id: property_unsubscribe
label: Unsubscribe from Property Changes
kind: action
params:
- name: property
type: string
description: "Dot-notation property name, or array of names"
method: property.unsubscribe
- id: signal_subscribe
label: Subscribe to Signal
kind: action
params:
- name: signal
type: string
description: "Signal name, or array of names"
method: signal.subscribe
- id: signal_unsubscribe
label: Unsubscribe from Signal
kind: action
params:
- name: signal
type: string
description: "Signal name, or array of names"
method: signal.unsubscribe
- id: introspect
label: Introspect Object Tree
kind: action
params:
- name: object
type: string
description: "Object name in dot notation (empty = all)"
- name: recursive
type: boolean
description: "If false, list only immediate child object names"
method: introspect
- id: image_source_list
label: List Available Sources
kind: action
params: []
method: image.source.list
- id: image_connector_list
label: List Available Connectors
kind: action
params: []
method: image.connector.list
- id: set_active_source
label: Set Active Source
kind: action
params:
- name: source
type: string
description: "Source name from image.source.list (e.g. DisplayPort 1, HDMI)"
method: property.set
notes: "property: image.window.main.source"
- id: environment_getcontrolblocks
label: Get Environment Sensor Data
kind: action
params:
- name: type
type: string
description: "Sensor type (Sensor, Filter, Controller, Actuator, Alarm, GenericBlock)"
- name: valuetype
type: string
description: "Value type (Temperature, Speed, Voltage, etc.)"
method: environment.getcontrolblocks
- id: environment_getalarminfo
label: Get Alarm Info
kind: action
params: []
method: environment.getalarminfo
- id: illumination_clo_engage
label: Engage CLO
kind: action
params: []
method: illumination.clo.engage
notes: "Engage Constant Light Output at current light level"
- id: firmware_listcomponents
label: List Firmware Components
kind: action
params: []
method: firmware.listcomponents
- id: firmware_listcomponentversionstatus
label: List Firmware Version Status
kind: action
params: []
method: firmware.listcomponentversionstatus
- id: firmware_scheduleupgrade
label: Schedule Firmware Upgrade
kind: action
params: []
method: firmware.schedulecomponentupgrade
notes: "Schedules upgrade at next reboot"
- id: dmx_listmodes
label: List DMX Modes
kind: action
params: []
method: dmx.listmodes
- id: dmx_listchannels
label: List DMX Channels
kind: action
params: []
method: dmx.listchannels
- id: image_source_listconnectors
label: List Connectors for Source
kind: action
params:
- name: source_object_name
type: string
description: "Source object name (e.g. displayport1 derived from 'DisplayPort 1')"
method: "image.source.[name].listconnectors"
notes: "Source name translated: remove non-word chars, lowercase"
- id: eco_wake_serial
label: Wake from ECO Mode (Serial)
kind: action
params: []
notes: "Send ASCII ':POWR1\\r' on RS232 serial port"
- id: illumination_laser_power_set
label: Set Laser Power
kind: action
method: property.set
params:
- name: value
type: float
description: "Target laser power in percent"
notes: "property: illumination.sources.laser.power"
- id: illumination_laser_minpower_get
label: Get Laser Minimum Power
kind: query
method: property.get
params:
- name: property
type: string
description: "illumination.sources.laser.minpower"
notes: "Read-only: minimum laser power in percent"
- id: illumination_laser_maxpower_get
label: Get Laser Maximum Power
kind: query
method: property.get
params:
- name: property
type: string
description: "illumination.sources.laser.maxpower"
notes: "Read-only: maximum laser power in percent"
- id: illumination_laser_getserialnumber
label: Get Laser Serial Number
kind: query
method: illumination.laser.getserialnumber
params: []
- id: image_color_p7_custom_copypresettocustom
label: Copy Preset to Custom
kind: action
method: image.color.p7.custom.copypresettocustom
params:
- name: presetname
type: string
description: "Name of the preset to copy to custom"
- id: image_color_p7_custom_resetpreset
label: Reset Preset to Default
kind: action
method: image.color.p7.custom.resetpreset
params:
- name: presetname
type: string
description: "Name of the preset to reset back to default values"
- id: image_color_p7_custom_resettonative
label: Reset to Native
kind: action
method: image.color.p7.custom.resettonative
params: []
- id: image_color_rgbmode_nextrgbmode
label: Next RGB Mode
kind: action
method: image.color.rgbmode.nextrgbmode
params: []
notes: "Cycles through all possible RGB modes"
Feedbacks
feedbacks:
- id: system_state
type: enum
values: [boot, eco, standby, ready, conditioning, on, deconditioning, service, error]
property: system.state
notes: "Current projector state"
- id: illumination_state
type: enum
values: ["On", "Off"]
property: illumination.state
- id: active_source
type: string
property: image.window.main.source
notes: "Currently displayed source name"
- id: environment_alarmstate
type: enum
values: [Fatal, Error, Alert, Warning, Ok]
property: environment.alarmstate
- id: connector_detected_signal
type: object
property: "image.connector.[name].detectedsignal"
notes: "Signal info including resolution, refresh rate, color space, scan type"
- id: illumination_power
type: float
property: "illumination.sources.laser.power"
notes: "Current laser power in percent"
- id: illumination_min_power
type: float
property: "illumination.sources.laser.minpower"
- id: illumination_max_power
type: float
property: "illumination.sources.laser.maxpower"
Variables
variables:
- id: image_brightness
property: image.brightness
type: float
min: -1
max: 1
step_size: 1
precision: 0.01
access: read_write
- id: image_contrast
property: image.contrast
type: float
min: 0
max: 2
step_size: 1
precision: 0.01
access: read_write
- id: image_gamma
property: image.gamma
type: float
min: 1
max: 3
step_size: 1
precision: 0.1
access: read_write
notes: "Default 2.2"
- id: image_saturation
property: image.saturation
type: float
min: 0
max: 2
step_size: 1
precision: 0.01
access: read_write
- id: image_sharpness
property: image.sharpness
type: integer
min: -2
max: 8
access: read_write
- id: image_orientation
property: image.orientation
type: enum
values: [DESKTOP_FRONT, DESKTOP_REAR, CEILING_FRONT, CEILING_REAR]
access: read_write
- id: image_scalingmode
property: image.window.main.scalingmode
type: enum
values: [Fill, OneToOne, FillScreen, Stretch]
access: read_write
- id: optics_shutter_position
property: optics.shutter.position
type: enum
values: [Open, Closed]
access: read_only
- id: optics_shutter_target
property: optics.shutter.target
type: enum
values: [Open, Closed]
access: read_write
- id: optics_zoom_position
property: optics.zoom.position
type: integer
access: read_write
- id: optics_focus_position
property: optics.focus.position
type: integer
access: read_write
- id: optics_lensshift_horizontal
property: optics.lensshift.horizontal.position
type: integer
access: read_write
- id: optics_lensshift_vertical
property: optics.lensshift.vertical.position
type: integer
access: read_write
- id: dmx_mode
property: dmx.mode
type: string
access: read_write
- id: dmx_startchannel
property: dmx.startchannel
type: integer
access: read_write
notes: "Range 1..512"
- id: dmx_shutdown
property: dmx.shutdown
type: boolean
access: read_write
- id: network_lan_state
property: network.device.lan.state
type: enum
values: [CONNECTED, DISCONNECTED]
access: read_only
- id: system_standby_enable
property: system.standby.enable
type: boolean
access: read_write
- id: system_eco_enable
property: system.eco.enable
type: boolean
access: read_write
- id: warp_enable
property: image.processing.warp.enable
type: boolean
access: read_write
- id: warp_file_enable
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_enable
property: image.processing.blend.file.enable
type: boolean
access: read_write
- id: blend_file_selected
property: image.processing.blend.file.selected
type: array
access: read_write
- id: blacklevel_file_enable
property: image.processing.blacklevel.file.enable
type: boolean
access: read_write
- id: blacklevel_file_selected
property: image.processing.blacklevel.file.selected
type: string
access: read_write
Events
events:
- id: property_changed
description: "Unsolicited notification when a subscribed property value changes"
method: property.changed
payload:
- name: property
type: array
description: "Array of {objectname.propertyname: value} objects"
- id: signal_callback
description: "Unsolicited notification when a subscribed signal fires"
method: signal.callback
payload:
- name: signal
type: array
description: "Array of {objectname.signalname: {args}} objects"
- id: modelupdated
description: "Triggered when object structure changes (objects added or removed)"
signal: modelupdated
notes: "Subscribe via signal.subscribe; callback includes object name and isnew flag"
Macros
# UNRESOLVED: no multi-step macro sequences described in source
Safety
confirmation_required_for: []
interlocks: []
notes: >
Source recommends verifying system.state is standby/ready before power on,
and on before power off. No-op if already in target state or transitioning.
# UNRESOLVED: no explicit safety interlock procedures documented in source
Notes
- All commands use JSON-RPC 2.0 format over both TCP and serial connections.
- Source object names derived by removing non-word characters and lowercasing (e.g. "DisplayPort 1" → "displayport1").
- File uploads (warp grids, blend masks, blacklevel masks) use HTTP POST to
/api/...endpoints, not JSON-RPC. - API is partially dynamic — available properties/methods depend on hardware configuration and peripherals. Use introspect to discover exact surface.
- ECO wake via serial requires raw ASCII
:POWR1\r(not JSON-RPC).
Provenance
source_domains:
- audiogeneral.com
- docs
source_urls:
- "https://www.audiogeneral.com/barco/UDX%20Series/JSON_ReferenceGuide.pdf"
retrieved_at: 2026-05-14T11:32:46.530Z
last_checked_at: 2026-06-02T21:40:42.550Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:40:42.550Z
matched_actions: 31
action_count: 31
confidence: medium
summary: "All 31 spec actions traced to source. (8 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source document describes \"Pulse API\" for Barco Pulse projectors, not IOSONO Core specifically — command availability may vary"
- "firmware version compatibility not stated in source"
- "no multi-step macro sequences described in source"
- "no explicit safety interlock procedures documented in source"
- "source document describes \"Pulse API\" for Barco Pulse projectors; IOSONO Core command surface may differ significantly"
- "HTTP file endpoint base URL uses default HTTP port — exact port not stated (only TCP JSON-RPC port 9090 documented)"
- "illumination source type (laser/LED/xenon) varies by model — introspection required"
- "network.device.lan.ip4config structure defined but DHCP/static configuration method not documented"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0