Summary

Xilica Solaro Series DSP platform controlled via TCP (port 10007) and UDP (port 10008). ASCII text command protocol with subscription-based change notifications. Control objects are user-defined strings assigned via Xilica Designer; control groups aggregate multiple parameters under a $-prefixed name. Password-protected device operation requires LOGIN before issuing commands.

Transport

protocols:
  - tcp
  - udp
addressing:
  port: 10007
  secondary_port: 10008
auth:
  type: password
  note: LOGIN command required if device is password-protected

Traits

- queryable
- routable
- levelable

Actions

- id: set
  label: Set Parameter Value
  kind: action
  params:
    - name: control_object
      type: string
    - name: data
      type: "[number|string|boolean]"

- id: setraw
  label: Set Raw Parameter Value
  kind: action
  params:
    - name: control_object
      type: string
    - name: data
      type: number

- id: get
  label: Get Formatted Parameter Value
  kind: query
  params:
    - name: control_object
      type: string

- id: getraw
  label: Get Raw Parameter Value
  kind: query
  params:
    - name: control_object
      type: string

- id: inc
  label: Increment Parameter
  kind: action
  params:
    - name: control_object
      type: string
    - name: data
      type: number

- id: incraw
  label: Increment Parameter Raw
  kind: action
  params:
    - name: control_object
      type: string
    - name: data
      type: number

- id: dec
  label: Decrement Parameter
  kind: action
  params:
    - name: control_object
      type: string
    - name: data
      type: number

- id: decraw
  label: Decrement Parameter Raw
  kind: action
  params:
    - name: control_object
      type: string
    - name: data
      type: number

- id: toggle
  label: Toggle Parameter State
  kind: action
  params:
    - name: control_object
      type: string

- id: preset
  label: Recall Preset
  kind: action
  params:
    - name: data
      type: "[number|string]"

- id: subscribe
  label: Subscribe to Parameter Notifications
  kind: action
  params:
    - name: control_object
      type: string
    - name: protocol
      type: string
      description: '"TCP" or "UDP", defaults to TCP'

- id: unsubscribe
  label: Unsubscribe from Parameter Notifications
  kind: action
  params:
    - name: control_object
      type: string

- id: keepalive
  label: Keep TCP Connection Alive
  kind: action
  params: []

- id: interval
  label: Set Subscription Notification Interval
  kind: action
  params:
    - name: time_ms
      type: number
      description: Minimum interval in milliseconds (minimum 100)

- id: login
  label: Unlock Password-Protected Device
  kind: action
  params:
    - name: password
      type: string

- id: reboot
  label: Remotely Reboot Device
  kind: action
  params: []

- id: refresh
  label: Get Formatted Data for All Control Objects
  kind: query
  params: []

- id: create
  label: Create Control Group
  kind: action
  params:
    - name: group_name
      type: string
      description: "$ prefix auto-added by device"

- id: remove
  label: Remove Control Group
  kind: action
  params:
    - name: group_name
      type: string

- id: join
  label: Add Control Object to Group
  kind: action
  params:
    - name: group_name
      type: string
    - name: control_object
      type: string

- id: leave
  label: Remove Control Object from Group
  kind: action
  params:
    - name: group_name
      type: string
    - name: control_object
      type: string

Feedbacks

- id: error_response
  type: string
  description: ERROR=<error code> for invalid commands
  values: []
  note: Error codes 101-118 defined in source

- id: get_response
  type: string
  description: <control_object>=<data>

- id: refresh_response
  type: string
  description: <control_object>=<data> repeated for all control objects

- id: ok_response
  type: enum
  values: [OK]

- id: subscription_notification
  type: string
  description: "#<control_object>=<data>"

- id: login_response
  type: enum
  values: [OK, ERROR]
  note: OK returned on successful login; ERROR (108) on bad password

- id: reboot_response
  type: enum
  values: [OK, none]
  note: Neutrino returns OK; Solaro sends no response before rebooting

Variables

# Control object values are set via SET/SETRAW actions and queried via GET/GETRAW.
# Variables depend on user-defined control objects configured in Xilica Designer.
# UNRESOLVED: specific parameter names (gain, mute, EQ, etc.) not stated in source

Events

# Unsolicited subscription notifications sent via TCP or UDP.
# Format: #<control_object>=<data>
# UNRESOLVED: specific trigger conditions not enumerated in source

Macros

# No explicit multi-step macros documented.
# Control groups provide batch control: CREATE, JOIN, LEAVE, REMOVE.

Safety

confirmation_required_for: []
interlocks:
  - TCP disconnection clears all subscriptions and group settings; must reconfigure after reconnect
  - UDP Broadcast subscription requires separate TCP connection for keep-alive
  - Password authentication required per connection; re-login needed after TCP disconnect

Notes

Control objects are user-defined strings (up to 32 chars, no double quotes, first char cannot be $). Control groups are $-prefixed strings. Both case-sensitive. White space separating fields is required; extra whitespace causes parse error. Responses end with . Subscription notifications use # prefix to distinguish from explicit GET responses.

String value options: Filter Type (Butterworth, LR, Bessel), Filter Slope (6-48db/Oct in 6db steps), AFS Sensitivity (Very Low to Very High), AFS Type (Dynamic, Fixed), Control Ramp Type (Linear, Log, Audio).

Error codes: 101 Invalid Command, 102 Bad Arguments, 103 Invalid Data Format, 104 Control Object Not Found, 105 Parameter Not Found, 106 Data Value Not Found, 107 Max Subscription Reached, 108 Password Error, 109 Not Yet Login, 110 Command Not Supported, 111 Invalid Group Name, 112 Max Control Group Reached, 113 Max Control Object in Group Reached, 114 Object Already in Group, 115 Object Not in Group, 116 Conflicting With Other Objects in Group, 117 Invalid Preset #, 118 Invalid Preset Name.

INTERVAL applies globally on Solaro (per-connection on Neutrino). KEEPALIVE required every 60s or connection dropped.

Provenance

source_domains:
  - cdn.xilica.com
  - support.xilica.com
source_urls:
  - https://cdn.xilica.com/designer/FAQ/X22_Solaro_API_Guide.pdf
  - https://support.xilica.com/en/categories/1363842-programming-api
retrieved_at: 2026-05-27T13:10:20.490Z
last_checked_at: 2026-05-31T22:46:45.017Z

Verification Summary

verdict: verified
checked_at: 2026-05-31T22:46:45.017Z
matched_actions: 21
action_count: 21
confidence: medium
summary: "All 21 spec actions match source commands verbatim; transport parameters (TCP 10007, UDP 10008, password auth) confirmed; no omitted source commands. (6 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "specific model variants (FR1, Q1, etc.) firmware compatibility not stated"
- "specific parameter names (gain, mute, EQ, etc.) not stated in source"
- "specific trigger conditions not enumerated in source"
- "firmware version compatibility not stated"
- "specific DSP parameters (gain ranges, frequency steps, etc.) not enumerated in source"
- "maximum number of subscriptions, control groups, or objects per group not specified"

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