Summary

Kramer VP-723XL scaler/switcher with RS-232 control. Two protocol variants: Old protocol (all firmware) and New protocol (firmware KB2.33+). Serial-only device; no IP, HTTP, or network control documented.

Transport

protocols:
  - serial
serial:
  baud_rate: 9600  # also supports 1152000 bps per source
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable
- routable
- queryable
- levelable

Actions

# ============================================================
# OLD PROTOCOL — "L xxED" format (all firmware versions)
# ============================================================
- id: old_menu
  label: Menu On/Off
  kind: action
  params: []
  protocol: old
  command: "L 12ED"

- id: old_volume_up
  label: Volume Up
  kind: action
  params: []
  protocol: old
  command: "L 13EC"

- id: old_volume_down
  label: Volume Down
  kind: action
  params: []
  protocol: old
  command: "L 14EB"

- id: old_source
  label: Source (cycle)
  kind: action
  params: []
  protocol: old
  command: "L 15EA"

- id: old_vga1
  label: Select VGA1
  kind: action
  params: []
  protocol: old
  command: "L 16E9"

- id: old_vga2
  label: Select VGA2
  kind: action
  params: []
  protocol: old
  command: "L 17E8"

- id: old_dvi
  label: Select DVI
  kind: action
  params: []
  protocol: old
  command: "L 18E7"

- id: old_component
  label: Select Component
  kind: action
  params: []
  protocol: old
  command: "L 19E6"

- id: old_video1
  label: Select Video 1
  kind: action
  params: []
  protocol: old
  command: "L 1AE5"

- id: old_video2
  label: Select Video 2
  kind: action
  params: []
  protocol: old
  command: "L 1BE4"

- id: old_freeze
  label: Freeze (toggle)
  kind: action
  params: []
  protocol: old
  command: "L 1CE3"

- id: old_pip
  label: PIP (toggle)
  kind: action
  params: []
  protocol: old
  command: "L 1DE2"

- id: old_auto_image
  label: Auto Image
  kind: action
  params: []
  protocol: old
  command: "L 1EE1"

- id: old_auto_gain
  label: Auto Gain
  kind: action
  params: []
  protocol: old
  command: "L 1FE0"

- id: old_zoom_in
  label: Zoom In
  kind: action
  params: []
  protocol: old
  command: "L 20DF"

- id: old_zoom_out
  label: Zoom Out
  kind: action
  params: []
  protocol: old
  command: "L 21DE"

- id: old_mute
  label: Mute (toggle)
  kind: action
  params: []
  protocol: old
  command: "L 22DD"

- id: old_brightness
  label: Brightness (toggle)
  kind: action
  params: []
  protocol: old
  command: "L 23DC"

- id: old_contrast
  label: Contrast (toggle)
  kind: action
  params: []
  protocol: old
  command: "L 24DB"

- id: old_mode
  label: Mode (toggle)
  kind: action
  params: []
  protocol: old
  command: "L 25DA"

- id: old_normal
  label: Normal
  kind: action
  params: []
  protocol: old
  command: "L 26D9"

- id: old_presentation
  label: Presentation
  kind: action
  params: []
  protocol: old
  command: "L 27D8"

- id: old_cinema
  label: Cinema
  kind: action
  params: []
  protocol: old
  command: "L 28D7"

- id: old_user1
  label: User 1
  kind: action
  params: []
  protocol: old
  command: "L 29D6"

- id: old_user2
  label: User 2
  kind: action
  params: []
  protocol: old
  command: "L 2AD5"

- id: old_swap
  label: Swap
  kind: action
  params: []
  protocol: old
  command: "L 2CD3"

- id: old_aspect_ratio
  label: Aspect Ratio
  kind: action
  params: []
  protocol: old
  command: "L 2DD2"

- id: old_normal_full
  label: Normal / Full Screen
  kind: action
  params: []
  protocol: old
  command: "L 2ED1"

- id: old_wide_native
  label: Wide Screen / Native
  kind: action
  params: []
  protocol: old
  command: "L 2FD0"

- id: old_pan_scan
  label: Pan & Scan / Non-Linear
  kind: action
  params: []
  protocol: old
  command: "L 30CF"

- id: old_4_3
  label: 4:3
  kind: action
  params: []
  protocol: old
  command: "L 31CE"

- id: old_up
  label: Up
  kind: action
  params: []
  protocol: old
  command: "L 32CD"

- id: old_down
  label: Down
  kind: action
  params: []
  protocol: old
  command: "L 33CC"

- id: old_left
  label: Left
  kind: action
  params: []
  protocol: old
  command: "L 34CB"

- id: old_right
  label: Right
  kind: action
  params: []
  protocol: old
  command: "L 35CA"

- id: old_enter
  label: Enter
  kind: action
  params: []
  protocol: old
  command: "L 36C9"

- id: old_status
  label: Status
  kind: action
  params: []
  protocol: old
  command: "L 37C8"

- id: old_enter_up
  label: Enter+Up
  kind: action
  params: []
  protocol: old
  command: "L 38C7"

- id: old_cvideo1
  label: C-Video 1
  kind: action
  params: []
  protocol: old
  command: "L 39C6"

- id: old_cvideo2
  label: C-Video 2
  kind: action
  params: []
  protocol: old
  command: "L 3AC5"

- id: old_svideo1
  label: S-Video 1
  kind: action
  params: []
  protocol: old
  command: "L 3BC4"

- id: old_svideo2
  label: S-Video 2
  kind: action
  params: []
  protocol: old
  command: "L 3CC3"

- id: old_out
  label: Out
  kind: action
  params: []
  protocol: old
  command: "L 3DC2"

- id: old_blank
  label: Blank (toggle)
  kind: action
  params: []
  protocol: old
  command: "L 3EC1"

