Summary
IP control spec for the SunBrite SBV449 Series (Veranda 4) outdoor TV. Commands are ASCII strings over TCP port 4352, prefixed with %1, using 4-character mnemonics, space separator, and <CR> terminator. Covers power, input selection (8 sources), volume, channel, picture/sound modes, navigation, mute, and tuner band select.
Transport
protocols:
- tcp
addressing:
port: 4352
auth:
type: credential
notes: "Default credentials: sunbrite/sunbrite or sunbritetv/sunbritetv; latest firmware forces password change via local GUI; Veranda 2 models do not require auth"
Traits
traits:
- powerable # power on/off/toggle commands present
- routable # input selection commands for 8 sources present
- queryable # power status, volume status, firmware version queries present
- levelable # discrete volume set 000-100 present
Actions
actions:
- id: firmware_version_query
label: Firmware Version Query
kind: query
command: "%1SWVE ?"
params: []
- id: power_status_query
label: Power Status Query
kind: query
command: "%1POWR ?"
params: []
- id: volume_status_query
label: Volume Status Query
kind: query
command: "%1VOLU ?"
params: []
- id: power_toggle
label: Power Toggle
kind: action
command: "%1POWR -"
params: []
- id: power_on
label: Power On
kind: action
command: "%1POWR 1"
params: []
- id: power_off
label: Power Off
kind: action
command: "%1POWR 0"
params: []
- id: input_1_tuner
label: Input 1 - Tuner
kind: action
command: "%1INPT 1"
params: []
- id: input_2_video_av
label: Input 2 - Video (AV)
kind: action
command: "%1INPT 2"
params: []
- id: input_3_component
label: Input 3 - Component
kind: action
command: "%1INPT 3"
params: []
- id: input_4_hdmi_1
label: Input 4 - HDMI 1
kind: action
command: "%1INPT 4"
params: []
- id: input_5_hdmi_2
label: Input 5 - HDMI 2
kind: action
command: "%1INPT 5"
params: []
- id: input_6_hdmi_3
label: Input 6 - HDMI 3
kind: action
command: "%1INPT 6"
params: []
- id: input_7_vga
label: Input 7 - VGA
kind: action
command: "%1INPT 7"
params: []
- id: input_8_usb
label: Input 8 - USB
kind: action
command: "%1INPT 8"
params: []
- id: source_toggle
label: Source Toggle
kind: action
command: "%1INPT -"
params: []
- id: mute
label: Mute
kind: action
command: "%1MUTE 1"
params: []
- id: vol_up
label: Volume Up
kind: action
command: "%1VOLA 1"
params: []
- id: vol_down
label: Volume Down
kind: action
command: "%1VOLA 0"
params: []
# NOTE: source hex column disagrees with ASCII column for this command
# (hex shows MUDE 0, ASCII shows VOLA 0). Using ASCII per mnemonic pattern.
- id: channel_up
label: Channel Up
kind: action
command: "%1CHNA 1"
params: []
- id: channel_down
label: Channel Down
kind: action
command: "%1CHNA 0"
params: []
- id: numb_1
label: Number Key 1
kind: action
command: "%1NUMB 1"
params: []
- id: numb_2
label: Number Key 2
kind: action
command: "%1NUMB 2"
params: []
- id: numb_3
label: Number Key 3
kind: action
command: "%1NUMB 3"
params: []
- id: numb_4
label: Number Key 4
kind: action
command: "%1NUMB 4"
params: []
- id: numb_5
label: Number Key 5
kind: action
command: "%1NUMB 5"
params: []
- id: numb_6
label: Number Key 6
kind: action
command: "%1NUMB 6"
params: []
- id: numb_7
label: Number Key 7
kind: action
command: "%1NUMB 7"
params: []
- id: numb_8
label: Number Key 8
kind: action
command: "%1NUMB 8"
params: []
- id: numb_9
label: Number Key 9
kind: action
command: "%1NUMB 9"
params: []
- id: numb_0
label: Number Key 0
kind: action
command: "%1NUMB 0"
params: []
- id: numb_dash
label: Number Key Dash
kind: action
command: "%1NUMB -"
params: []
- id: channel_return
label: Channel Return (Previous Channel)
kind: action
command: "%1CHRT 1"
params: []
- id: aspect
label: Aspect Ratio Toggle
kind: action
command: "%1ASPE 1"
params: []
- id: enter
label: Enter
kind: action
command: "%1ENTR 1"
params: []
- id: info
label: Info
kind: action
command: "%1INFO 1"
params: []
- id: cc
label: Closed Caption Toggle
kind: action
command: "%1CLCP 1"
params: []
- id: sleep
label: Sleep Timer
kind: action
command: "%1SLEP 1"
params: []
- id: menu
label: Menu
kind: action
command: "%1MENU 0"
params: []
- id: arrow_up
label: Up Arrow
kind: action
command: "%1ARRO 0"
params: []
- id: arrow_down
label: Down Arrow
kind: action
command: "%1ARRO 1"
params: []
- id: arrow_left
label: Left Arrow
kind: action
command: "%1ARRO 2"
params: []
- id: arrow_right
label: Right Arrow
kind: action
command: "%1ARRO 3"
params: []
- id: video_mute_on
label: Video Mute On
kind: action
command: "%1AVMT 11"
params: []
- id: video_mute_off
label: Video Mute Off
kind: action
command: "%1AVMT 10"
params: []
- id: audio_mute_on
label: Audio Mute On
kind: action
command: "%1AVMT 21"
params: []
- id: audio_mute_off
label: Audio Mute Off
kind: action
command: "%1AVMT 20"
params: []
- id: video_audio_mute_on
label: Video and Audio Mute On
kind: action
command: "%1AVMT 31"
params: []
- id: video_audio_mute_off
label: Video and Audio Mute Off
kind: action
command: "%1AVMT 30"
params: []
- id: volume_set
label: Volume Set (Discrete)
kind: action
command: "%1VOLU {level}"
params:
- name: level
type: integer
min: 0
max: 100
description: "Volume level, zero-padded to 3 digits (e.g. 000, 050, 100)"
- id: tuner_air
label: Select Tuner Air
kind: action
command: "%1ARCB 1"
params: []
- id: tuner_cable
label: Select Tuner Cable
kind: action
command: "%1ARCB 2"
params: []
- id: channel_set
label: Discrete Channel Select
kind: action
command: "%1CHAN {major}-{minor}"
params:
- name: major
type: integer
description: "Major channel number (e.g. 004)"
- name: minor
type: integer
description: "Minor/sub-channel number (e.g. 01)"
- id: discrete_picture_mode
label: Discrete Picture Mode
kind: action
command: "%1PICT {mode}"
params:
- name: mode
type: integer
description: "Picture mode number (documented values: 1-7)"
- id: picture_toggle
label: Picture Mode Toggle
kind: action
command: "%1PICT -"
params: []
- id: picture_mode_1
label: Picture Mode 1
kind: action
command: "%1PICT 1"
params: []
- id: picture_mode_2
label: Picture Mode 2
kind: action
command: "%1PICT 2"
params: []
- id: picture_mode_3
label: Picture Mode 3
kind: action
command: "%1PICT 3"
params: []
- id: picture_mode_4
label: Picture Mode 4
kind: action
command: "%1PICT 4"
params: []
- id: picture_mode_5
label: Picture Mode 5
kind: action
command: "%1PICT 5"
params: []
- id: picture_mode_6
label: Picture Mode 6
kind: action
command: "%1PICT 6"
params: []
- id: picture_mode_7
label: Picture Mode 7
kind: action
command: "%1PICT 7"
params: []
- id: sound_toggle
label: Sound Mode Toggle
kind: action
command: "%1SOUN -"
params: []
- id: sound_mode_1
label: Sound Mode 1
kind: action
command: "%1SOUN 1"
params: []
- id: sound_mode_2
label: Sound Mode 2
kind: action
command: "%1SOUN 2"
params: []
- id: sound_mode_3
label: Sound Mode 3
kind: action
command: "%1SOUN 3"
params: []
- id: sound_mode_4
label: Sound Mode 4
kind: action
command: "%1SOUN 4"
params: []
Feedbacks
feedbacks:
- id: power_state
type: enum
values: [on, off, toggling]
description: "Response to POWR? query"
# UNRESOLVED: exact response string format not documented in source
- id: volume_level
type: integer
min: 0
max: 100
description: "Response to VOLU? query"
# UNRESOLVED: exact response string format not documented in source
- id: firmware_version
type: string
description: "Response to SWVE? query"
# UNRESOLVED: exact response string format not documented in source
Variables
# UNRESOLVED: source does not document settable variables separately from actions
Events
# UNRESOLVED: source does not document unsolicited notifications
Macros
# UNRESOLVED: source does not document multi-step sequences
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings or interlock procedures
Notes
- All commands use format:
%1+ 4-char mnemonic + space + parameter +<CR>. The<CR>(0x0D) terminator is required but omitted from command fields above for clarity. - Device address prefix
%1appears on all commands; multi-device scenarios not documented. - Source hex column contains transcription errors (e.g. MUTE hex decodes to
MUDE, VOLA 0 hex showsMUDE 0). ASCII column values used as authoritative. - AVMT parameter encoding: first digit indicates target (1=video, 2=audio, 3=both), second digit indicates state (0=off, 1=on).
- Input 9 and Input 0 listed as "Not supported" in source with no command payload — excluded from actions.
- Volume discrete parameter is zero-padded to 3 digits (e.g.
000,050,100). - Channel select uses
major-minorformat (e.g.%1CHAN 004-01). - Sound and picture mode names/values (1-4, 1-7) not labeled in source beyond numeric identifiers.
Provenance
source_domains:
- docs.control4.com
- help.snapone.com
source_urls:
- https://docs.control4.com/docs/product/sunbrite-veranda-series-2/ip-control-protocol/english/latest/sunbrite-veranda-series-2-ip-control-protocol-rev-b.pdf
- "https://help.snapone.com/sb-v4-ig/Content/Topics/IP%20Control%20Guide.htm"
retrieved_at: 2026-06-10T02:05:10.634Z
last_checked_at: 2026-06-10T07:40:07.420Z
Verification Summary
verdict: verified
checked_at: 2026-06-10T07:40:07.420Z
matched_actions: 66
action_count: 66
confidence: medium
summary: "All 66 spec actions matched with exact ASCII command mnemonics and parameters in source; transport (TCP 4352, credentials) verified. (13 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "RS-232 serial control may exist but is not documented in this source"
- "response format for queries not documented in source"
- "exact response string format not documented in source"
- "source does not document settable variables separately from actions"
- "source does not document unsolicited notifications"
- "source does not document multi-step sequences"
- "source contains no safety warnings or interlock procedures"
- "query response string format not documented"
- "MUTE 1 has no documented MUTE 0 counterpart; AVMT 20/21 may serve as audio unmute"
- "power state response values not specified"
- "maximum concurrent TCP connections not documented"
- "command timing/throttle requirements not documented"
- "connection keepalive or timeout behavior not documented"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0