Summary
4×4 video and audio matrix switcher controlled via Kramer Protocol 2000 (v0.46) over RS-232 or RS-485. Binary 4-byte command protocol supporting video/audio switching, store/recall setups, VIS sync, breakaway, and per-channel video/audio parameter adjustment. Up to 15 units daisy-chained via RS-485.
Transport
protocols:
- serial
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: none # inferred: no auth procedure in source
Traits
traits:
- routable # inferred: switch video/audio input to output commands
- queryable # inferred: request status, parameter, VIS, breakaway query commands
- levelable # inferred: video gain/contrast/brightness/color/hue, audio gain/bass/treble/midrange controls
Actions
actions:
- id: reset_video
label: Reset Video
kind: action
command: "00 80 80 {0x80+machine}"
params:
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | machine. Default 1."
notes: "Resets to power-down video settings. Also sent by switcher on power-up (NOTE 1)."
- id: switch_video
label: Switch Video
kind: action
command: "01 {0x80+input} {0x80+output} {0x80+machine}"
params:
- name: input
type: integer
description: "Video input (1-4, 0=disconnect). Byte 2 = 0x80 | value."
- name: output
type: integer
description: "Video output (1-4, 0=all outputs). Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value. Default 1."
notes: "Bi-directional (NOTE 2). Switcher echoes command with DESTINATION bit set. Example: 01 85 88 83 = switch input 5 to output 8 on machine 3."
- id: switch_audio
label: Switch Audio
kind: action
command: "02 {0x80+input} {0x80+output} {0x80+machine}"
params:
- name: input
type: integer
description: "Audio input (1-4, 0=disconnect). Byte 2 = 0x80 | value."
- name: output
type: integer
description: "Audio output (1-4, 0=all outputs). Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value. Default 1."
notes: "Bi-directional (NOTE 2)."
- id: store_video_status
label: Store Video Status
kind: action
command: "03 {0x80+setup} {0x80+store_delete} {0x80+machine}"
params:
- name: setup
type: integer
description: "Setup number. Byte 2 = 0x80 | setup #."
- name: store_delete
type: integer
description: "0=store, 1=delete. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Bi-directional (NOTE 2). SETUP #0 = present setting. SETUP #1+ = saved in memory (NOTE 3)."
- id: recall_video_status
label: Recall Video Status
kind: action
command: "04 {0x80+setup} 80 {0x80+machine}"
params:
- name: setup
type: integer
description: "Setup number to recall. Byte 2 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Bi-directional (NOTE 2)."
- id: request_video_output_status
label: Request Video Output Status
kind: query
command: "05 {0x80+setup} {0x80+output} {0x80+machine}"
params:
- name: setup
type: integer
description: "Setup number. Byte 2 = 0x80 | value."
- name: output
type: integer
description: "Output number whose status is requested. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Reply: same instruction and input returned, output = requested parameter value (NOTE 4)."
- id: request_audio_output_status
label: Request Audio Output Status
kind: query
command: "06 {0x80+setup} {0x80+output} {0x80+machine}"
params:
- name: setup
type: integer
description: "Setup number. Byte 2 = 0x80 | value."
- name: output
type: integer
description: "Output number whose status is requested. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Reply as per NOTE 4."
- id: set_vis_source
label: Set VIS Source
kind: action
command: "07 {0x80+input} {0x80+output} {0x80+machine}"
params:
- name: input
type: integer
description: "Input # when output=6; output # when output=7; blank period in 25ms steps when output=32; 0 otherwise. Byte 2 = 0x80 | value."
- name: output
type: integer
description: "0=No VIS (immediate), 1=Input #1, 2=Ext digital sync, 3=Ext analog sync, 4=Dynamic sync, 5=Inter-machine sync, 6=Input #(input byte), 7=Output #(input byte), 8=User-defined sync, 32=RGBHV seamless switching, 64=Set delayed switch, 65=Execute delayed switch, 66=Cancel delayed switch. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Bi-directional (NOTE 2). For seamless switching, set blanking period in 25ms steps (NOTE 17). Delayed switch: send set(64) then switch, then execute(65) after delay (NOTE 18). Example seamless: 07 8E A0 81 = 350ms blanking."
- id: set_breakaway
label: Set Breakaway
kind: action
command: "08 {0x80+input} {0x80+output} {0x80+machine}"
params:
- name: input
type: integer
description: "0 or 1. Byte 2 = 0x80 | value."
- name: output
type: integer
description: "For input=0: 0=audio-follow-video, 1=audio breakaway. For input=1: 0=FOLLOW mode, 1=Normal mode. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Bi-directional (NOTE 2). When OVR bit set, video commands universal - FOLLOW mode machines execute video instructions (NOTE 15)."
- id: set_video_audio_type
label: Set Video/Audio Type
kind: action
command: "09 {0x80+input} {0x80+output} {0x80+machine}"
params:
- name: input
type: integer
description: "0=video, 1=audio, 2=VGA and DVI. Byte 2 = 0x80 | value."
- name: output
type: integer
description: "For video: 0=CV, 1=YC, 2=YUV, 3=RGBS, 4=SDI, 5=CV+YC, 6=VGA scaler, 7=DVI. For audio: bit0=balanced, bit1=digital, bits2-4=stereo. For VGA/DVI: 1=640x480, 2=800x600, 3=1024x768. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Bi-directional (NOTE 2)."
- id: request_vis_setting
label: Request VIS Setting
kind: query
command: "0A {0x80+input} {0x80+output} {0x80+machine}"
params:
- name: input
type: integer
description: "Setup #, or 126=current setting, or 127=check if function defined. Byte 2 = 0x80 | value."
- name: output
type: integer
description: "0=VIS source, 1=input#/output# of source, 2=vertical sync freq (Hz). Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Reply as per instruction 7 definitions (NOTE 4, NOTE 6, NOTE 7)."
- id: request_breakaway_setting
label: Request Breakaway Setting
kind: query
command: "0B {0x80+input} {0x80+output} {0x80+machine}"
params:
- name: input
type: integer
description: "Setup #, or 126/127. Byte 2 = 0x80 | value."
- name: output
type: integer
description: "0=request audio breakaway, 1=request FOLLOW setting. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Reply as per instruction 8 definitions (NOTE 4, NOTE 6)."
- id: request_video_audio_type_setting
label: Request Video/Audio Type Setting
kind: query
command: "0C {0x80+input} {0x80+output} {0x80+machine}"
params:
- name: input
type: integer
description: "Setup #, or 126/127. Byte 2 = 0x80 | value."
- name: output
type: integer
description: "0=video, 1=audio, 2=VGA. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "NOTE 4, NOTE 6."
- id: set_highest_machine_address
label: Set Highest Machine Address
kind: action
command: "0D {0x80+input} {0x80+address} {0x80+machine}"
params:
- name: input
type: integer
description: "0=for video, 1=for audio. Byte 2 = 0x80 | value."
- name: address
type: integer
description: "Highest machine address. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Bi-directional (NOTE 2)."
- id: request_highest_machine_address
label: Request Highest Machine Address
kind: query
command: "0E {0x80+input} 80 {0x80+machine}"
params:
- name: input
type: integer
description: "0=for video, 1=for audio. Byte 2 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "NOTE 4."
- id: request_setup_defined_valid_input
label: Request Whether Setup Is Defined / Valid Input
kind: query
command: "0F {0x80+setup_or_input} {0x80+check_type} {0x80+machine}"
params:
- name: setup_or_input
type: integer
description: "Setup # or Input #. Byte 2 = 0x80 | value."
- name: check_type
type: integer
description: "0=check if setup defined, 1=check if input valid. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Reply: output=0 if not defined/no valid input, output=1 if defined/valid (NOTE 8)."
- id: reset_audio
label: Reset Audio
kind: action
command: "12 80 80 {0x80+machine}"
params:
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Resets to power-down audio settings."
- id: store_audio_status
label: Store Audio Status
kind: action
command: "13 {0x80+setup} {0x80+store_delete} {0x80+machine}"
params:
- name: setup
type: integer
description: "Setup number. Byte 2 = 0x80 | value."
- name: store_delete
type: integer
description: "0=store, 1=delete. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Bi-directional (NOTE 2)."
- id: recall_audio_status
label: Recall Audio Status
kind: action
command: "14 {0x80+setup} 80 {0x80+machine}"
params:
- name: setup
type: integer
description: "Setup number to recall. Byte 2 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Bi-directional (NOTE 2)."
- id: set_video_parameter
label: Set Video Parameter
kind: action
command: "15 {0x80+input_output} {0x80+value} {0x80+machine}"
params:
- name: input_output
type: integer
description: "Input/output number whose parameter is set (0=all). Byte 2 = 0x80 | value."
- name: value
type: integer
description: "Parameter value. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Precede with instruction 43 (set_video_parameter_context) to specify which parameter (gain/contrast/brightness/etc.). Bi-directional (NOTE 2, NOTE 11, NOTE 24)."
- id: set_audio_parameter
label: Set Audio Parameter
kind: action
command: "16 {0x80+input_output} {0x80+value} {0x80+machine}"
params:
- name: input_output
type: integer
description: "Input/output number whose parameter is set (0=all). Byte 2 = 0x80 | value."
- name: value
type: integer
description: "Parameter value. For delay: value in ms (1-127). Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Precede with instruction 42 (set_audio_parameter_context) to specify which parameter (gain/bass/treble/midrange). For delay >127ms, precede with instruction 63 (extended_data). Example: 16 81 85 81 = set delay 5ms on input 2, machine 1. Bi-directional (NOTE 2, NOTE 11, NOTE 20, NOTE 24)."
- id: increase_decrease_video_parameter
label: Increase/Decrease Video Parameter
kind: action
command: "17 {0x80+input_output} {0x80+operation} {0x80+machine}"
params:
- name: input_output
type: integer
description: "Input/output number (0=all). Byte 2 = 0x80 | value."
- name: operation
type: integer
description: "0=inc gain, 1=dec gain, 2=inc contrast, 3=dec contrast, 4=inc brightness, 5=dec brightness, 6=inc color, 7=dec color, 8=inc hue, 9=dec hue, 16=inc H-phase, 17=dec H-phase, 18=inc V-position, 19=dec V-position. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Precede with instruction 43 (set_video_parameter_context). NOTE 24."
- id: increase_decrease_audio_parameter
label: Increase/Decrease Audio Parameter
kind: action
command: "18 {0x80+input_output} {0x80+operation} {0x80+machine}"
params:
- name: input_output
type: integer
description: "Input/output number (0=all). Byte 2 = 0x80 | value."
- name: operation
type: integer
description: "0=inc output, 1=dec output, 2=inc left output, 3=dec left output, 4=inc right output, 5=dec right output, 6=inc input, 7=dec input, 8=inc left input, 9=dec left input, 10=inc right input, 11=dec right input. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Precede with instruction 42 (set_audio_parameter_context). Example: 18 82 8C 81 = increase IN1 audio delay by 1ms. NOTE 24."
- id: request_audio_parameter
label: Request Audio Parameter
kind: query
command: "19 {0x80+input_output} 80 {0x80+machine}"
params:
- name: input_output
type: integer
description: "Input/output number whose parameter is requested. Byte 2 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Precede with instruction 42 (set_audio_parameter_context). Reply: output byte = parameter value (NOTE 4, NOTE 6, NOTE 24)."
- id: request_video_parameter
label: Request Video Parameter
kind: query
command: "1A {0x80+input_output} 80 {0x80+machine}"
params:
- name: input_output
type: integer
description: "Input/output number whose parameter is requested. Byte 2 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Precede with instruction 43 (set_video_parameter_context). Reply: output byte = parameter value (NOTE 4, NOTE 6, NOTE 24)."
- id: lock_front_panel
label: Lock Front Panel
kind: action
command: "1E {0x80+lock} 80 {0x80+machine}"
params:
- name: lock
type: integer
description: "0=panel unlocked, 1=panel locked. Byte 2 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Bi-directional (NOTE 2)."
- id: request_panel_locked
label: Request Whether Panel Is Locked
kind: query
command: "1F 80 80 {0x80+machine}"
params:
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Reply: output=0 if unlocked, output=1 if locked (NOTE 4, NOTE 16)."
- id: direct_memory_save
label: Direct Memory Save
kind: action
command: "28 {0x80+address} {0x80+data} {0x80+machine}"
params:
- name: address
type: integer
description: "Memory address. Byte 2 = 0x80 | value."
- name: data
type: integer
description: "Data to store. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Stores data in non-volatile memory (EEPROM). Requires knowledge of machine memory map (NOTE 21)."
- id: set_audio_parameter_context
label: Set Audio Parameter Context
kind: action
command: "2A {0x80+input_output_type} {0x80+parameter} {0x80+machine}"
params:
- name: input_output_type
type: integer
description: "Bit0: 0=input, 1=output. Bit1: Left. Bit2: Right. Byte 2 = 0x80 | value."
- name: parameter
type: integer
description: "0=Gain, 1=Bass, 2=Treble, 3=Midrange. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Must be sent BEFORE instructions 22, 24, or 25 to specify which audio parameter (NOTE 24). Example: 2A 84 80 81 then 19 89 81 81 = request right input #9 audio gain."
- id: set_video_parameter_context
label: Set Video Parameter Context
kind: action
command: "2B {0x80+input_output_type} {0x80+parameter} {0x80+machine}"
params:
- name: input_output_type
type: integer
description: "1=Input, 2=Output. Byte 2 = 0x80 | value."
- name: parameter
type: integer
description: "0=video gain, 1=contrast, 2=brightness, 3=color, 4=hue, 5=H-phase, 6=V-position. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Must be sent BEFORE instructions 21, 23, or 26 to specify which video parameter (NOTE 24)."
- id: change_to_ascii
label: Change to ASCII Protocol
kind: action
command: "38 80 {0x80+protocol} {0x80+machine}"
params:
- name: protocol
type: integer
description: "1=SVS protocol, 2=Generic protocol. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "After sent, unit responds to ASCII command set. Must send ASCII command to return to HEX mode (NOTE 19)."
- id: set_auto_save
label: Set Auto-Save
kind: action
command: "39 {0x80+save_mode} 80 {0x80+machine}"
params:
- name: save_mode
type: integer
description: "Bit3=no save, Bit4=auto-save. Byte 2 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Auto-save enabled on power-up by default. Bi-directional (NOTE 2, NOTE 12)."
- id: execute_loaded_data
label: Execute Loaded Data
kind: action
command: "3A {0x80+setup} {0x80+action} {0x80+machine}"
params:
- name: setup
type: integer
description: "0 or setup number. Byte 2 = 0x80 | value."
- name: action
type: integer
description: "1=Take (execute), 2=Cancel. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Executes or cancels previously loaded data via instructions 59/60 (NOTE 3, NOTE 22)."
- id: load_video_data
label: Load Video Data
kind: action
command: "3B {0x80+input} {0x80+output} {0x80+machine}"
params:
- name: input
type: integer
description: "Video input (0=disconnect, 127=load SETUP #). Byte 2 = 0x80 | value."
- name: output
type: integer
description: "Video output (0=all outputs) or SETUP #. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Loads switching data for later execution via instruction 58 (NOTE 3, NOTE 22, NOTE 23)."
- id: load_audio_data
label: Load Audio Data
kind: action
command: "3C {0x80+input} {0x80+output} {0x80+machine}"
params:
- name: input
type: integer
description: "Audio input (0=disconnect, 127=load SETUP #). Byte 2 = 0x80 | value."
- name: output
type: integer
description: "Audio output (0=all outputs) or SETUP #. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Loads switching data for later execution via instruction 58 (NOTE 3, NOTE 22, NOTE 23)."
- id: identify_machine
label: Identify Machine
kind: query
command: "3D {0x80+info_type} {0x80+part} {0x80+machine}"
params:
- name: info_type
type: integer
description: "1=video machine name, 2=audio machine name, 3=video software version, 4=audio software version, 5=RS422 controller name, 6=RS422 controller version, 7=remote control name, 8=remote software version, 9=Protocol 2000 revision. Byte 2 = 0x80 | value."
- name: part
type: integer
description: "0=first 4 digits, 1=first suffix, 2=second suffix, 3=third suffix, 10=first prefix, 11=second prefix, 12=third prefix. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Reply: input/output bytes contain name/version as decimal or ASCII values (NOTE 13). Example: 7D 96 90 81 = machine name 2216."
- id: define_machine
label: Define Machine
kind: action
command: "3E {0x80+property} {0x80+type} {0x80+machine}"
params:
- name: property
type: integer
description: "1=number of inputs, 2=number of outputs, 3=number of setups. Byte 2 = 0x80 | value."
- name: type
type: integer
description: "1=video, 2=audio, 3=SDI, 4=remote panel, 5=RS-422 controller. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Reply contains the requested count. Per-machine, not system-wide (NOTE 14)."
- id: extended_data
label: Extended Data
kind: action
command: "3F {0x80+input_msb} {0x80+output_msb} {0x80+machine}"
params:
- name: input_msb
type: integer
description: "7 MSBs of input data for next instruction. Byte 2 = 0x80 | value."
- name: output_msb
type: integer
description: "7 MSBs of output data for next instruction. Byte 3 = 0x80 | value."
- name: machine
type: integer
description: "Machine number (1-15). Byte 4 = 0x80 | value."
notes: "Sent before an instruction needing >7-bit data. Provides MSBs for the following instruction's input/output bytes (NOTE 20). Example: 3F 80 85 81 then 16 83 A9 81 = set audio gain of output 3 to 681."
Feedbacks
feedbacks:
- id: command_echo
type: raw
description: "Switcher echoes received command with DESTINATION bit (bit 6 of byte 1) set. Byte 1 has 0x40 added. Example: sent 01 85 88 83, reply 41 85 88 83."
notes: "Applies to bi-directional instructions (NOTE 2)."
- id: video_output_status
type: integer
description: "Reply to request_video_output_status (instruction 5). Output byte = input number connected to requested output."
- id: audio_output_status
type: integer
description: "Reply to request_audio_output_status (instruction 6). Output byte = input number connected to requested output."
- id: vis_setting
type: integer
description: "Reply to request_vis_setting (instruction 10). Output byte value per instruction 7 definitions."
- id: breakaway_setting
type: integer
description: "Reply to request_breakaway_setting (instruction 11). Output byte value per instruction 8 definitions."
- id: video_audio_type_setting
type: integer
description: "Reply to request_video_audio_type_setting (instruction 12). Output byte value per instruction 9 definitions."
- id: highest_machine_address
type: integer
description: "Reply to request_highest_machine_address (instruction 14). Output byte = highest address."
- id: setup_defined
type: boolean
description: "Reply to request_setup_defined_valid_input (instruction 15). Output=1 if defined/valid, output=0 if not."
- id: audio_parameter
type: integer
description: "Reply to request_audio_parameter (instruction 25). Output byte = parameter value."
- id: video_parameter
type: integer
description: "Reply to request_video_parameter (instruction 26). Output byte = parameter value."
- id: panel_lock_state
type: boolean
description: "Reply to request_panel_locked (instruction 31). Output=0 unlocked, output=1 locked."
- id: machine_identity
type: raw
description: "Reply to identify_machine (instruction 61). Input/output bytes encode name/version as decimal or ASCII (NOTE 13)."
- id: machine_definition
type: raw
description: "Reply to define_machine (instruction 62). Input/output bytes encode input/output/setup counts."
Variables
# UNRESOLVED: no continuous variable ranges documented beyond parameter value fields in actions
Events
events:
- id: error_busy
description: "Sent from switcher to PC on invalid instruction, out-of-range parameter, or machine busy (instruction 16). Byte 2 = input # for input validity checks. Byte 3 = error code: 0=error, 1=invalid instruction, 2=out of range, 3=machine busy, 4=invalid input, 5=valid input. Reception by switcher not valid (NOTE 9)."
command: "10 {0x80+input} {0x80+error_code} {0x80+machine}"
- id: input_validity_change
description: "Unsolicited instruction 16 sent when unit detects change in video input validity (NOTE 25). Example: 10 83 84 81 = input 3 invalid, 10 87 85 81 = input 7 valid."
command: "10 {0x80+input} {0x80+validity} {0x80+machine}"
- id: front_panel_operation
description: "When user operates front panel, switcher sends the corresponding protocol command with DESTINATION bit set (NOTE 2). Example: front panel switches input 1 to output 7 on machine 3 → sends 41 81 87 83."
command: "{0x40+instruction} {0x80+input} {0x80+output} {0x80+machine}"
- id: power_on_reset
description: "On power-up, switcher sends reset code (instruction 0) to PC (NOTE 1)."
command: "40 80 80 {0x80+machine}"
Macros
macros:
- id: delayed_switch
label: Delayed Video Switch
steps:
- action: set_vis_source
params: { output: 64 }
command: "07 80 C0 81"
description: "Set for delayed switch"
- action: switch_video
params: { input: "{desired_input}", output: "{desired_output}" }
command: "01 {0x80+input} {0x80+output} 81"
description: "Send switch command (not executed yet)"
- action: set_vis_source
params: { output: 65 }
command: "07 80 C1 81"
description: "Execute delayed switch after desired delay"
notes: "Auto-cancelled after execution. Cancel manually with output=66 (NOTE 18)."
- id: extended_audio_delay
label: Set Audio Delay >127ms
steps:
- action: extended_data
params: { output_msb: "{msb_of_delay}" }
command: "3F 80 {0x80+msb} 81"
description: "Send MSBs of delay value"
- action: set_audio_parameter
params: { input_output: "{input_channel}", value: "{lsb_of_delay}" }
command: "16 {0x80+input} {0x80+lsb} 81"
description: "Send LSBs of delay value"
notes: "For delay values exceeding 127ms. Two-command sequence (NOTE 20)."
- id: query_audio_gain_with_context
label: Query Audio Gain with Context
steps:
- action: set_audio_parameter_context
params: { input_output_type: "{io_type}", parameter: 0 }
command: "2A {0x80+io_type} 80 81"
description: "Set context: specify input/output and gain parameter"
- action: request_audio_parameter
params: { input_output: "{channel}" }
command: "19 {0x80+channel} 80 81"
description: "Request the parameter value"
notes: "Instruction 42 must precede instructions 22, 24, 25 (NOTE 24)."
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings or interlock procedures documented in source
Notes
- Kramer Protocol 2000 version 0.46. 4-byte binary protocol over RS-232 or RS-485.
- Up to 15 units controllable via RS-485 daisy-chain. Each unit addressed by machine # set via DIP switches 1-4.
- For single unit, set machine # = 1 (DIP switches 1-4 all OFF).
- 4th byte OVR bit (bit 6): when set, all machines accept command; addressed machine replies.
- Byte construction: byte 1 = instruction (bit 7=0 from PC, bit 6=0); byte 2 = 0x80 | input; byte 3 = 0x80 | output; byte 4 = 0x80 | machine.
- Response from switcher: byte 1 has DESTINATION bit set (0x40 added).
- Ethernet configuration exists (factory default IP 192.168.1.39) but no TCP/IP control protocol documented — Ethernet for factory reset only.
- RS-232 connection: straight cable (not null-modem) with pin crossing as specified. Pins 2↔3, 5↔5, 4→6, 8+7+1 looped.
Provenance
source_domains:
- cdn.kramerav.com
- kramerav.com
source_urls:
- https://cdn.kramerav.com/web/downloads/manuals/vs-44hc.pdf
- https://cdn.kramerav.com/web/downloads/manuals/vs-44hdcp_rev_6.pdf
- https://cdn.kramerav.com/web/downloads/manuals/vs-44hn_rev_12.pdf
- https://www.kramerav.com
retrieved_at: 2026-06-01T20:37:37.966Z
last_checked_at: 2026-06-12T19:25:08.764Z
Verification Summary
verdict: verified
checked_at: 2026-06-12T19:25:08.764Z
matched_actions: 38
action_count: 38
confidence: medium
summary: "All 38 spec actions found in source Table 18 instruction codes; all transport parameters verified; coverage ratio 38/40 exceeds 0.9 threshold. (10 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "no power on/off command documented"
- "Ethernet control not documented — Ethernet config mentioned for factory reset only"
- "no continuous variable ranges documented beyond parameter value fields in actions"
- "no safety warnings or interlock procedures documented in source"
- "protocol version 0.46 stated — unclear if other versions exist or are compatible"
- "RS-485 termination via DIP 8 mentioned but no RS-485-specific protocol differences documented"
- "no power on/off command — reset instructions restore power-down state but do not control power"
- "ASCII protocol mode (instruction 56) mentioned but ASCII command set not documented in source"
- "no timing/latency specifications for command processing"
- "memory map for direct memory save (instruction 40) not documented"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0