Summary
Louth Video Disk Communications Protocol (VDCP) is a serial control protocol for video disk systems. The protocol operates over RS-422 full-duplex serial at 38.4 kb/s and uses a binary message format with STX prefix, byte count, command bytes, optional data, and 2's complement checksum. Commands are organized into six types: System, Immediate, Preset/Select, Sense Request, Deferred/Timeline, and Macro. The protocol supports video playback, recording, cueing, and archive management through a comprehensive command set.
Transport
protocols:
- serial
serial:
baud_rate: 38400 # 38.4 kb/s as stated in source
data_bits: 8
parity: odd
stop_bits: 1
flow_control: null # UNRESOLVED: flow control not specified in source
auth:
type: none # inferred: no auth procedure in source
Traits
# Supported traits inferred from command types present:
- powerable # video disk play/record/stop commands present
- routable # input/output selection commands present (2X.38, 2X.39)
- queryable # sense request commands present (3X.05, 3X.06, 3X.07, etc.)
- levelable # audio level commands present (2X.34, 2X.35)
Actions
# System Commands (0X)
- id: local_disable
label: Local Disable
kind: action
params: []
- id: local_enable
label: Local Enable
kind: action
params: []
- id: delete_from_archive
label: Delete From Archive
kind: action
params:
- name: id
type: string
description: 8-character ID to delete from archive
- name: tape_id
type: string
description: Optional tape ID and length byte
- id: delete_protect_id
label: Delete Protect ID
kind: action
params:
- name: id
type: string
description: 8-character ID to protect from deletion
- id: undelete_protect_id
label: Undelete Protect ID
kind: action
params:
- name: id
type: string
description: 8-character ID to unprotect
# Immediate Commands (1X)
- id: stop
label: Stop
kind: action
params: []
- id: play
label: Play
kind: action
params:
- name: prepared_file_handle
type: integer
description: Optional prepared file handle (only if Prepare ID To Play was issued)
- id: record
label: Record
kind: action
params: []
- id: freeze
label: Freeze
kind: action
params: []
- id: still
label: Still
kind: action
params: []
- id: step
label: Step
kind: action
params: []
- id: continue
label: Continue
kind: action
params: []
- id: jog
label: Jog
kind: action
params:
- name: frames
type: integer
description: Frame count (+128/-128 for 1-byte, +2592000/-2592000 for 4-byte signed)
- id: vari_play
label: Variable Play
kind: action
params:
- name: speed
type: integer
description: 24-bit signed binary (000000h=still, 010000h=std fwd, FF0000h=std rev)
- id: unfreeze
label: Unfreeze
kind: action
params: []
- id: ee_mode
label: EE Mode
kind: action
params:
- name: mode
type: integer
description: "0=EE OFF, 1=EE ON, 2=EE AUTO"
# Preset/Select Commands (2X)
- id: rename_id
label: Rename ID
kind: action
params:
- name: original_id
type: string
description: Original 8-character ID
- name: new_id
type: string
description: New 8-character ID
- id: preset_standard_time
label: Preset Standard Time
kind: action
params:
- name: time_mode
type: integer
description: "00h=DF, 01h=non-drop, 02h=PAL"
- name: time
type: string
description: BCD timecode (frames, seconds, minutes, hours)
- id: new_copy
label: New Copy
kind: action
params:
- name: original_id
type: string
description: Source 8-character ID
- name: new_id
type: string
description: Destination 8-character ID
- name: offset
type: integer
description: Start offset within original
- name: duration
type: integer
description: Duration of new copy
- id: sort_mode
label: Sort Mode
kind: action
params:
- name: mode
type: integer
description: "0=alphabetical, 1=FIFO"
- id: close_port
label: Close Port
kind: action
params:
- name: port
type: integer
description: Port number (8-bit signed)
- id: select_port
label: Select Port
kind: action
params:
- name: port
type: integer
description: Port number (8-bit signed)
- id: record_init
label: Record Init
kind: action
params:
- name: id
type: string
description: 8-character ID
- name: length
type: string
description: Duration in BCD (frames, seconds, minutes, hours)
- id: play_cue
label: Play Cue
kind: action
params:
- name: id
type: string
description: 8-character ID to cue
- name: prepared_file_handle
type: integer
description: Optional prepared file handle
- id: cue_with_data
label: Cue with Data
kind: action
params:
- name: id
type: string
description: 8-character ID
- name: start_position
type: string
description: BCD start position
- name: duration
type: string
description: BCD duration
- id: delete_id
label: Delete ID
kind: action
params:
- name: id
type: string
description: 8-character ID to delete
- id: get_from_archive
label: Get From Archive
kind: action
params:
- name: id
type: string
description: 8-character ID
- name: tape_id
type: string
description: Optional tape ID
- id: clear
label: Clear
kind: action
params: []
- id: send_to_archive
label: Send to Archive
kind: action
params:
- name: id
type: string
description: 8-character ID
- name: tape_id
type: string
description: Optional tape ID
- id: percent_to_signal_full
label: Percent to Signal Full
kind: action
params:
- name: percent
type: integer
description: Disk space threshold percentage (0-100)
- id: record_init_with_data
label: Record Init with Data
kind: action
params:
- name: id
type: string
description: 8-character ID
- name: start_position
type: string
description: BCD start position
- name: length
type: string
description: BCD duration
- id: select_logical_drive
label: Select Logical Drive
kind: action
params:
- name: drive_select
type: integer
description: Bit map for drive selection
- id: system_delete_id
label: System Delete ID
kind: action
params:
- name: id
type: string
description: 8-character ID
- id: preset
label: Preset
kind: action
params: []
- id: video_compression_rate
label: Video Compression Rate
kind: action
params:
- name: rate
type: integer
description: 32-bit unsigned bits/sec
- id: audio_sample_rate
label: Audio Sample Rate
kind: action
params:
- name: rate
type: integer
description: Bit map specifying sample rate
- id: audio_compression_rate
label: Audio Compression Rate
kind: action
params:
- name: rate
type: integer
description: Bit map specifying compression rate
- id: audio_in_level
label: Audio In Level
kind: action
params:
- name: level
type: integer
description: 2-byte level value
- id: audio_out_level
label: Audio Out Level
kind: action
params:
- name: level
type: integer
description: 2-byte level value
- id: video_compression_params
label: Video Compression Parameters
kind: action
params:
- name: params
type: integer
description: 4-byte compression parameters
- id: select_output
label: Select Output
kind: action
params:
- name: mode
type: integer
description: "Bit map: D1(10h), YUV(08h), S-Video(04h), Composite(02h), OFF(01h)"
- id: select_input
label: Select Input
kind: action
params:
- name: mode
type: integer
description: "Bit map: D1(10h), YUV(08h), S-Video(04h), Composite(02h), OFF(01h)"
- id: record_mode
label: Record Mode
kind: action
params:
- name: mode
type: integer
description: "Bit map: Video(Bit0), Audio1(Bit1), Audio2(Bit2), etc."
- id: sc_adjust
label: Subcarrier Adjust
kind: action
params:
- name: phase
type: integer
description: 2-byte subcarrier phase value
- id: h_pos_adjust
label: Horizontal Position Adjust
kind: action
params:
- name: timing
type: integer
description: 2-byte H timing value
- id: disk_preroll
label: Disk Preroll
kind: action
params:
- name: frames
type: integer
description: Preroll frames
- name: seconds
type: integer
description: Preroll seconds
- id: copy_file_to
label: Copy File To
kind: action
params:
- name: id
type: string
description: 8-character ID
- name: source
type: integer
description: Source disk address
- name: destination
type: integer
description: Destination disk address(es)
- id: delete_file_from
label: Delete File From
kind: action
params:
- name: id
type: string
description: 8-character ID
- name: destination
type: integer
description: Destination disk address(es)
- id: abort_copy_file_to
label: Abort Copy File To
kind: action
params:
- name: id
type: string
description: 8-character ID
- name: source
type: integer
description: Source disk address
- name: destination
type: integer
description: Destination disk address(es)
- id: asi_pid_select
label: ASI PID Select
kind: action
params:
- name: pid
type: integer
description: 16-bit PID value (0-65535)
# Sense Request Commands (3X)
- id: open_port
label: Open Port
kind: action
params:
- name: port
type: integer
description: Port number (8-bit signed, SIP=-1 to -127, SOP=1 to 127)
- name: security_mode
type: integer
description: "1=locked, 0=unlocked"
- id: next
label: Next
kind: action
params: []
- id: last
label: Last
kind: action
params: []
- id: port_status_request
label: Port Status Request
kind: action
params:
- name: bit_map
type: integer
description: Bit map specifying which status bytes to return
- id: position_request
label: Position Request
kind: action
params:
- name: time_type
type: integer
description: "0=time remaining, 1=SOM-based timecode, 2=zero-based offset"
- id: active_id_request
label: Active ID Request
kind: action
params: []
- id: device_type_request
label: Device Type Request
kind: action
params: []
- id: system_status_request
label: System Status Request
kind: action
params:
- name: bit_map
type: integer
description: Bit map specifying which status to return
- id: id_list
label: ID List
kind: action
params: []
- id: id_size_request
label: ID Size Request
kind: action
params:
- name: id
type: string
description: 8-character ID name
- id: ids_added_to_arch
label: List IDs Added to Archive
kind: action
params: []
- id: id_request
label: ID Request
kind: action
params:
- name: id
type: string
description: 8-character ID name
- name: disk_handle
type: integer
description: Optional remote disk handle
- id: compression_settings_request
label: Compression Settings Request
kind: action
params:
- name: bit_map
type: integer
description: Bit map specifying which settings to return
- id: ids_added_list
label: IDs Added List
kind: action
params: []
- id: ids_deleted_list
label: IDs Deleted List
kind: action
params: []
- id: multi_port_status_request
label: Multi Port Status Request
kind: action
params:
- name: start_port
type: integer
description: Starting port number
- name: count
type: integer
description: Number of ports
- id: asi_program_number_request
label: ASI Program Number Request
kind: action
params: []
# Deferred/Timeline Commands (4X)
- id: deferred_command
label: Deferred (Timeline) Command
kind: action
params:
- name: time
type: string
description: BCD timecode (frame, sec, min, hour)
- name: command
type: string
description: Embedded immediate command
# Macro Commands (5X)
- id: abort_macro
label: Abort Macro
kind: action
params:
- name: macro_number
type: integer
description: 2-byte macro number (0=all macros)
- id: active_macro_list
label: Active Macro List
kind: action
params: []
- id: macro_status
label: Macro Status
kind: action
params:
- name: macro_number
type: integer
description: 2-byte macro number
- id: copy_file_macro
label: Copy File Macro
kind: action
params:
- name: macro_number
type: integer
description: 2-byte macro number
- name: id
type: string
description: 8-character ID
- name: source
type: integer
description: Source disk address
- name: destination
type: integer
description: Destination disk address
- id: get_from_archive_macro
label: Get From Archive Macro
kind: action
params:
- name: macro_number
type: integer
description: 2-byte macro number
- name: id
type: string
description: 8-character ID
- id: send_to_archive_macro
label: Send to Archive Macro
kind: action
params:
- name: macro_number
type: integer
description: 2-byte macro number
- name: id
type: string
description: 8-character ID
- id: prepare_id_to_play
label: Prepare ID To Play
kind: action
params:
- name: macro_number
type: integer
description: 2-byte macro number
- name: id
type: string
description: 8-character ID
- name: file_handle
type: integer
description: Prepared file handle
- name: start_position
type: integer
description: Optional start position (4 bytes)
- name: duration
type: integer
description: Optional duration (4 bytes)
- id: close_id_from_play
label: Close ID From Play
kind: action
params:
- name: macro_number
type: integer
description: 2-byte macro number
- name: id
type: string
description: 8-character ID
Feedbacks
# Responses from controlled device
- id: ack
label: ACK
type: binary
values: ["04h"]
description: Positive acknowledgment
- id: nak
label: NAK
type: binary
values: ["05h"]
description: Negative acknowledgment with error data
- id: port_status
label: Port Status
type: object
description: Returns port state flags, hardware/media status, error status, settings, and video compression types
- id: position
label: Position
type: string
description: Timecode or time remaining in BCD format
- id: active_id
label: Active ID
type: object
description: Active status and 8-character ID
- id: device_type
label: Device Type
type: string
description: 16-byte manufacturer ID and specifications
- id: system_status
label: System Status
type: object
description: Storage time remaining, disk status, subsystem status, standard time
- id: id_list
label: ID List
type: object
description: Remaining count and list of 8-character IDs
- id: id_size
label: ID Size
type: string
description: Duration in BCD (frames, seconds, minutes, hours)
- id: id_request_response
label: ID Request Response
type: object
description: ID status bit map including location, protection, archive status
- id: compression_settings
label: Compression Settings
type: object
description: Video/audio compression parameters
- id: macro_status_response
label: Macro Status Response
type: object
description: Macro state, completion code, command echo, ID echo
- id: open_port_response
label: Open Port Response
type: enum
values: [0, 1]
description: "0=denied, 1=granted"
Variables
# No discrete settable variables - all parameters are command arguments
# Status is retrieved via sense request commands
Events
# Unsolicited notifications from controlled device
- id: macro_complete
label: Macro Complete Return
type: object
description: Generated by controlled device when macro completes or fails
- id: error_response
label: Error Response
type: object
description: |
NAK with error bits:
- TIME OUT (bit 7)
- FRAMING ERROR (bit 6)
- OVERRUN ERROR (bit 5)
- PARITY ERROR (bit 4)
- CHECKSUM ERROR (bit 2)
- UNDEFINED ERROR (bit 0)
Macros
# Macros are deferred command sequences numbered 1-65535
# Controlled device tracks macro commands and reports result on completion
# Macro numbers may be reused after ACK from controller
Safety
confirmation_required_for: []
interlocks:
- id: frame_accuracy_requirement
description: Frame accurate commands (PLAY, RECORD, EE MODE, FREEZE, UNFREEZE, STILL, CONTINUE, PRESET STANDARD TIME) received by end of field 1 execute at next frame; received ending in field 2 execute at frame after next (N+1)
- id: response_timeout
description: Controller must detect timeout (100 msec) and request status if no reply received
- id: port_busy_handling
description: Disk may assert busy bit when unable to accept type 0, 2, 3, or 4 commands; busy status does not affect type 1 (immediate) commands
- id: preroll_requirement
description: DISK PREROLL command allows controller to specify delay after PLAY/RECORD to maintain frame accuracy
# UNRESOLVED: no explicit safety warnings or interlock procedures stated in source
Notes
VDCP is a master-slave protocol where the controller sends commands and the video disk responds. Message format: STX(02h) + ByteCount + CMD-1 + CMD-2 + [DATA...] + CHECKSUM. CMD-1 contains 4-bit command type (0=System, 1=Immediate, 2=Preset/Select, 3=Sense, 4=Deferred, 5=Macro, 8=Variable ID System, A=Variable ID Preset/Select, B=Variable ID Sense, D=Variable ID Macro, F=Archive) and 4-bit unit address. ACK (04h) or NAK (05h) returned for types 0, 1, 2; type 3 responses have MSB set in CMD-2 (e.g., response to 29h is A9h). Checksum is 2's complement of least significant byte of sum from first command byte to before checksum. Fixed 8-character IDs padded with 0x20; variable length IDs use length byte prefix. Commands should not exceed 100 bytes; ID list replies limited to 80 bytes of ID data.
Provenance
source_domains:
- imaginecommunications.com
source_urls:
- https://imaginecommunications.com/content/uploads/2024/11/VDCP_Protocol_Guide_Revision_20_20230531.pdf
retrieved_at: 2026-04-30T04:46:15.174Z
last_checked_at: 2026-06-02T22:09:26.739Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T22:09:26.739Z
matched_actions: 76
action_count: 76
confidence: medium
summary: "All 76 spec actions traced to source (dip-safe re-verify). (6 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "device model variants not specified in source"
- "flow control not specified in source"
- "no explicit safety warnings or interlock procedures stated in source"
- "specific device models that implement this protocol are not named in source"
- "electrical specifications (voltage, current, power) not provided"
- "physical connection details beyond RS-422 pinout not specified"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0