Summary
ASCII control protocol for Yealink video conferencing systems (UVC family and related VC-series endpoints). Commands are sent as line-terminated ASCII strings over LAN TCP port 6024 or over RS-232 serial (115200 8N1). The spec covers call, camera, layout, mute, volume, DND, address book, history, input source, storage, system status and version commands. UVC v1.0 itself is referenced as a Crestron Application Market driver name; the underlying control surface is the same Yealink API.
Transport
protocols:
- tcp
- serial
addressing:
port: 6024
serial:
baud_rate: 115200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: none # inferred: no auth procedure in source
Traits
- powerable # inferred from button power command
- routable # inferred from inputsource camera|pc|share commands
- queryable # inferred from sysstatus get / volume get / mute near get / donotdisturb global get / storage get / version / getcallid / history / addrbook / layout / camera near getposition
- levelable # inferred from volume up/down/set commands
Actions
- id: answer
label: Answer or Refuse Call
kind: action
command: "answer <yes|no>\r\n"
params:
- name: action
type: enum
values: [yes, no]
description: "yes = answer call; no = refuse call"
- id: addrbook_all
label: Address Book - All Contacts
kind: query
command: "addrbook all\r\n"
- id: addrbook_get_all
label: Address Book - Get All by Type
kind: query
command: "addrbook <local|conf> get all\r\n"
params:
- name: type
type: enum
values: [local, conf]
- id: addrbook_get_n
label: Address Book - Get N by Type
kind: query
command: "addrbook <local|conf> get {n}\r\n"
params:
- name: type
type: enum
values: [local, conf]
- name: n
type: integer
description: Number of contacts to return (positive integer)
- id: addrbook_search
label: Address Book - Search
kind: query
command: "addrbook search \"<searchstring>\"\r\n"
params:
- name: searchstring
type: string
- id: button_power
label: Button - Power
kind: action
command: "button power\r\n"
- id: button_f1
label: Button - F1
kind: action
command: "button F1\r\n"
- id: button_f2
label: Button - F2
kind: action
command: "button F2\r\n"
- id: button_f3
label: Button - F3
kind: action
command: "button F3\r\n"
- id: button_volume_up
label: Button - Volume Up
kind: action
command: "button volume+\r\n"
- id: button_volume_down
label: Button - Volume Down
kind: action
command: "button volume-\r\n"
- id: button_zoom_in
label: Button - Zoom In
kind: action
command: "button zoom+\r\n"
- id: button_zoom_out
label: Button - Zoom Out
kind: action
command: "button zoom-\r\n"
- id: button_up
label: Button - Up Arrow
kind: action
command: "button up\r\n"
- id: button_down
label: Button - Down Arrow
kind: action
command: "button down\r\n"
- id: button_right
label: Button - Right Arrow
kind: action
command: "button right\r\n"
- id: button_left
label: Button - Left Arrow
kind: action
command: "button left\r\n"
- id: button_select
label: Button - Select (OK)
kind: action
command: "button select\r\n"
- id: button_mute
label: Button - Mute
kind: action
command: "button mute\r\n"
- id: button_home
label: Button - Home
kind: action
command: "button home\r\n"
- id: button_show
label: Button - Show Video Source (VC110/VC120/VC400)
kind: action
command: "button show\r\n"
- id: button_back
label: Button - Back (VC500/VC800/VC880)
kind: action
command: "button back\r\n"
- id: button_call
label: Button - Call (Off-hook)
kind: action
command: "button call\r\n"
- id: button_delete
label: Button - Delete
kind: action
command: "button delete\r\n"
- id: button_hangup
label: Button - Hangup (On-hook)
kind: action
command: "button hangup\r\n"
- id: button_digit
label: Button - Digit / * / #
kind: action
command: "button <0|1|2|3|4|5|6|7|8|9|*|#>\r\n"
params:
- name: key
type: enum
values: ["0","1","2","3","4","5","6","7","8","9","*","#"]
- id: button_record_start
label: Button - Recording Start
kind: action
command: "button recordstart\r\n"
- id: button_record_stop
label: Button - Recording Stop
kind: action
command: "button recordstop\r\n"
- id: button_screenshot
label: Button - Screenshot
kind: action
command: "button screenshot\r\n"
- id: camera_near_move
label: Camera Near - Move
kind: action
command: "camera near move <left|right|up|down|zoom+|zoom-|stop>\r\n"
params:
- name: direction
type: enum
values: [left, right, up, down, "zoom+", "zoom-", stop]
- id: camera_near_getposition
label: Camera Near - Get Position
kind: query
command: "camera near getposition\r\n"
- id: camera_near_setposition
label: Camera Near - Set Position
kind: action
command: "camera near setposition \"<x>\" \"<y>\" \"<z>\"\r\n"
params:
- name: x
type: integer
description: Pan 0..1920
- name: y
type: integer
description: Tilt 0..1080
- name: z
type: integer
description: Zoom 0..100
- id: camera_near_get_id_list
label: Camera Near - Get ID List
kind: query
command: "camera near get_id_list\r\n"
- id: camera_near_get_id_detial
label: Camera Near - Get ID Detail
kind: query
command: "camera near get_id_detial \"<id:int>\"\r\n"
params:
- name: id
type: integer
description: Camera id (0..n, up to 9)
- id: camera_near_set_active_status
label: Camera Near - Set Active Status
kind: action
command: "camera near set_active_status \"<id:int>\"\r\n"
params:
- name: id
type: integer
- id: camera_near_move_id
label: Camera Near - Move by ID
kind: action
command: "camera near move_id \"<id:int>\" <\"direct:2\"|\"direct:4\"|\"direct:6\"|\"direct:8\"|stop>\r\n"
params:
- name: id
type: integer
- name: direction
type: enum
values: ["direct:2", "direct:4", "direct:6", "direct:8", stop]
description: "2=down 4=up 6=right 8=left"
- id: camera_near_zoom_id
label: Camera Near - Zoom by ID
kind: action
command: "camera near zoom_id \"<id:int>\" <\"direct:0\"|\"direct:1\"|stop>\r\n"
params:
- name: id
type: integer
- name: direction
type: enum
values: ["direct:0", "direct:1", stop]
description: "0=zoom out 1=zoom in"
- id: callinfo_all
label: Call Info - All
kind: query
command: "callinfo all\r\n"
- id: callinfo_callid
label: Call Info - By Call ID
kind: query
command: "callinfo callid \"<callid>\"\r\n"
params:
- name: callid
type: string
- id: dial_auto
label: Dial - Auto
kind: action
command: "dial auto \"<dialstring>\"\r\n"
params:
- name: dialstring
type: string
description: One or more phone numbers (multi for conference)
- id: dial_manual
label: Dial - Manual
kind: action
command: "dial manual <video|audio|auto> <auto|sip|h323> \"<speed>\" \"<dialstring>\"\r\n"
params:
- name: calltype
type: enum
values: [video, audio, auto]
- name: protocol
type: enum
values: [auto, sip, h323]
- name: speed
type: string
description: Bandwidth (e.g. "auto", "1024")
- name: dialstring
type: string
- id: donotdisturb_global
label: DND - Global
kind: action
command: "donotdisturb global <get|on|off>\r\n"
params:
- name: mode
type: enum
values: [get, "on", off]
- id: donotdisturb_talk
label: DND - In Call
kind: action
command: "donotdisturb talk <get|on|off>\r\n"
params:
- name: mode
type: enum
values: [get, "on", off]
- id: gendial
label: Generate DTMF Tone
kind: action
command: "gendial <0|1|2|3|4|5|6|7|8|9|*|#>\r\n"
params:
- name: digit
type: enum
values: ["0","1","2","3","4","5","6","7","8","9","*","#"]
- id: getcallid
label: Get Call IDs
kind: query
command: "getcallid\r\n"
- id: history_all
label: Call History - All
kind: query
command: "history all\r\n"
- id: history_get_all
label: Call History - Get All by Type
kind: query
command: "history <placed|received|misscalled> get all\r\n"
params:
- name: type
type: enum
values: [placed, received, misscalled]
- id: history_get_n
label: Call History - Get N by Type
kind: query
command: "history <placed|received|misscalled> get {n}\r\n"
params:
- name: type
type: enum
values: [placed, received, misscalled]
- name: n
type: integer
description: Number of records
- id: inputsource_camera
label: Input Source - Camera
kind: action
command: "inputsource camera\r\n"
- id: inputsource_pc
label: Input Source - PC
kind: action
command: "inputsource pc\r\n"
- id: inputsource_share
label: Input Source - PC + Camera (in call only)
kind: action
command: "inputsource share\r\n"
- id: layout_near_get
label: Layout Near - Get (VC500/VC800/VC880)
kind: query
command: "layout near get\r\n"
- id: layout_near_get_list
label: Layout Near - Get List (VC500/VC800/VC880)
kind: query
command: "layout near get list\r\n"
- id: layout_near_set
label: Layout Near - Set
kind: action
command: "layout near set <layoutmode> <idlist>\r\n"
params:
- name: layoutmode
type: enum
values: [equal, surround, fullscreen, share, pip, empspk]
- name: idlist
type: string
description: Call id, or pc|share|camera
- id: layout_near_camera_layout_get
label: Layout Near - Get Multi-camera Layout
kind: query
command: "layout near camera_layout_get\r\n"
- id: layout_near_camera_layout_set
label: Layout Near - Set Multi-camera Layout
kind: action
command: "layout near camera_layout_set <layoutmode> <idlist>\r\n"
params:
- name: layoutmode
type: enum
values: [equal, surround, fullscreen]
- name: idlist
type: string
description: Camera ids from camera near get_id_list
- id: mute_near
label: Mute Near (Local Mute)
kind: action
command: "mute near <get|on|off|toggle>\r\n"
params:
- name: mode
type: enum
values: [get, "on", off, toggle]
- id: preset_near_go
label: Camera Preset - Go
kind: action
command: "preset near go <0|1|2|3|4|5|6|7|8|9>\r\n"
params:
- name: preset
type: integer
description: Preset number 0..9
- id: preset_near_set
label: Camera Preset - Set
kind: action
command: "preset near set <0|1|2|3|4|5|6|7|8|9>\r\n"
params:
- name: preset
type: integer
description: Preset number 0..9
- id: storage_get
label: Storage (USB) - Get
kind: query
command: "storage get\r\n"
- id: sysstatus_get
label: System Status - Get
kind: query
command: "sysstatus get\r\n"
- id: volume_get
label: Volume - Get
kind: query
command: "volume get\r\n"
- id: volume_up
label: Volume - Up
kind: action
command: "volume up\r\n"
- id: volume_down
label: Volume - Down
kind: action
command: "volume down\r\n"
- id: volume_set
label: Volume - Set
kind: action
command: "volume set <0..10>\r\n"
params:
- name: level
type: integer
description: Volume level 0..10
- id: version
label: Version
kind: query
command: "version\r\n"
Feedbacks
- id: dnd_global_state
type: enum
values: [on, off]
command: "donotdisturb global get <on|off>\r\n"
- id: dnd_talk_state
type: enum
values: [on, off]
command: "donotdisturb talk get <on|off>\r\n"
- id: mute_state
type: enum
values: [on, off]
command: "mute near get <on|off>\r\n"
- id: storage_state
type: enum
values: [available, unavailable]
command: "storage get <available|unavailable>\r\n"
- id: sysstatus
type: enum
values: [sleeping, idle, outgoing, ringing, talking, finished, "talking max"]
command: "sysstatus get <state> [\"dialstr:...\" \"callid:...\" \"calltype:...\" \"protocol:...\" \"direction:...\"]\r\n"
- id: version_info
type: object
fields:
- model
- firmware
- hardware
- productId
- cc_version
command: "version \"model:...\" \"firmware:...\" \"hardware:...\" \"productId:...\" \"cc_version:...\"\r\n"
- id: incoming_call
type: object
fields:
- num
- name
command: "incoming \"num:<string>\" \"name:<string>\"\r\n"
- id: callinfo_audio
type: object
fields: [callid, RemoteStr, direction, protocol, devInfo, TotalBwRecv, TotalBwSend, AcodecRecv, AcodecSend, ABwRecv, ABwSend, ASrRecv, ASrSend, AJrRecv, AJrSend, AtplRecv, AtplSend, AtplpRecv, AtplpSend]
command: "callinfo audio \"callid:...\" \"RemoteStr:...\" \"direction:...\" \"protocol:...\" \"devInfo:...\" \"TotalBwRecv:...\" ...\r\n"
- id: callinfo_video
type: object
fields: [callid, RemoteStr, direction, protocol, devInfo, TotalBwRecv, TotalBwSend, VResRecv, VResSend, VCodecRecv, VCodecSend, VBwRecv, VBwSend, VFrRecv, VFrSend, VJrRecv, VJrSend, VtplRecv, VtplSend, VtplpRecv, VtplpSend, AcodecRecv, AcodecSend, ABwRecv, ABwSend, ASrRecv, ASrSend, AJrRecv, AJrSend, AtplRecv, AtplSend, AtplpRecv, AtplpSend, SResRecv, SResSend, SCodecRecv, SCodecSend, SBwRecv, SBwSend, SFrRecv, SFrSend]
command: "callinfo video \"callid:...\" ...\r\n"
- id: camera_near_position
type: object
fields: [pan, tilt, zoom]
command: "camera near getposition\r\n"
Variables
- id: volume_level
label: Audio Volume
type: integer
range: [0, 10]
set_command: "volume set {level}\r\n"
get_command: "volume get\r\n"
Events
- id: incoming_call
trigger: device_to_host
command: "incoming \"num:<string>\" \"name:<string>\"\r\n"
description: Sent by device when receiving an incoming call
- id: version_announce
trigger: device_to_host
command: "version \"model:...\" \"firmware:...\" \"hardware:...\" \"productId:...\" \"cc_version:...\"\r\n"
description: Sent by device on first connect over LAN or serial
- id: dnd_global_change
trigger: device_to_host
command: "donotdisturb global get <on|off>\r\n"
description: Sent by device whenever global DND state changes
- id: dnd_talk_change
trigger: device_to_host
command: "donotdisturb talk get <on|off>\r\n"
description: Sent by device whenever in-call DND state changes
- id: mute_change
trigger: device_to_host
command: "mute near get <on|off>\r\n"
description: Sent by device whenever local mute state changes
- id: storage_change
trigger: device_to_host
command: "storage get <available|unavailable>\r\n"
description: Sent by device whenever USB storage availability changes
- id: sysstatus_change
trigger: device_to_host
command: "sysstatus get <state> [...]\r\n"
description: Sent by device on call state changes (outgoing/ringing/talking/finished/etc.)
Macros
# No multi-step sequences documented in the source.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or power-on sequencing requirements.
Notes
- Every command and response must end with
\r\n. Commands are case sensitive; use half-width input. - TCP control port is 6024; serial link is 115200 baud, 8 data bits, no parity, 1 stop bit.
- Layout commands (
layout near ...) are documented as "not applicable to VC110/VC120/VC400" — apply only to VC500/VC800/VC880. button F1/F2/F3semantics differ by VC family: on VC110/VC120/VC400 they are red/yellow/blue; on VC500/VC800/VC880 they are recording/layout/custom.button showis only applicable to VC110/VC120/VC400;button backis only applicable to VC500/VC800/VC880.- Numeric keypad
*and#have model-specific behaviors (record/screenshot) only on VC110/VC120/VC400. sysstatus get finishedis real-time and is only delivered as feedback; it cannot be queried on demand.incoming,version,donotdisturb,mute,storageandsysstatusare unsolicited feedback channels — the device sends them on state changes without a query.
Provenance
source_domains:
- support-cdn.yealink.com
- voipinfo.net
- applicationmarket.crestron.com
source_urls:
- https://support-cdn.yealink.com/attachment/upload/attachment/2019-12-19/5/ea3f2d1b-51d1-43db-86f8-ba1b1f133d04/API_Commands_Introduction_for_Yealink_Video_Conferencing_System_V1.08.pdf
- https://www.voipinfo.net/docs/yealink/API_Commands_Introduction_for_Yealink_Video_Conferencing_System_V1.06.pdf
- https://applicationmarket.crestron.com/yealink-uvc-v1-0/
retrieved_at: 2026-06-13T06:24:48.940Z
last_checked_at: 2026-06-14T16:16:37.750Z
Verification Summary
verdict: verified
checked_at: 2026-06-14T16:16:37.750Z
matched_actions: 66
action_count: 66
confidence: medium
summary: "All 66 spec actions match verbatim source commands with correct shapes; transport parameters confirmed; source catalogue fully represented. (3 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "exact UVC v1.0 hardware models covered (e.g. UVC86/UVC85/UVC40/UVC34/UVC30) are not enumerated in the source PDF. Source describes command syntax generically across the VC family (VC110/VC120/VC400/VC500/VC800/VC880) and notes model differences inline."
- "source contains no safety warnings, interlock procedures, or power-on sequencing requirements."
- "UVC v1.0 hardware models covered (UVC86/UVC85/UVC40/UVC34/UVC30) are not enumerated in the source. The source's per-command model notes reference the older VC family (VC110/VC120/VC400/VC500/VC800/VC880) and the UVC family is implied to use the same surface."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0