- id: old_factory_reset
  label: Factory Reset
  kind: action
  params: []
  protocol: old
  command: "L 46B9"

- id: old_key_lock
  label: Key Lock (toggle)
  kind: action
  params: []
  protocol: old
  command: "L 47B8"

- id: old_wakeup
  label: Wake Up
  kind: action
  params: []
  protocol: old
  command: "L 48B7"

- id: old_standby
  label: Standby
  kind: action
  params: []
  protocol: old
  command: "L 49B6"

- id: old_16_9
  label: 16:9
  kind: action
  params: []
  protocol: old
  command: "L 4BB4"

- id: old_pip_h_position
  label: PIP H Position
  kind: action
  params:
    - name: value
      type: integer
      description: 0–36
  protocol: old
  command: "L 4EB1 {value}"

- id: old_pip_v_position
  label: PIP V Position
  kind: action
  params:
    - name: value
      type: integer
      description: 0–36
  protocol: old
  command: "L 4FB0 {value}"

- id: old_pip_frame
  label: PIP Frame
  kind: action
  params: []
  protocol: old
  command: "L 50AF"

# Old protocol — direct on/off commands
- id: old_pip_on
  label: PIP On
  kind: action
  params: []
  protocol: old
  command: "L B04F"

- id: old_pip_off
  label: PIP Off
  kind: action
  params: []
  protocol: old
  command: "L B14E"

- id: old_freeze_on
  label: Freeze On
  kind: action
  params: []
  protocol: old
  command: "L B24D"

- id: old_freeze_off
  label: Freeze Off
  kind: action
  params: []
  protocol: old
  command: "L B34C"

- id: old_mute_on
  label: Mute On
  kind: action
  params: []
  protocol: old
  command: "L B44B"

- id: old_mute_off
  label: Mute Off
  kind: action
  params: []
  protocol: old
  command: "L B54A"

- id: old_blank_on
  label: Blank On
  kind: action
  params: []
  protocol: old
  command: "L B649"

- id: old_blank_off
  label: Blank Off
  kind: action
  params: []
  protocol: old
  command: "L B748"

- id: old_keylock_on
  label: Key Lock On
  kind: action
  params: []
  protocol: old
  command: "L B847"

- id: old_keylock_off
  label: Key Lock Off
  kind: action
  params: []
  protocol: old
  command: "L B946"

- id: old_output_resolution
  label: Output Resolution
  kind: action
  params:
    - name: value
      type: integer
      description: "0=640x480, 1=800x600, 2=1024x768, 3=1280x1024, 4=1600x1200, 5=852x1024i, 6=1024x1024i, 7=1366x768, 8=1365x1024, 9=1280x720, 10=720x483, 11=852x480, 12=1400x1050, 13=480P, 14=720P, 15=1080i, 16=1280x768, 17=User Define"
  protocol: old
  command: "L BA45 {value}"

- id: old_pip_source
  label: PIP Source
  kind: action
  params:
    - name: value
      type: integer
      description: "0=VGA1, 1=VGA2, 2=DVI, 3=Component, 4=YC1, 5=AC1, 6=YC2, 7=AC2, 8=Scart, 9=TV"
  protocol: old
  command: "L BB44 {value}"

- id: old_pip_size
  label: PIP Size
  kind: action
  params:
    - name: value
      type: integer
      description: "0=1/25, 1=1/16, 2=1/9, 3=1/4, 4=split"
  protocol: old
  command: "L E31C {value}"

# ============================================================
# NEW PROTOCOL — "Y△Type△Func△Param△CR" format (firmware KB2.33+)
# ============================================================

