Summary
The ClearOne ViewPro v1.0 is controlled via the StreamNet ASCII protocol over TCP or UDP. The protocol uses a structured text message format with addressing, keywords, and XML-like report payloads. The source document (StreamNet Integration & Programmer's Guide, Part No. 800-000-017, Rev. 1.0) covers the general StreamNet protocol applicable to multiple ClearOne devices including the ViewPro.
Transport
protocols:
- tcp
- udp
addressing:
port: 15000
auth:
type: none # inferred: no auth procedure in source
Traits
traits:
- powerable # inferred: AMP ON/OFF, ACTIVE ON/OFF commands
- levelable # inferred: VOL, BASS, TREB, BALANCE, BAND_x level controls
- routable # inferred: SRC_SEL, TEMPSRC source routing commands
- queryable # inferred: QUERY RENDERER, QUERY CURRENT_SOURCE, QUERY SOURCE commands
Actions
actions:
- id: active_on
label: Activate Renderer
kind: action
command: "#ACTIVE ON"
params: []
description: Sets the Active Audio Renderer Service to ON
- id: active_off
label: Deactivate Renderer
kind: action
command: "#ACTIVE OFF"
params: []
description: Sets the Active Audio Renderer Service to OFF; stops audio output
- id: amp_on
label: Amplifier On
kind: action
command: "#AMP ON"
params: []
description: Turns the amplifier ON
- id: amp_off
label: Amplifier Off
kind: action
command: "#AMP OFF"
params: []
description: Turns the amplifier OFF; renderer remains active
- id: mute_on
label: Mute On
kind: action
command: "#MUTE ON"
params: []
- id: mute_off
label: Mute Off
kind: action
command: "#MUTE OFF"
params: []
- id: mute_toggle
label: Mute Toggle
kind: action
command: "#MUTE TOGGLE"
params: []
- id: level_set_vol
label: Set Volume
kind: action
command: "#LEVEL_SET VOL, {x}"
params:
- name: x
type: integer
min: 0
max: 100
description: Volume level (0=min, 100=max)
- id: level_up_vol
label: Volume Up
kind: action
command: "#LEVEL_UP VOL"
params: []
- id: level_dn_vol
label: Volume Down
kind: action
command: "#LEVEL_DN VOL"
params: []
- id: level_set_bass
label: Set Bass
kind: action
command: "#LEVEL_SET BASS, {x}"
params:
- name: x
type: integer
min: 0
max: 100
description: Bass level (50=nominal)
- id: level_up_bass
label: Bass Up
kind: action
command: "#LEVEL_UP BASS"
params: []
- id: level_dn_bass
label: Bass Down
kind: action
command: "#LEVEL_DN BASS"
params: []
- id: level_set_treb
label: Set Treble
kind: action
command: "#LEVEL_SET TREB, {x}"
params:
- name: x
type: integer
min: 0
max: 100
description: Treble level (50=nominal)
- id: level_up_treb
label: Treble Up
kind: action
command: "#LEVEL_UP TREB"
params: []
- id: level_dn_treb
label: Treble Down
kind: action
command: "#LEVEL_DN TREB"
params: []
- id: level_set_balance
label: Set Balance
kind: action
command: "#LEVEL_SET BALANCE, {x}"
params:
- name: x
type: integer
min: 0
max: 100
description: "Balance (0=full left, 50=center, 100=full right)"
- id: level_up_balance
label: Balance Right
kind: action
command: "#LEVEL_UP BALANCE"
params: []
- id: level_dn_balance
label: Balance Left
kind: action
command: "#LEVEL_DN BALANCE"
params: []
- id: level_set_band
label: Set EQ Band
kind: action
command: "#LEVEL_SET BAND_{x}, {y}"
params:
- name: x
type: integer
min: 1
max: 5
description: Band number (1-5)
- name: y
type: integer
min: 0
max: 100
description: Band level (50=nominal)
- id: level_up_band
label: EQ Band Up
kind: action
command: "#LEVEL_UP BAND_{x}"
params:
- name: x
type: integer
min: 1
max: 5
description: Band number (1-5)
- id: level_dn_band
label: EQ Band Down
kind: action
command: "#LEVEL_DN BAND_{x}"
params:
- name: x
type: integer
min: 1
max: 5
description: Band number (1-5)
- id: src_sel
label: Select Source
kind: action
command: "#SRC_SEL {{{source_id}}}"
params:
- name: source_id
type: string
description: Source service name (case-sensitive, wrapped in double braces if contains spaces)
- id: src_sel_next
label: Select Next Source
kind: action
command: "#SRC_SEL NEXT"
params: []
- id: src_desel
label: Deselect Source
kind: action
command: "#SRC_SEL \" \""
params: []
description: Deselects current audio source; no source rendered
- id: tempsrc
label: Temporary Source Select
kind: action
command: "#TEMPSRC {{{source_name}}}, {timeout}"
params:
- name: source_name
type: string
description: Source name to temporarily play
- name: timeout
type: integer
required: false
description: Timeout in seconds after which renderer returns to original source
- id: tempsrc_off
label: Cancel Temporary Source
kind: action
command: "#TEMPSRC OFF"
params: []
description: Unconditionally cancels any active TEMPSRC
- id: tempsrc_cancel
label: Cancel Named Temporary Source
kind: action
command: "#TEMPSRC {{{source_name}}}, OFF"
params:
- name: source_name
type: string
description: Name of the temp source to cancel; no effect if name does not match
- id: multiaudio_join
label: Join Multi-Zone Session
kind: action
command: "#MULTIAUDIO JOIN {{{session_name}}}"
params:
- name: session_name
type: string
description: Multi-zone session name (must not be an existing group name)
- id: multiaudio_leave
label: Leave Multi-Zone Session
kind: action
command: "#MULTIAUDIO LEAVE"
params: []
- id: menu_list
label: List Menu Items
kind: action
command: "#MENU_LIST {m}, {n}, {{{path}}}"
params:
- name: m
type: integer
description: Starting item number
- name: n
type: integer
description: Ending item number
- name: path
type: string
description: Menu navigation path (e.g. "sources" or "media>Artists")
- id: menu_sel
label: Select Menu Item
kind: action
command: "#MENU_SEL {{{path}}}"
params:
- name: path
type: string
description: Navigation path formed by concatenating idpath and itemId with ">"
- id: query_renderer
label: Query Renderer State
kind: action
command: "#QUERY RENDERER"
params: []
- id: query_current_source
label: Query Current Source
kind: action
command: "#QUERY CURRENT_SOURCE"
params: []
- id: query_source
label: Query Source Details
kind: action
command: "#QUERY SOURCE"
params: []
- id: register
label: Register for Status
kind: action
command: "#REGISTER {{{service_name}}}"
params:
- name: service_name
type: string
description: Service to register for status updates; must be renewed every 30 seconds
description: TCP only; registers to receive unsolicited #REPORT messages for a service
- id: heartbeat
label: Heartbeat / Keepalive
kind: action
command: "#HEARTBEAT"
params: []
description: Dummy command to keep TCP connection alive; send every 30 seconds
- id: sleep
label: Sleep
kind: action
command: "#SLEEP"
params: []
description: Sets the renderer service to sleep state
- id: intercom_create
label: Create Intercom Session
kind: action
command: "#INTERCOM CREATE, {{{id}}}, {{{audience}}}"
params:
- name: id
type: string
description: Session name
- name: audience
type: string
description: Service, room, or group to participate
- id: intercom_ptt
label: Intercom Push-to-Talk
kind: action
command: "#INTERCOM PTT"
params: []
description: Turns on microphone for 300ms; must repeat every 100ms to keep on
- id: intercom_ptt_off
label: Intercom PTT Off
kind: action
command: "#INTERCOM PTT OFF"
params: []
- id: intercom_leave
label: Leave Intercom Session
kind: action
command: "#INTERCOM LEAVE, {tag_number}"
params:
- name: tag_number
type: integer
required: false
description: Unique session ID; if omitted all sessions are dropped
- id: intercom_monitor
label: Start Room Monitor
kind: action
command: "#INTERCOM MONITOR, {{{room_name}}}, {{{audience}}}"
params:
- name: room_name
type: string
description: Room to monitor
- name: audience
type: string
description: Service, room, or group that will monitor
- id: intercom_leave_monitor
label: Leave Intercom Monitor Session
kind: action
command: "#INTERCOM LEAVE, MONITOR"
params: []
description: Terminates any active room monitoring intercom session in the addressed room
- id: intercom_leave_entry
label: Leave Intercom Entry Session
kind: action
command: "#INTERCOM LEAVE, ENTRY"
params: []
description: Forces an intercom room out of a Door/Entry session
Feedbacks
feedbacks:
- id: renderer_state
type: report
trigger: "#QUERY RENDERER response or unsolicited"
payload:
vol: integer
balance: integer
bass: integer
treb: integer
loud: integer
mute: integer
audioSession: string
audioSessionActive: integer
ampOn: integer
- id: current_source
type: report
trigger: "#QUERY CURRENT_SOURCE response or unsolicited"
payload:
currentSource: string
currentSourceIP: string
permId: string
- id: source_detail
type: report
trigger: "#QUERY SOURCE response or unsolicited"
payload:
song: string
album: string
artist: string
genre: string
time: string
percent: string
active: string
controlState: string
shuffle: string
- id: intercom_state
type: report
trigger: unsolicited
payload:
sessions: integer
active: integer
recentSessionID: string
recentSessionTag: string
icVol: integer
privacy: integer
DND: integer
kind: string
monitor: integer
entry: integer
initiator: string
- id: menu_response
type: report
trigger: "#MENU_LIST response"
payload:
id: string
display: string
children: integer
itemnum: integer
idpath: string
disppath: string
description: One #MENU_RESP per item; itemnum negative means end of list
Variables
variables:
- id: volume
type: integer
min: 0
max: 100
unit: percent
set_command: "#LEVEL_SET VOL, {value}"
- id: bass
type: integer
min: 0
max: 100
unit: percent
set_command: "#LEVEL_SET BASS, {value}"
- id: treble
type: integer
min: 0
max: 100
unit: percent
set_command: "#LEVEL_SET TREB, {value}"
- id: balance
type: integer
min: 0
max: 100
unit: percent
set_command: "#LEVEL_SET BALANCE, {value}"
- id: eq_band
type: integer
min: 0
max: 100
unit: percent
set_command: "#LEVEL_SET BAND_{band}, {value}"
params:
- name: band
type: integer
min: 1
max: 5
Events
events:
- id: unsolicited_report
description: >
Unsolicited #REPORT messages sent on state change or periodically via UDP multicast,
TCP registration, or UDP subscription. Payload is XML-like label/value pairs wrapped
in double braces {{<report ... />}}.
Macros
# UNRESOLVED: #MACRO command mentioned but no macro definitions or syntax documented in source
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings, interlock procedures, or power-on sequencing found in source
Notes
- Message syntax:
#@toAddress:fromAddress%modifier#keyword arg1, arg2, ... argN /0— all messages begin with#and terminate with a0x00null byte. Max length 1000 characters. - Addressing: Messages are addressed by service name, not IP address. The StreamNet system routes messages to the correct device. Special subnodes:
~CURSRC,~IRMOD,~SERIAL_X,~KEYPAD,~ROOT,~STATUS,~SUBSCRIBER. - TCP keepalive: TCP connections close after 60 seconds of inactivity. Send
#HEARTBEATor#REGISTERevery 30 seconds to maintain the connection. - TCP connection limit: Maximum 4 TCP clients per StreamNet device.
- TCP routing: When sending via TCP, omit the
:fromAddress; the system adds it automatically asrootServiceName~TCPn.n.n.n_pppp. - UDP responses: For UDP, include a
:fromAddresswith subnode~UDP<ip>_<port>so the system knows where to send responses. - Registration:
#REGISTERexpires after 30 seconds; must be repeated to continue receiving status. - Report parsing:
#REPORTpayloads look like XML but are flat (no nested tags). Attribute order may vary; attributes may be added or omitted. Parse by attribute name, not position. Data may be split across multiple#REPORTmessages. - Escape sequences: Special characters in reports use HTML-style
&#nnnn;format. - Source selection: Source names are case-sensitive and must be wrapped in
{{double braces}}if they contain spaces or special characters. - Discovery port: 8000 (separate from control port 15000). Time sync port: 5001.
Provenance
source_domains:
- web.archive.org
source_urls:
- "https://web.archive.org/web/20240626112103/https://www.clearone.com/sites/default/files/2019-07/StreamNet%20Integration%20and%20Programmers%20Guide.pdf"
- "https://web.archive.org/web/20240627004859/https://www.clearone.com/sites/default/files/2019-07/VIEW%20VIRTUAL%20MATRIX%20Control%20and%20Installation%20Guide.pdf"
- "https://web.archive.org/web/20240626092836/https://www.clearone.com/sites/default/files/2019-07/Using%201-Way%20RS232%20to%20Control%20Sources.pdf"
- "https://web.archive.org/web/20240626060739/https://www.clearone.com/sites/default/files/2019-07/VIEW%20Pro%20Decoder%20Install%20%26%20User%20Manual.pdf"
- https://web.archive.org/web/20240627011557/https://www.clearone.com/sites/default/files/2020-01/VIEW_Pro_Encoder_Installation_Manual.pdf
retrieved_at: 2026-06-03T06:31:55.862Z
last_checked_at: 2026-06-03T06:31:55.862Z
Verification Summary
verdict: verified
checked_at: 2026-06-03T06:31:55.862Z
matched_actions: 45
action_count: 45
confidence: medium
summary: "Perfect match: 45 actions verified, transport correct (11 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "ViewPro v1.0 is not explicitly named in the source document; the document is a general StreamNet protocol guide. Specific ViewPro features beyond StreamNet standard commands are unknown."
- "#MACRO command mentioned but no macro definitions or syntax documented in source"
- "no safety warnings, interlock procedures, or power-on sequencing found in source"
- "ViewPro v1.0 model not explicitly mentioned in source; document is general StreamNet protocol guide"
- "No firmware version compatibility stated"
- "#SET command mentioned but not documented"
- "#MACRO command mentioned but no syntax or definitions provided"
- "GPIO/LUA driver details mentioned but not documented"
- "No error response format documented"
- "Multicast address is configurable, not fixed"
- "UDP subscription configuration requires StreamNet Dealer Setup Program"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0