Summary
The Roland P-20HD is a video deck supporting both LAN (TCP/IP) and RS-232 remote control. Control uses ASCII command strings prefixed with STX (02H) and terminated by semicolon. LAN control requires user ID/password authentication on TCP port 8023; RS-232 supports 9,600 or 38,400 bps with XON/XOFF flow control.
Transport
protocols:
- tcp
- serial
addressing:
port: 8023 # TCP control port (LAN CONTROL)
serial:
baud_rate: 9600 # default; 38400 also supported
data_bits: 8
parity: none
stop_bits: 1
flow_control: xon_xoff # RS-232 only
auth:
type: user_pass # LAN: user ID + password required (USR/PSS); RS-232: no auth
Traits
- powerable # inferred: EXT (shutdown) command present
- queryable # inferred: extensive inquiry commands present (QPJ, QMD, QRC, QPL, ...)
- routable # inferred: SLI (switch input), SLO (switch output) present
- levelable # inferred: VOL (audio level) command present
Actions
- id: auth_user_id
label: Input User ID (Authentication)
kind: action
command: "USR{user_id}"
params:
- name: user_id
type: string
description: User ID set on the device
- id: auth_password
label: Input Password (Authentication)
kind: action
command: "PSS{password}"
params:
- name: password
type: string
description: Password set on the device
- id: end_communication
label: End Communication
kind: action
command: "QIT"
params: []
# --- Operation ---
- id: recording_start
label: Recording Start
kind: action
command: "REC"
params: []
- id: recording_stop
label: Recording Stop
kind: action
command: "RES"
params: []
- id: playback_start
label: Playback Start
kind: action
command: "PLY"
params: []
- id: pause
label: Pause
kind: action
command: "PUS"
params: []
- id: jog
label: Jog
kind: action
command: "JOG{direction}"
params:
- name: direction
type: integer
description: 1 (forward), -1 (reverse)
- id: shuttle
label: Shuttle
kind: action
command: "SHT{speed}"
params:
- name: speed
type: integer
description: "-8 (x-128), -7 (x-64), -6 (x-32), -5 (x-16), -4 (x-8), -3 (x-4), -2 (x-2), -1 (x-1), 0 (x0), 1 (x1), 2 (x2), 3 (x4), 4 (x8), 5 (x16), 6 (x32), 7 (x64), 8 (x128)"
- id: set_playback_speed
label: Change Playback Speed
kind: action
command: "SPC{speed}"
params:
- name: speed
type: integer
description: 0-100
- id: switch_playback_speed_range
label: Switch Playback Speed Range
kind: action
command: "SPR{range}"
params:
- name: range
type: integer
description: 0 (SPEED RANGE button unlit), 1 (SPEED RANGE button lit)
- id: set_in_point
label: IN Point Settings
kind: action
command: "MIN{source}"
params:
- name: source
type: integer
description: 0 (replay video), 1 (live in video)
- id: set_out_point
label: OUT Point Settings
kind: action
command: "MOT{source}"
params:
- name: source
type: integer
description: 0 (replay video), 1 (live in video)
- id: clips_create
label: Clips Create
kind: action
command: "MCL{source}"
params:
- name: source
type: integer
description: 0 (replay video), 1 (live in video)
- id: clips_select
label: Clips Select
kind: action
command: "CLS{index}"
params:
- name: index
type: integer
description: 1-512 (clip list), 1-64 (palette)
- id: clips_playback_start
label: Clips Playback Start
kind: action
command: "APC"
params: []
- id: clips_cue_up
label: Clips Cue Up
kind: action
command: "CLQ{index}"
params:
- name: index
type: integer
description: 1-512 (clip list), 1-64 (palette)
- id: clips_delete
label: Clips Deleting
kind: action
command: "CLD{index}"
params:
- name: index
type: integer
description: 1-512 (clip list), 1-64 (palette)
- id: bookmark_set
label: Bookmark Setting
kind: action
command: "BMK{source}"
params:
- name: source
type: integer
description: 0 (replay video), 1 (live in video)
- id: bookmark_delete
label: Bookmark Deleting
kind: action
command: "DMK"
params: []
- id: switch_input
label: Switch Input
kind: action
command: "SLI{input}"
params:
- name: input
type: integer
description: 1 (LIVE IN 1), 2 (LIVE IN 2), 3 (PinP), 4 (SPLIT)
- id: switch_output
label: Switch Output
kind: action
command: "SLO{output}"
params:
- name: output
type: integer
description: 0 (replay video), 1 (live in video)
- id: jump_next_bookmark
label: Jump to Next Bookmark
kind: action
command: "JNB"
params: []
- id: jump_prev_bookmark
label: Jump to Previous Bookmark
kind: action
command: "JPB"
params: []
- id: jump_timeline_beginning
label: Timeline Jump to Beginning
kind: action
command: "JTP"
params: []
- id: jump_timeline_end
label: Timeline Jump to End
kind: action
command: "JED"
params: []
- id: playlist_select
label: Playlist Select
kind: action
command: "PLS{playlist}"
params:
- name: playlist
type: integer
description: 0 (clip list), 1-8 (palettes 1-8)
- id: playlist_playback_start
label: Playlist Playback Start
kind: action
command: "APL{index}"
params:
- name: index
type: integer
description: 1-512 (clip list), 1-64 (palette)
- id: playlist_auto_play_stop
label: Playlist Auto-play Stop
kind: action
command: "SAP"
params: []
- id: palette_add_current_clip
label: Palette Add Current Clip
kind: action
command: "ATP{palette}"
params:
- name: palette
type: integer
description: 1-8 (palettes 1-8)
- id: still_image_playback
label: Still Image Clips Playback
kind: action
command: "STP{index}"
params:
- name: index
type: integer
description: 1-16 (still image clips 1-16)
- id: still_image_stop
label: Still Image Clips Stopping
kind: action
command: "STS"
params: []
- id: audio_clip_playback
label: Audio Clips Playback
kind: action
command: "AUP{index}"
params:
- name: index
type: integer
description: 1-16 (audio clips 1-16)
- id: audio_clip_stop
label: Audio Clips Stopping
kind: action
command: "AUS"
params: []
- id: set_audio_level
label: Set Audio Level
kind: action
command: "VOL{level}"
params:
- name: level
type: integer
description: -801 (-INF dB), -800 (-80.0 dB)-0 (0.0 dB)-100 (10.0 dB)
# --- System ---
- id: active_sense
label: Request Active Sensing
kind: action
command: "ACS"
params: []
- id: request_version
label: Request Version Information
kind: action
command: "VER"
params: []
- id: shutdown
label: Shut Down This Unit
kind: action
command: "EXT"
params: []
# --- Inquiry (queries) ---
- id: query_open_project
label: Check for Open Project
kind: query
command: "QPJ"
params: []
- id: query_project_mode
label: Get Project Recording/Playback Mode
kind: query
command: "QMD"
params: []
- id: query_recording_status
label: Get Recording Status
kind: query
command: "QRC"
params: []
- id: query_playback_status
label: Get Playback Status
kind: query
command: "QPL"
params: []
- id: query_playback_speed
label: Get Playback Speed
kind: query
command: "QSP"
params: []
- id: query_playback_range
label: Get Playback Range
kind: query
command: "QSR"
params: []
- id: query_in_point_status
label: Get IN Point Setting Status
kind: query
command: "QMI"
params: []
- id: query_input_selection
label: Get Input Selection Status
kind: query
command: "QIS"
params: []
- id: query_output_selection
label: Get Output Selection Status
kind: query
command: "QOS"
params: []
- id: query_audio_level
label: Get Audio Level
kind: query
command: "QAL"
params: []
- id: query_current_playlist
label: Get Playlist Containing Currently Selected Clip
kind: query
command: "QPS"
params: []
- id: query_current_clip_number
label: Get Number of Currently Selected Clip
kind: query
command: "QCS"
params: []
- id: query_cued_playlist
label: Get Playlist Containing Cued-Up Clip
kind: query
command: "QPQ"
params: []
- id: query_cued_clip_number
label: Get Number of Cued-Up Clip
kind: query
command: "QCQ"
params: []
- id: query_clip_available
label: Check Whether Clip Is Available in Specified Position
kind: query
command: "QCX{playlist},{position}"
params:
- name: playlist
type: integer
description: 0 (clip list), 1-8 (palettes)
- name: position
type: integer
description: 1-512 (when playlist=0), 1-64 (when playlist=1-8)
- id: query_audio_clip_available
label: Check Whether Audio Clip Is Available in Specified Position
kind: query
command: "QAX{position}"
params:
- name: position
type: integer
description: Audio clip position to check
- id: query_still_image_clip_available
label: Check Whether Still Image Clip Is Available in Specified Position
kind: query
command: "QSX{position}"
params:
- name: position
type: integer
description: Still image clip position to check
- id: query_playlist_clip_count
label: Get Number of Clips in Specified Playlist
kind: query
command: "QCC{playlist}"
params:
- name: playlist
type: integer
description: 0 (clip list), 1-8 (palettes)
Feedbacks
- id: ack_response
label: ACK Response
type: enum
values:
- ACK # 06H - command accepted
- NAK # 15H - command rejected (auth fail, syntax, invalid, out of range)
- id: auth_result
label: Authentication Result
type: enum
values:
- ACK # User ID / password accepted
- NAK # Authentication failed
- id: version_info
label: Version Information
type: string
description: ASCII version string returned by VER
- id: open_project_status
label: Open Project Status
type: enum
values:
- 0 # no project open
- 1 # project open
- id: project_mode
label: Project Recording/Playback Mode
type: enum
values:
- 0 # Resolution
- 1 # Frame Rate
- id: recording_status
label: Recording Status
type: enum
values:
- 0 # recording stopped
- 1 # recording
- id: playback_status
label: Playback Status
type: enum
values:
- 0 # playback paused
- 1 # playing back
- 2 # playing back clip
- 3 # playing back playlist
- id: playback_speed
label: Playback Speed
type: integer
range: -100-100
- id: playback_range
label: Playback Speed Range
type: enum
values:
- 0 # SPEED RANGE button unlit
- 1 # SPEED RANGE button lit
- id: in_point_status
label: IN Point Status
type: enum
values:
- 0 # not set
- 1 # set
- id: input_selection_status
label: Input Selection Status
type: enum
values:
- 1 # LIVE IN 1
- 2 # LIVE IN 2
- 3 # PinP
- 4 # SPLIT
- id: output_selection_status
label: Output Selection Status
type: enum
values:
- 0 # replay video
- 1 # live in video
- id: audio_level
label: Audio Level
type: integer
description: -801 (-INF dB), -800 (-80.0 dB)-0 (0.0 dB)-100 (10.0 dB)
- id: current_playlist
label: Current Playlist
type: integer
description: 0 (clip list), 1-8 (palettes 1-8)
- id: current_clip_number
label: Current Clip Number
type: integer
description: 1-512 (clip list), 1-64 (palette)
- id: cued_playlist
label: Cued Playlist
type: integer
description: 0 (clip list), 1-8 (palettes 1-8)
- id: cued_clip_number
label: Cued Clip Number
type: integer
description: 1-512 (clip list), 1-64 (palette)
- id: clip_available
label: Clip Available Check
type: enum
values:
- 0 # not available
- 1 # available
- id: audio_clip_available
label: Audio Clip Available Check
type: enum
values:
- 0 # not available
- 1 # available
- id: still_image_clip_available
label: Still Image Clip Available Check
type: enum
values:
- 0 # not available
- 1 # available
- id: playlist_clip_count
label: Playlist Clip Count
type: integer
description: 0-512 (clip list), 0-64 (palettes)
Variables
# All settable parameters are exposed as discrete actions; no separate Variables section applies.
Events
- id: error_detected
label: Error Detected
description: Spontaneously sent when an error is detected
params:
- name: error_code
type: integer
description: 0 (syntax error), 4 (invalid / controlled by another setting), 5 (out of range)
Macros
# No explicit multi-step macros documented.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings or interlock procedures stated in source
Notes
- Command frame:
STX(02H)+ 3-char command code +:+ params (comma-separated) +;(3BH) - Control codes: STX (02H), ACK (06H), NAK (15H), XON (11H), XOFF (13H)
- RS-232: 9,600 or 38,400 bps, 8N1, XON/XOFF flow control only
- LAN: TCP 8023 for control; FTP on TCP 21 uses same user ID/password (disable anonymous auth)
- LAN connection severs after 5 minutes of inactivity; maintain with periodic ACS commands
- RS-232 connector pinout: pin 2 RXD, 3 TXD, 4 DTR, 5 GND, 6 DSR, 7 RTS, 8 CTS; crossover cable required
- For V-80HD switcher sync: RS-232 must be set to 38,400 bps, Remote Control = "Switcher", Target Model = V-80HD
Provenance
source_domains:
- static.roland.com
source_urls:
- https://static.roland.com/assets/media/pdf/P-20HD_reference_v20_eng02_W.pdf
retrieved_at: 2026-06-12T02:50:58.564Z
last_checked_at: 2026-06-12T19:35:17.831Z
Verification Summary
verdict: verified
checked_at: 2026-06-12T19:35:17.831Z
matched_actions: 56
action_count: 56
confidence: medium
summary: "All 56 spec actions confirmed in source with exact command codes and parameter shapes; transport parameters verified in LAN/RS-232 sections. (3 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "FTP credentials character format/size limits not documented; V-80HD switcher synchronization protocol details not fully specified"
- "no safety warnings or interlock procedures stated in source"
- "V-80HD switcher sync protocol message details not specified; user ID/password character format/size limits not stated"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0