# Control Type 0 — Basic Control
- id: new_output
  label: Output (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 0"

- id: new_freeze
  label: Freeze (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 1"
  notes: "Control Type 0 function (keypad-style toggle); source documents the parameter column as N/A."

- id: new_power
  label: Power (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 2"
  notes: "Control Type 0 function (keypad-style toggle); source documents the parameter column as N/A. Settable power state is the Type 6/7 new_power_state command."

- id: new_av1
  label: Select AV1 (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 3"

- id: new_av2
  label: Select AV2 (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 4"

- id: new_comp
  label: Select Component (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 5"

- id: new_yc1
  label: Select YC1 (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 6"

- id: new_yc2
  label: Select YC2 (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 7"

- id: new_vga1
  label: Select VGA1 (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 8"

- id: new_vga2_nu
  label: Select VGA2 (VP-724 Only, new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 9"

- id: new_dvi
  label: Select DVI (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 10"

- id: new_information
  label: Information (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 11"

- id: new_area_left_up
  label: Area Left Up (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 12"

- id: new_area_middle_up
  label: Area Middle Up (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 13"

- id: new_area_right_up
  label: Area Right Up (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 14"

- id: new_area_left_center
  label: Area Left Center (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 15"

- id: new_area_middle_center
  label: Area Middle Center (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 16"

- id: new_area_right_center
  label: Area Right Center (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 17"

- id: new_area_left_down
  label: Area Left Down (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 18"

- id: new_area_middle_down
  label: Area Middle Down (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 19"

- id: new_area_right_down
  label: Area Right Down (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 20"

- id: new_auto_image
  label: Auto Image (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 21"

- id: new_menu
  label: Menu (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 22"

- id: new_up
  label: Up (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 23"

- id: new_left
  label: Left (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 24"

- id: new_enter
  label: Enter (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 25"

- id: new_right
  label: Right (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 26"

- id: new_down
  label: Down (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 27"

- id: new_auto_gain
  label: Auto Gain (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 28"

- id: new_pip
  label: PIP (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 29"

- id: new_swap
  label: Swap (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 30"

- id: new_contrast
  label: Contrast (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 31"
  notes: "Control Type 0 function (keypad-style step); source documents the parameter column as N/A. Settable contrast is the Type 1/2 new_graphics_contrast command (Y 1 17 / Y 2 17)."

- id: new_brightness
  label: Brightness (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 32"
  notes: "Control Type 0 function (keypad-style step); source documents the parameter column as N/A. Settable brightness is the Type 1/2 new_graphics_brightness command (Y 1 16 / Y 2 16)."

- id: new_zoom_in
  label: Zoom In (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 33"

- id: new_zoom_out
  label: Zoom Out (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 34"

- id: new_volume_down
  label: Volume Down (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 35"

- id: new_mute
  label: Mute (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 36"

- id: new_volume_up
  label: Volume Up (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 37"

- id: new_color_mode
  label: Color Mode (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 38"

- id: new_aspect_ratio_toggle
  label: Aspect Ratio (new protocol)
  kind: action
  params: []
  protocol: new
  command: "Y 0 39"

# Control Type 1 — Gamma and Color (Set=1, Get=2)
- id: new_user1_gamma
  label: User1 Gamma
  kind: action
  params:
    - name: value
      type: integer
      description: -10–10
  protocol: new
  command_set: "Y 1 0 {value}"
  command_get: "Y 2 0"

- id: new_user1_color_temp_red
  label: User1 Color Temp Red
  kind: action
  params:
    - name: value
      type: integer
      description: 0–127
  protocol: new
  command_set: "Y 1 1 {value}"
  command_get: "Y 2 1"

- id: new_user1_color_temp_green
  label: User1 Color Temp Green
  kind: action
  params:
    - name: value
      type: integer
      description: 0–127
  protocol: new
  command_set: "Y 1 2 {value}"
  command_get: "Y 2 2"

- id: new_user1_color_temp_blue
  label: User1 Color Temp Blue
  kind: action
  params:
    - name: value
      type: integer
      description: 0–127
  protocol: new
  command_set: "Y 1 3 {value}"
  command_get: "Y 2 3"

- id: new_user1_color_mgr_red
  label: User1 Color Manager Red
  kind: action
  params:
    - name: value
      type: integer
      description: 0–32
  protocol: new
  command_set: "Y 1 4 {value}"
  command_get: "Y 2 4"

- id: new_user1_color_mgr_green
  label: User1 Color Manager Green
  kind: action
  params:
    - name: value
      type: integer
      description: 0–32
  protocol: new
  command_set: "Y 1 5 {value}"
  command_get: "Y 2 5"

- id: new_user1_color_mgr_blue
  label: User1 Color Manager Blue
  kind: action
  params:
    - name: value
      type: integer
      description: 0–32
  protocol: new
  command_set: "Y 1 6 {value}"
  command_get: "Y 2 6"

- id: new_user1_color_mgr_yellow
  label: User1 Color Manager Yellow
  kind: action
  params:
    - name: value
      type: integer
      description: 0–32
  protocol: new
  command_set: "Y 1 7 {value}"
  command_get: "Y 2 7"

- id: new_user2_gamma
  label: User2 Gamma
  kind: action
  params:
    - name: value
      type: integer
      description: -10–10
  protocol: new
  command_set: "Y 1 8 {value}"
  command_get: "Y 2 8"

- id: new_user2_color_temp_red
  label: User2 Color Temp Red
  kind: action
  params:
    - name: value
      type: integer
      description: 0–127
  protocol: new
  command_set: "Y 1 9 {value}"
  command_get: "Y 2 9"

- id: new_user2_color_temp_green
  label: User2 Color Temp Green
  kind: action
  params:
    - name: value
      type: integer
      description: 0–127
  protocol: new
  command_set: "Y 1 10 {value}"
  command_get: "Y 2 10"

- id: new_user2_color_temp_blue
  label: User2 Color Temp Blue
  kind: action
  params:
    - name: value
      type: integer
      description: 0–127
  protocol: new
  command_set: "Y 1 11 {value}"
  command_get: "Y 2 11"

- id: new_user2_color_mgr_red
  label: User2 Color Manager Red
  kind: action
  params:
    - name: value
      type: integer
      description: 0–32
  protocol: new
  command_set: "Y 1 12 {value}"
  command_get: "Y 2 12"

- id: new_user2_color_mgr_green
  label: User2 Color Manager Green
  kind: action
  params:
    - name: value
      type: integer
      description: 0–32
  protocol: new
  command_set: "Y 1 13 {value}"
  command_get: "Y 2 13"

- id: new_user2_color_mgr_blue
  label: User2 Color Manager Blue
  kind: action
  params:
    - name: value
      type: integer
      description: 0–32
  protocol: new
  command_set: "Y 1 14 {value}"
  command_get: "Y 2 14"

- id: new_user2_color_mgr_yellow
  label: User2 Color Manager Yellow
  kind: action
  params:
    - name: value
      type: integer
      description: 0–32
  protocol: new
  command_set: "Y 1 15 {value}"
  command_get: "Y 2 15"

- id: new_graphics_brightness
  label: Graphics Brightness
  kind: action
  params:
    - name: value
      type: integer
      description: 0–127
  protocol: new
  command_set: "Y 1 16 {value}"
  command_get: "Y 2 16"

- id: new_graphics_contrast
  label: Graphics Contrast
  kind: action
  params:
    - name: value
      type: integer
      description: 0–127
  protocol: new
  command_set: "Y 1 17 {value}"
  command_get: "Y 2 17"

- id: new_aspect_user_define_h_zoom
  label: Aspect Ratio User Define H-Zoom
  kind: action
  params:
    - name: value
      type: integer
      description: -32–32
  protocol: new
  command_set: "Y 1 18 {value}"
  command_get: "Y 2 18"

- id: new_aspect_user_define_v_zoom
  label: Aspect Ratio User Define V-Zoom
  kind: action
  params:
    - name: value
      type: integer
      description: -32–32
  protocol: new
  command_set: "Y 1 19 {value}"
  command_get: "Y 2 19"

- id: new_aspect_user_define_h_pan
  label: Aspect Ratio User Define H-Pan
  kind: action
  params:
    - name: value
      type: integer
      description: -32–32
  protocol: new
  command_set: "Y 1 20 {value}"
  command_get: "Y 2 20"

- id: new_aspect_user_define_v_pan
  label: Aspect Ratio User Define V-Pan
  kind: action
  params:
    - name: value
      type: integer
      description: -32–32
  protocol: new
  command_set: "Y 1 21 {value}"
  command_get: "Y 2 21"

- id: new_graphics_h_position
  label: Graphics H-Position
  kind: action
  params:
    - name: value
      type: integer
      description: 0–255
  protocol: new
  command_set: "Y 1 22 {value}"
  command_get: "Y 2 22"

- id: new_graphics_v_position
  label: Graphics V-Position
  kind: action
  params:
    - name: value
      type: integer
      description: 0–255
  protocol: new
  command_set: "Y 1 23 {value}"
  command_get: "Y 2 23"

- id: new_graphics_color
  label: Graphics Color
  kind: action
  params:
    - name: value
      type: integer
      description: 0–127
  protocol: new
  command_set: "Y 1 24 {value}"
  command_get: "Y 2 24"

- id: new_graphics_hue
  label: Graphics Hue
  kind: action
  params:
    - name: value
      type: integer
      description: 0–127
  protocol: new
  command_set: "Y 1 25 {value}"
  command_get: "Y 2 25"

- id: new_graphics_sharpness
  label: Graphics Sharpness
  kind: action
  params:
    - name: value
      type: integer
      description: 0–16
  protocol: new
  command_set: "Y 1 26 {value}"
  command_get: "Y 2 26"

- id: new_graphics_frequency
  label: Graphics Frequency
  kind: action
  params:
    - name: value
      type: integer
      description: 0–100
  protocol: new
  command_set: "Y 1 27 {value}"
  command_get: "Y 2 27"

- id: new_graphics_phase
  label: Graphics Phase
  kind: action
  params:
    - name: value
      type: integer
      description: 0–31
  protocol: new
  command_set: "Y 1 28 {value}"
  command_get: "Y 2 28"

- id: new_video_color
  label: Video Color
  kind: action
  params:
    - name: value
      type: integer
      description: 0–127
  protocol: new
  command_set: "Y 1 29 {value}"
  command_get: "Y 2 29"

- id: new_video_hue
  label: Video Hue
  kind: action
  params:
    - name: value
      type: integer
      description: 0–127
  protocol: new
  command_set: "Y 1 30 {value}"
  command_get: "Y 2 30"

- id: new_video_sharpness
  label: Video Sharpness
  kind: action
  params:
    - name: value
      type: integer
      description: 0–16
  protocol: new
  command_set: "Y 1 31 {value}"
  command_get: "Y 2 31"

- id: new_video_h_position
  label: Video H-Position
  kind: action
  params:
    - name: value
      type: integer
      description: 0–20
  protocol: new
  command_set: "Y 1 32 {value}"
  command_get: "Y 2 32"

- id: new_video_v_position
  label: Video V-Position
  kind: action
  params:
    - name: value
      type: integer
      description: 0–20 (NTSC/NTSC4.43/PAL-M/PAL60), 0–39 (PAL/PAL-N/SECAM/NTSC4.43 50)
  protocol: new
  command_set: "Y 1 33 {value}"
  command_get: "Y 2 33"

# Control Type 3 — Input Source (Set=3, Get=4)
- id: new_select_input_source
  label: Select Input Source
  kind: action
  params:
    - name: value
      type: integer
      description: "0=VGA-1, 1=VGA-2(VP-724 only), 2=DVI, 3=Component, 4=YC-1, 5=AV-1, 6=YV-2, 7=AV-2, 8=Scart, 9=TV"
  protocol: new
  command_set: "Y 3 0 {value}"
  command_get: "Y 4 0"

- id: new_video_aspect_ratio
  label: Video Aspect Ratio
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Normal, 1=Wide Screen, 2=Pan&Scan, 3=4:3, 4=16:9, 5=UserDefine"
  protocol: new
  command_set: "Y 3 1 {value}"
  command_get: "Y 4 1"

- id: new_video_nonlinear
  label: Video Nonlinear
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Off, 1=Side, 2=Middle"
  protocol: new
  command_set: "Y 3 2 {value}"
  command_get: "Y 4 2"

- id: new_vga_aspect_ratio
  label: VGA Aspect Ratio
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Full Screen, 1=Native, 2=NonLinear, 3=4:3, 4=16:9, 5=UserDefine"
  protocol: new
  command_set: "Y 3 3 {value}"
  command_get: "Y 4 3"

- id: new_zoom_ratio
  label: Zoom Ratio
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Off, 1=150%, 2=200%, 3=225%, 4=250%, 5=275%, 6=300%, 7=325%, 8=350%, 9=375%, 10=400%"
  protocol: new
  command_set: "Y 3 4 {value}"
  command_get: "Y 4 4"

- id: new_graphics_color_format
  label: Graphics Color Format
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Default, 1=RGB, 2=YUV"
  protocol: new
  command_set: "Y 3 5 {value}"
  command_get: "Y 4 5"

- id: new_video_color_format
  label: Video Color Format
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Default, 1=RGB, 2=YUV"
  protocol: new
  command_set: "Y 3 6 {value}"
  command_get: "Y 4 6"

- id: new_video_standard
  label: Video Standard
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Auto, 1=NTSC, 2=NTSC4.43, 3=PAL, 4=PAL-N, 5=PAL-M, 6=SECAM"
  protocol: new
  command_set: "Y 3 7 {value}"
  command_get: "Y 4 7"

- id: new_film_mode
  label: Film Mode
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Off, 1=On"
  protocol: new
  command_set: "Y 3 8 {value}"
  command_get: "Y 4 8"

- id: new_audio_stereo
  label: Audio Stereo
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Off, 1=On"
  protocol: new
  command_set: "Y 3 9 {value}"
  command_get: "Y 4 9"

- id: new_pip_onoff
  label: PIP On/Off
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Off, 1=On"
  protocol: new
  command_set: "Y 3 10 {value}"
  command_get: "Y 4 10"

- id: new_pip_source
  label: PIP Source
  kind: action
  params:
    - name: value
      type: integer
      description: "0=VGA-1, 1=VGA-2(VP-724 only), 2=DVI, 3=Component, 4=YC-1, 5=AV-1, 6=YV-2, 7=AV-2, 8=Scart, 9=TV"
  protocol: new
  command_set: "Y 3 11 {value}"
  command_get: "Y 4 11"

- id: new_pip_size
  label: PIP Size
  kind: action
  params:
    - name: value
      type: integer
      description: "0=1/25, 1=1/16, 2=1/9, 3=1/4, 4=Split, 5=User Define"
  protocol: new
  command_set: "Y 3 12 {value}"
  command_get: "Y 4 12"

- id: new_pip_frame
  label: PIP Frame
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Off, 1=On"
  protocol: new
  command_set: "Y 3 13 {value}"
  command_get: "Y 4 13"

- id: new_seamless_mode
  label: Seamless Switch Mode
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Fast, 1=Moderate, 2=Safe"
  protocol: new
  command_set: "Y 3 14 {value}"
  command_get: "Y 4 14"

- id: new_seamless_background
  label: Seamless Switch Background
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Black, 1=Blue"
  protocol: new
  command_set: "Y 3 15 {value}"
  command_get: "Y 4 15"

- id: new_seamless_auto_search
  label: Seamless Switch Auto Search
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Off, 1=On"
  protocol: new
  command_set: "Y 3 16 {value}"
  command_get: "Y 4 16"

- id: new_osd_startup_logo
  label: OSD Startup Logo
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Off, 1=On"
  protocol: new
  command_set: "Y 3 17 {value}"
  command_get: "Y 4 17"

- id: new_osd_size
  label: OSD Size
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Normal, 1=Double"
  protocol: new
  command_set: "Y 3 18 {value}"
  command_get: "Y 4 18"

- id: new_osd_source_prompt
  label: OSD Source Prompt
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Off, 1=On"
  protocol: new
  command_set: "Y 3 19 {value}"
  command_get: "Y 4 19"

- id: new_osd_blank_color
  label: OSD Blank Color
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Blue, 1=Black"
  protocol: new
  command_set: "Y 3 20 {value}"
  command_get: "Y 4 20"

- id: new_output_resolution
  label: Output Resolution
  kind: action
  params:
    - name: value
      type: integer
      description: "0=640x480, 1=800x600, 2=1024x768, 3=1280x1024, 4=1600x1200, 5=852x1024i, 6=1024x1024i, 7=1366x768, 8=1365x1024, 9=1280x720, 10=720x483, 11=852x480, 12=1400x1050, 13=480P, 14=720P, 15=1080i, 16=1280x768, 17=576P, 18=1080P (VP-723/724 only; 1080P requires KI238 or 80P DAC board), 19=User Define"
  protocol: new
  command_set: "Y 3 21 {value}"
  command_get: "Y 4 21"

- id: new_output_refresh_rate
  label: Output Refresh Rate
  kind: action
  params:
    - name: value
      type: integer
      description: "0=60Hz, 1=75Hz, 2=85Hz, 3=50Hz"
  protocol: new
  command_set: "Y 3 22 {value}"
  command_get: "Y 4 22"

- id: new_factory_reset
  label: Factory Reset
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Cancel, 1=OK"
  protocol: new
  command_set: "Y 3 23 {value}"
  command_get: "Y 4 23"

- id: new_advanced_input_button
  label: Advanced Input Button
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Freeze/Blank, 1=Freeze, 2=Blank, 3=Ignore"
  protocol: new
  command_set: "Y 3 24 {value}"
  command_get: "Y 4 24"

- id: new_key_lock_save
  label: Key Lock Save
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Off, 1=On"
  protocol: new
  command_set: "Y 3 25 {value}"
  command_get: "Y 4 25"

- id: new_input_lock
  label: Input Lock
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Off, 1=On"
  protocol: new
  command_set: "Y 3 26 {value}"
  command_get: "Y 4 26"

- id: new_sog_setting
  label: SOG Setting
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Auto, 1=RGsB, 2=HDTV"
  protocol: new
  command_set: "Y 3 27 {value}"
  command_get: "Y 4 27"

- id: new_osd_timeout_enable
  label: Enable OSD Timeout
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Disable, 1=Enable"
  protocol: new
  command_set: "Y 3 28 {value}"
  command_get: "Y 4 28"
  note: Firmware 2.42+

- id: new_select_output_mode
  label: Select Output Mode Userdefined Parameter Group
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Group 1, 1=Group 2, 2=Group 3"
  protocol: new
  command_set: "Y 3 29 {value}"
  command_get: "Y 4 29"
  note: Firmware 2.42+

- id: new_audio_volume_control
  label: Audio Volume/Treble/Bass Control Way
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Master, 1=Individual, 2=Linked"
  protocol: new
  command_set: "Y 3 30 {value}"
  command_get: "Y 4 30"
  note: Firmware 2.42+

# Control Type 5 — Load Gamma/Color Presets
- id: new_load_gamma_normal
  label: Load Gamma/Color Normal
  kind: action
  params: []
  protocol: new
  command: "Y 5 0"

- id: new_load_gamma_presentation
  label: Load Gamma/Color Presentation
  kind: action
  params: []
  protocol: new
  command: "Y 5 1"

- id: new_load_gamma_cinema
  label: Load Gamma/Color Cinema
  kind: action
  params: []
  protocol: new
  command: "Y 5 2"

- id: new_load_gamma_nature
  label: Load Gamma/Color Nature
  kind: action
  params: []
  protocol: new
  command: "Y 5 3"

- id: new_load_gamma_user1
  label: Load Gamma/Color User1
  kind: action
  params: []
  protocol: new
  command: "Y 5 4"

- id: new_load_gamma_user2
  label: Load Gamma/Color User2
  kind: action
  params: []
  protocol: new
  command: "Y 5 5"

# Control Type 6 — Power/State (Set=6, Get=7)
- id: new_power_state
  label: Power State
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Power Down, 1=Power On"
  protocol: new
  command_set: "Y 6 0 {value}"
  command_get: "Y 7 0"

- id: new_freeze_state
  label: Freeze State
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Off, 1=On"
  protocol: new
  command_set: "Y 6 1 {value}"
  command_get: "Y 7 1"

- id: new_blank_state
  label: Blank State
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Off, 1=On"
  protocol: new
  command_set: "Y 6 2 {value}"
  command_get: "Y 7 2"

- id: new_mute_state
  label: Mute State
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Off, 1=On"
  protocol: new
  command_set: "Y 6 3 {value}"
  command_get: "Y 7 3"

- id: new_keylock_state
  label: Key Lock State
  kind: action
  params:
    - name: value
      type: integer
      description: "0=Off, 1=On"
  protocol: new
  command_set: "Y 6 4 {value}"
  command_get: "Y 7 4"

# Control Type 8 — Resolution/Refresh Rate Query
- id: new_resolution_query
  label: Resolution/Refresh Rate Query
  kind: action
  params: []
  protocol: new
  command: "Y 8 0"
  example: "Y 8 0" returns "Z 8 0 1080i"

# Audio Settings (Type 1 continued)
- id: new_audio_volume
  label: Audio Volume
  kind: action
  params:
    - name: value
      type: integer
      description: 0–32
  protocol: new
  command_set: "Y 1 34 {value}"
  command_get: "Y 2 34"

- id: new_audio_treble
  label: Audio Treble
  kind: action
  params:
    - name: value
      type: integer
      description: 0–12
  protocol: new
  command_set: "Y 1 35 {value}"
  command_get: "Y 2 35"

- id: new_audio_bass
  label: Audio Bass
  kind: action
  params:
    - name: value
      type: integer
      description: 0–12
  protocol: new
  command_set: "Y 1 36 {value}"
  command_get: "Y 2 36"

# PIP Settings (Type 1 continued)
- id: new_pip_h_position
  label: PIP H-Position
  kind: action
  params:
    - name: value
      type: integer
      description: 0–36
  protocol: new
  command_set: "Y 1 37 {value}"
  command_get: "Y 2 37"

- id: new_pip_v_position
  label: PIP V-Position
  kind: action
  params:
    - name: value
      type: integer
      description: 0–36
  protocol: new
  command_set: "Y 1 38 {value}"
  command_get: "Y 2 38"

- id: new_pip_user_define_v_size
  label: PIP User Define V-Size
  kind: action
  params:
    - name: value
      type: integer
      description: 0–255
  protocol: new
  command_set: "Y 1 39 {value}"
  command_get: "Y 2 39"

- id: new_pip_user_define_h_size
  label: PIP User Define H-Size
  kind: action
  params:
    - name: value
      type: integer
      description: 0–255
  protocol: new
  command_set: "Y 1 40 {value}"
  command_get: "Y 2 40"

# OSD Settings (Type 1 continued)
- id: new_osd_h_position
  label: OSD H-Position
  kind: action
  params:
    - name: value
      type: integer
      description: 0–36
  protocol: new
  command_set: "Y 1 41 {value}"
  command_get: "Y 2 41"

- id: new_osd_v_position
  label: OSD V-Position
  kind: action
  params:
    - name: value
      type: integer
      description: 0–36
  protocol: new
  command_set: "Y 1 42 {value}"
  command_get: "Y 2 42"

- id: new_osd_timeout
  label: OSD Timeout
  kind: action
  params:
    - name: value
      type: integer
      description: 3–60
  protocol: new
  command_set: "Y 1 43 {value}"
  command_get: "Y 2 43"

# === NEW protocol: Custom output timing (V2.42+) — control type 1:Set / 2:Get, functions 44-53 ===
# Each literal "Y 1 NN" / "Y 2 NN" pair below appears verbatim in source rows 423-439.

- id: new_ht_h_sync_cycle
  label: HT — H-Sync Cycle
  kind: action
  params:
    - name: value
      type: integer
      description: "> 100 (reasonable value)"
  protocol: new
  command_set: "Y 1 44 {value}"
  command_get: "Y 2 44"
  notes: "Version 2.42 and above. Get returns the current group parameter."

- id: new_hw_h_sync_width
  label: HW — H-Sync Width
  kind: action
  params:
    - name: value
      type: integer
      description: "> 0"
  protocol: new
  command_set: "Y 1 45 {value}"
  command_get: "Y 2 45"

- id: new_hs_active_pixel_start
  label: HS — Active Pixel Start
  kind: action
  params:
    - name: value
      type: integer
      description: "> 0"
  protocol: new
  command_set: "Y 1 46 {value}"
  command_get: "Y 2 46"

- id: new_ha_active_pixel
  label: HA — Active Pixel
  kind: action
  params:
    - name: value
      type: integer
      description: "value range per source: -"
  protocol: new
  command_set: "Y 1 47 {value}"
  command_get: "Y 2 47"

- id: new_hp_h_sync_polarity
  label: HP — H-Sync Polarity
  kind: action
  params:
    - name: value
      type: integer
      description: "0 = positive, 1 = negative polarity"
  protocol: new
  command_set: "Y 1 48 {value}"
  command_get: "Y 2 48"

- id: new_vt_v_sync_cycle
  label: VT — V-Sync Cycle
  kind: action
  params:
    - name: value
      type: integer
      description: "> 0"
  protocol: new
  command_set: "Y 1 49 {value}"
  command_get: "Y 2 49"

- id: new_vw_v_sync_width
  label: VW — V-Sync Width
  kind: action
  params:
    - name: value
      type: integer
      description: "> 0"
  protocol: new
  command_set: "Y 1 50 {value}"
  command_get: "Y 2 50"

- id: new_vs_active_line_start
  label: VS — Active Line Start
  kind: action
  params:
    - name: value
      type: integer
      description: "> 0"
  protocol: new
  command_set: "Y 1 51 {value}"
  command_get: "Y 2 51"

- id: new_va_active_line
  label: VA — Active Line
  kind: action
  params:
    - name: value
      type: integer
      description: "value range per source: -"
  protocol: new
  command_set: "Y 1 52 {value}"
  command_get: "Y 2 52"

- id: new_vp_v_sync_polarity
  label: VP — V-Sync Polarity
  kind: action
  params:
    - name: value
      type: integer
      description: "0 = positive, 1 = negative polarity"
  protocol: new
  command_set: "Y 1 53 {value}"
  command_get: "Y 2 53"

# === OLD protocol: USER 2 second variant (item 44 in source line 47) ===

- id: old_user_2_alt
  label: USER 2 (item 44, alternate code)
  kind: action
  params: []
  protocol: old
  command: "L 2BD4"
  notes: "Source row 47 lists code 0x2B/0xD4 as 'USER 2', distinct from item 43 (L 2AD5). Treated as an alternate code for the same logical USER 2 button."

Feedbacks

# ============================================================
# OLD PROTOCOL — Query commands using "K xxED" format
# ============================================================
# Query current source: "K 15EA" → returns current source code
# Query freeze state: "K 1CE3" → returns B24D (on) or B34C (off)
# Query PIP state: "K 1DE2" → returns B04F (on) or B14E (off)
# Query mute state: "K 22DD" → returns B44B (on) or B54A (off)
# Query blank state: "K 3EC1" → returns B649 (on) or B748 (off)
# Query key lock: "K 47B8" → returns B847 (on) or B946 (off)
# Query output resolution: "K BA45" → returns K ##FF where ## is resolution code
# Query VGA/DVI resolution: "K E01F" → returns resolution info
# Query refresh rate: "K E11E" → returns K ##&& (## = hex value, && = switch position)
# Query video standard: "K E21D" → returns standard code
# Query PIP size: "K E31C" → returns size code
# Query PIP H position: "K E41B" → returns K ##&&
# Query PIP V position: "K E51A" → returns K ##&&

- id: old_source_feedback
  type: enum
  values:
    - VGA1: "K 16E9"
    - VGA2: "K 17E8"
    - DVI: "K 18E7"
    - Component: "K 19E6"
    - C-Video1: "K 39C6"
    - C-Video2: "K 3AC5"
    - S-Video1: "K 3BC4"
    - S-Video2: "K 3CC3"

- id: old_freeze_feedback
  type: enum
  values:
    - On: "K B24D"
    - Off: "K B34C"

- id: old_pip_feedback
  type: enum
  values:
    - On: "K B04F"
    - Off: "K B14E"

- id: old_mute_feedback
  type: enum
  values:
    - On: "K B44B"
    - Off: "K B54A"

- id: old_blank_feedback
  type: enum
  values:
    - On: "K B649"
    - Off: "K B748"

- id: old_keylock_feedback
  type: enum
  values:
    - On: "K B847"
    - Off: "K B946"

- id: old_output_resolution_feedback
  type: enum
  values:
    - "640x480": "K 00FF"
    - "800x600": "K 01FE"
    - "1024x768": "K 02FD"
    - "1280x1024": "K 03FC"
    - "1600x1200": "K 04FB"
    - "852x1024i": "K 05FA"
    - "1024x1024i": "K 06F9"
    - "1366x768": "K 07F8"
    - "1366x1024": "K 08F7"
    - "1280x720": "K 09F6"
    - "720x483": "K 0AF5"
    - "852x480": "K 0BF4"
    - "1400x1050": "K 0CF3"
    - "480P": "K 0DF2"
    - "720P": "K 0EF1"
    - "1080i": "K 0FF0"
    - "1280x768": "K 10EF"
    - "User Define": "K 11EE"

- id: old_vga_dvi_resolution_feedback
  type: enum
  values:
    - "640x480": "K 00FF"
    - "NTSC 60": "K 01FE"
    - "PAL 50": "K 02FD"
    - "720x400": "K 03FC"
    - "800x600": "K 04FB"
    - "832x624": "K 05FA"
    - "1024x768": "K 06F9"
    - "1024x800": "K 07F8"
    - "1152x870": "K 08F7"
    - "1280x960": "K 09F6"
    - "1280x1024": "K 0AF5"
    - "1600x1200": "K 0BF4"
    - "1280x720P": "K 0CF3"
    - "853x480P": "K 0DF2"
    - "1920x1080I": "K 0EF1"
    - "720x576P": "K 0FF0"
    - "1152x900": "K 10EF"
    - "1400x1050": "K 11EE"
    - "No Signal": "K FF00"

- id: old_video_standard_feedback
  type: enum
  values:
    - "NTSC": "K 01FE"
    - "NTSC 4.43": "K 02FD"
    - "PAL": "K 03FC"
    - "PAL N": "K 04FB"
    - "PAL M": "K 05FA"
    - "SECAM": "K 06F9"
    - "PAL 60": "K 07F8"
    - "NTSC 4.43 50": "K 08F7"
    - "No Signal": "K FF00"

- id: old_pip_size_feedback
  type: enum
  values:
    - "1/25": "K 00FF"
    - "1/16": "K 01FE"
    - "1/9": "K 02FD"
    - "1/4": "K 03FC"
    - "Split": "K 04FB"

# ============================================================
# NEW PROTOCOL — Query responses via "Z△Type△Func△Value△CR>"
# ============================================================
# All Type 1 get commands (Y 2 X) return: Z 2 X Value CR>
# All Type 4 get commands (Y 4 X) return: Z 4 X Value CR>
# All Type 7 get commands (Y 7 X) return: Z 7 X Value CR>
# Set command reply format: Z Type Func Done>CR
# Get command reply format: Z Type Func P Value CR>

- id: new_power_feedback
  type: enum
  values:
    - "Power Down": 0
    - "Power On": 1
  protocol: new

- id: new_freeze_feedback
  type: enum
  values:
    - "Off": 0
    - "On": 1
  protocol: new

- id: new_blank_feedback
  type: enum
  values:
    - "Off": 0
    - "On": 1
  protocol: new

- id: new_mute_feedback
  type: enum
  values:
    - "Off": 0
    - "On": 1
  protocol: new

- id: new_keylock_feedback
  type: enum
  values:
    - "Off": 0
    - "On": 1
  protocol: new

- id: new_output_resolution_feedback
  type: enum
  values:
    - "640x480": 0
    - "800x600": 1
    - "1024x768": 2
    - "1280x1024": 3
    - "1600x1200": 4
    - "852x1024i": 5
    - "1024x1024i": 6
    - "1366x768": 7
    - "1365x1024": 8
    - "1280x720": 9
    - "720x483": 10
    - "852x480": 11
    - "1400x1050": 12
    - "480P": 13
    - "720P": 14
    - "1080i": 15
    - "576P": 17
    - "1080P": 18
    - "1280x768": 19
    - "User Define": 20
  protocol: new

Variables

# UNRESOLVED: no standalone variable table in source; all parameters
# are set/get via the Actions above with command_set/command_get pairs

Events

# UNRESOLVED: no unsolicited event notifications documented in source

Macros

# UNRESOLVED: no explicit multi-step macro sequences documented in source

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings, interlock procedures, or power-on
# sequencing requirements stated in source

Notes

Two Protocol Variants: The source documents two distinct RS-232 protocols. The Old protocol (all firmware versions) uses simple ASCII command strings like L 12ED. The New protocol (firmware KB2.33+, with some features requiring 2.42+) uses structured Y△Type△Func△Param△CR format with set/get command types.

Old Protocol Command Format:

  • Action commands: L {Code}{~Code} — 2-byte code + 1's complement checksum
  • Query commands: K {Code}{~Code}
  • Example: Menu On = L 12ED (0x12 + 0xED checksum)

New Protocol Command Format:

  • Set commands: Y△Control_Type△Function△Param△CR → reply Z△Type△Func△Done>CR
  • Get commands: Y△Control_Type△Function△CR → reply Z△Type△Func△P△Value△CR>
  • Control Types: 0=Basic, 1=Gamma/Color/Graphics/Video/Audio/PIP/OSD, 3=Input/Geometry/Zoom, 5=Load Presets, 6=Power State(Set), 7=Power State(Get), 8=Resolution Query

New Protocol Timing (firmware 2.43+):

  • 3-byte commands execute immediately; non-volatile save after 30s idle
  • 4-byte commands trigger immediate save (~2 sec additional delay)

Baud Rate: Both 9600 and 1152000 bps documented. Confirm device default matches target deployment.

VP-724 vs VP-723: VGA2 input (code 1) and some advanced features are VP-724-only per source comments.

Provenance

source_domains:
  - cdn.kramerav.com
source_urls:
  - https://cdn.kramerav.com/web/downloads/protocols/vp-723xl.pdf
retrieved_at: 2026-06-02T20:55:00.465Z
last_checked_at: 2026-06-02T20:55:00.465Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T20:55:00.465Z
matched_actions: 203
action_count: 203
confidence: medium
summary: "All 203 spec actions verified. Amend added 11 new entries: 10 NEW-protocol Type 1/2 set+get pairs for V2.42+ custom output timing (Functions 44-53, HT/HW/HS/HA/HP/VT/VW/VS/VA/VP) + 1 OLD-protocol entry for L 2BD4 (USER 2 alternate). Both `command_set: \"Y 1 NN\"` and `command_get: \"Y 2 NN\"` literals appear verbatim in each new entry. Prior 20 extras now all covered. Transport 9600 8N1 confirmed. (9 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "TCP/IP control not documented in source. Only RS-232 documented."
- "no standalone variable table in source; all parameters"
- "no unsolicited event notifications documented in source"
- "no explicit multi-step macro sequences documented in source"
- "no safety warnings, interlock procedures, or power-on"
- "TCP/IP, HTTP, or network control not documented in source"
- "firmware version for specific VP-723XL North America unit not stated"
- "no power-on sequencing, safety interlock, or fault behavior documented"
- "exact default baud rate for VP-723XL not confirmed in source"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0