Summary

Kaleidescape 1080p Mini Player is a media player supporting both TCP/IP (port 10000) and RS-232 serial control. Protocol is ASCII text-based with slash-delimited message segments (device_id/seq/message_body[/checksum]). Supports power, navigation, media browsing, playback, music-zone control, disc navigation, video/masking reporting, and child-mode commands. Premiere players with Co-Star are controlled via the connected Strato and cannot be controlled directly.

Transport

protocols:
  - tcp
  - serial
addressing:
  port: 10000  # stated: "port 10000"
serial:
  baud_rate: 19200  # stated: Table 1 Player speed
  data_bits: 8  # stated
  parity: none  # stated
  stop_bits: 1  # stated
  flow_control: none  # stated (RTS/CTS hardware flow control also supported per Table 3)
auth:
  type: none  # inferred: no auth procedure in source

Traits

# powerable: ENTER_STANDBY, LEAVE_STANDBY present
# queryable: GET_DEVICE_POWER_STATE, GET_UI_STATE, GET_SYSTEM_VERSION, GET_PLAY_STATUS, etc. present
# levelable: UNRESOLVED: no direct volume/gain commands in source (volume reported only as USER_DEFINED_EVENT from remote)

Actions

# Connection / Power
- id: enter_standby
  label: Enter Standby
  kind: action
  command: "ENTER_STANDBY:"
  params: []
- id: leave_standby
  label: Leave Standby
  kind: action
  command: "LEAVE_STANDBY:"
  params: []
- id: get_device_power_state
  label: Get Device Power State
  kind: query
  command: "GET_DEVICE_POWER_STATE:"
  params: []

# System / Verification
- id: get_system_readiness_state
  label: Get System Readiness State
  kind: query
  command: "GET_SYSTEM_READINESS_STATE:"
  params: []
- id: leave_idle_mode
  label: Leave Idle Mode
  kind: action
  command: "LEAVE_IDLE_MODE:"
  params: []
- id: get_system_version
  label: Get System Version
  kind: query
  command: "GET_SYSTEM_VERSION:"
  params: []
- id: get_num_zones
  label: Get Num Zones
  kind: query
  command: "GET_NUM_ZONES:"
  params: []
- id: get_device_type_name
  label: Get Device Type Name
  kind: query
  command: "GET_DEVICE_TYPE_NAME:"
  params: []
- id: get_available_devices
  label: Get Available Devices
  kind: query
  command: "GET_AVAILABLE_DEVICES:"
  params: []
- id: get_available_devices_by_serial_number
  label: Get Available Devices by Serial Number
  kind: query
  command: "GET_AVAILABLE_DEVICES_BY_SERIAL_NUMBER:"
  params: []
- id: get_protocol
  label: Get Protocol
  kind: query
  command: "GET_PROTOCOL:"
  params: []
- id: get_protocol_version
  label: Get Protocol Version (legacy)
  kind: query
  command: "GET_PROTOCOL_VERSION:"
  params: []
  notes: "Legacy; GET_PROTOCOL preferred (source note line 648)"
- id: set_protocol_settings
  label: Set Protocol Settings
  kind: action
  command: "SET_PROTOCOL_SETTINGS:{delimiter_type}:{character_set}"
  params:
    - name: delimiter_type
      type: enum
      values: [PRINTABLE_DELIMITERS, BINARY_DELIMITERS]
    - name: character_set
      type: enum
      values: [LATIN-1]
- id: set_supported_protocol
  label: Set Supported Protocol
  kind: action
  command: "SET_SUPPORTED_PROTOCOL:{version}"
  params:
    - name: version
      type: string
      description: Zero-padded two-digit protocol version
- id: get_active_protocol
  label: Get Active Protocol
  kind: query
  command: "GET_ACTIVE_PROTOCOL:"
  params: []

# Events
- id: enable_events
  label: Enable Events
  kind: action
  command: "ENABLE_EVENTS:{target_device_id}"
  params:
    - name: target_device_id
      type: string
      description: CPDID or serial number (.xx music zone suffix)
- id: disable_events
  label: Disable Events
  kind: action
  command: "DISABLE_EVENTS:{target_device_id}"
  params:
    - name: target_device_id
      type: string
- id: get_device_info
  label: Get Device Info
  kind: query
  command: "GET_DEVICE_INFO:"
  params: []
- id: send_event
  label: Send Event
  kind: action
  command: "SEND_EVENT:{message}"
  params:
    - name: message
      type: string
      description: Triggers a USER_DEFINED_EVENT

# Friendly Name
- id: get_friendly_name
  label: Get Friendly Name
  kind: query
  command: "GET_FRIENDLY_NAME:"
  params: []
- id: set_friendly_name
  label: Set Friendly Name
  kind: action
  command: "SET_FRIENDLY_NAME:{name}"
  params:
    - name: name
      type: string
- id: get_friendly_system_name
  label: Get Friendly System Name
  kind: query
  command: "GET_FRIENDLY_SYSTEM_NAME:"
  params: []

# Navigation - Arrow Commands
- id: up_press
  label: Up Press
  kind: action
  command: "UP_PRESS:"
  params: []
- id: up_release
  label: Up Release
  kind: action
  command: "UP_RELEASE:"
  params: []
- id: up
  label: Up
  kind: action
  command: "UP:"
  params: []
- id: down_press
  label: Down Press
  kind: action
  command: "DOWN_PRESS:"
  params: []
- id: down_release
  label: Down Release
  kind: action
  command: "DOWN_RELEASE:"
  params: []
- id: down
  label: Down
  kind: action
  command: "DOWN:"
  params: []
- id: left_press
  label: Left Press
  kind: action
  command: "LEFT_PRESS:"
  params: []
- id: left_release
  label: Left Release
  kind: action
  command: "LEFT_RELEASE:"
  params: []
- id: left
  label: Left
  kind: action
  command: "LEFT:"
  params: []
- id: right_press
  label: Right Press
  kind: action
  command: "RIGHT_PRESS:"
  params: []
- id: right_release
  label: Right Release
  kind: action
  command: "RIGHT_RELEASE:"
  params: []
- id: right
  label: Right
  kind: action
  command: "RIGHT:"
  params: []

# Navigation - Child / Advanced
- id: child_up_press
  label: Child Up Press
  kind: action
  command: "CHILD_UP_PRESS:"
  params: []
- id: child_up_release
  label: Child Up Release
  kind: action
  command: "CHILD_UP_RELEASE:"
  params: []
- id: child_up
  label: Child Up
  kind: action
  command: "CHILD_UP:"
  params: []
- id: child_down_press
  label: Child Down Press
  kind: action
  command: "CHILD_DOWN_PRESS:"
  params: []
- id: child_down_release
  label: Child Down Release
  kind: action
  command: "CHILD_DOWN_RELEASE:"
  params: []
- id: child_down
  label: Child Down
  kind: action
  command: "CHILD_DOWN:"
  params: []
- id: child_left_press
  label: Child Left Press
  kind: action
  command: "CHILD_LEFT_PRESS:"
  params: []
- id: child_left_release
  label: Child Left Release
  kind: action
  command: "CHILD_LEFT_RELEASE:"
  params: []
- id: child_left
  label: Child Left
  kind: action
  command: "CHILD_LEFT:"
  params: []
- id: child_right_press
  label: Child Right Press
  kind: action
  command: "CHILD_RIGHT_PRESS:"
  params: []
- id: child_right_release
  label: Child Right Release
  kind: action
  command: "CHILD_RIGHT_RELEASE:"
  params: []
- id: child_right
  label: Child Right
  kind: action
  command: "CHILD_RIGHT:"
  params: []
- id: child_select
  label: Child Select
  kind: action
  command: "CHILD_SELECT:"
  params: []

# Navigation - Page / Selection
- id: page_up_press
  label: Page Up Press
  kind: action
  command: "PAGE_UP_PRESS:"
  params: []
- id: page_up_release
  label: Page Up Release
  kind: action
  command: "PAGE_UP_RELEASE:"
  params: []
- id: page_up
  label: Page Up
  kind: action
  command: "PAGE_UP:"
  params: []
- id: page_down_press
  label: Page Down Press
  kind: action
  command: "PAGE_DOWN_PRESS:"
  params: []
- id: page_down_release
  label: Page Down Release
  kind: action
  command: "PAGE_DOWN_RELEASE:"
  params: []
- id: page_down
  label: Page Down
  kind: action
  command: "PAGE_DOWN:"
  params: []
- id: select
  label: Select
  kind: action
  command: "SELECT:"
  params: []
- id: back
  label: Back
  kind: action
  command: "BACK:"
  params: []
- id: position_select
  label: Position Select
  kind: action
  command: "POSITION_SELECT:{x_loc}:{y_loc}"
  params:
    - name: x_loc
      type: integer
      description: X coordinate (0 to 2 billion)
    - name: y_loc
      type: integer
      description: Y coordinate (0 to 2 billion)

# Paging and skipping
- id: page_down_or_next
  label: Page Down or Next
  kind: action
  command: "PAGE_DOWN_OR_NEXT:"
  params: []
- id: page_down_or_next_press
  label: Page Down or Next Press
  kind: action
  command: "PAGE_DOWN_OR_NEXT_PRESS:"
  params: []
- id: page_down_or_next_release
  label: Page Down or Next Release
  kind: action
  command: "PAGE_DOWN_OR_NEXT_RELEASE:"
  params: []
- id: page_down_or_previous
  label: Page Down or Previous
  kind: action
  command: "PAGE_DOWN_OR_PREVIOUS:"
  params: []
- id: page_down_or_previous_press
  label: Page Down or Previous Press
  kind: action
  command: "PAGE_DOWN_OR_PREVIOUS_PRESS:"
  params: []
- id: page_down_or_previous_release
  label: Page Down or Previous Release
  kind: action
  command: "PAGE_DOWN_OR_PREVIOUS_RELEASE:"
  params: []
- id: page_up_or_next
  label: Page Up or Next
  kind: action
  command: "PAGE_UP_OR_NEXT:"
  params: []
- id: page_up_or_next_press
  label: Page Up or Next Press
  kind: action
  command: "PAGE_UP_OR_NEXT_PRESS:"
  params: []
- id: page_up_or_next_release
  label: Page Up or Next Release
  kind: action
  command: "PAGE_UP_OR_NEXT_RELEASE:"
  params: []
- id: page_up_or_previous
  label: Page Up or Previous
  kind: action
  command: "PAGE_UP_OR_PREVIOUS:"
  params: []
- id: page_up_or_previous_press
  label: Page Up or Previous Press
  kind: action
  command: "PAGE_UP_OR_PREVIOUS_PRESS:"
  params: []
- id: page_up_or_previous_release
  label: Page Up or Previous Release
  kind: action
  command: "PAGE_UP_OR_PREVIOUS_RELEASE:"
  params: []

# UI - Menu
- id: kaleidescape_menu_on
  label: Kaleidescape Menu On
  kind: action
  command: "KALEIDESCAPE_MENU_ON:"
  params: []
- id: kaleidescape_menu_off
  label: Kaleidescape Menu Off
  kind: action
  command: "KALEIDESCAPE_MENU_OFF:"
  params: []
- id: kaleidescape_menu_toggle
  label: Kaleidescape Menu Toggle
  kind: action
  command: "KALEIDESCAPE_MENU_TOGGLE:"
  params: []
- id: disc_or_kaleidescape_menu
  label: Disc or Kaleidescape Menu
  kind: action
  command: "DISC_OR_KALEIDESCAPE_MENU:"
  params: []

# UI - Views / Navigation
- id: go_movies
  label: Go Movies
  kind: action
  command: "GO_MOVIES:"
  params: []
- id: go_movie_list
  label: Go Movie List
  kind: action
  command: "GO_MOVIE_LIST:"
  params: []
- id: go_movie_covers
  label: Go Movie Covers
  kind: action
  command: "GO_MOVIE_COVERS:"
  params: []
- id: go_movie_collections
  label: Go Movie Collections
  kind: action
  command: "GO_MOVIE_COLLECTIONS:"
  params: []
- id: go_movie_collection
  label: Go Movie Collection
  kind: action
  command: "GO_MOVIE_COLLECTION:{collection_name}"
  params:
    - name: collection_name
      type: string
- id: go_music
  label: Go Music
  kind: action
  command: "GO_MUSIC:"
  params: []
- id: go_music_list
  label: Go Music List
  kind: action
  command: "GO_MUSIC_LIST:"
  params: []
- id: go_music_covers
  label: Go Music Covers
  kind: action
  command: "GO_MUSIC_COVERS:"
  params: []
- id: go_music_collections
  label: Go Music Collections
  kind: action
  command: "GO_MUSIC_COLLECTIONS:"
  params: []
- id: go_music_collection
  label: Go Music Collection
  kind: action
  command: "GO_MUSIC_COLLECTION:{collection_name}"
  params:
    - name: collection_name
      type: string
- id: go_now_playing
  label: Go Now Playing
  kind: action
  command: "GO_NOW_PLAYING:"
  params: []
- id: go_movie_store
  label: Go Movie Store
  kind: action
  command: "GO_MOVIE_STORE:"
  params: []
- id: go_system_status
  label: Go System Status
  kind: action
  command: "GO_SYSTEM_STATUS:"
  params: []
- id: go_parental_control
  label: Go Parental Control
  kind: action
  command: "GO_PARENTAL_CONTROL:"
  params: []
- id: go_vault_summary
  label: Go Vault Summary
  kind: action
  command: "GO_VAULT_SUMMARY:"
  params: []

# UI State
- id: get_ui_state
  label: Get UI State
  kind: query
  command: "GET_UI_STATE:"
  params: []

# User Input
- id: get_user_input
  label: Get User Input
  kind: query
  command: "GET_USER_INPUT:"
  params: []
- id: get_user_input_prompt
  label: Get User Input Prompt
  kind: query
  command: "GET_USER_INPUT_PROMPT:"
  params: []
- id: set_user_input_entry
  label: Set User Input Entry
  kind: action
  command: "SET_USER_INPUT_ENTRY:{string}"
  params:
    - name: string
      type: string
- id: keyboard_character
  label: Keyboard Character
  kind: action
  command: "KEYBOARD_CHARACTER:{character}"
  params:
    - name: character
      type: string
      description: Single character (colon must be escaped with backslash)
- id: keyboard_literal
  label: Keyboard Literal
  kind: action
  command: "KEYBOARD_LITERAL:{character}"
  params:
    - name: character
      type: string
      description: ASCII character >= 32 (colon/slash must be escaped)
- id: backspace
  label: Backspace
  kind: action
  command: "BACKSPACE:"
  params: []

# View Controls
- id: filter_list
  label: Filter List
  kind: action
  command: "FILTER_LIST:"
  params: []
- id: shuffle_cover_art
  label: Shuffle Cover Art
  kind: action
  command: "SHUFFLE_COVER_ART:"
  params: []
- id: child_shuffle_cover_art
  label: Child Shuffle Cover Art
  kind: action
  command: "CHILD_SHUFFLE_COVER_ART:"
  params: []
- id: alphabetize_cover_art
  label: Alphabetize Cover Art
  kind: action
  command: "ALPHABETIZE_COVER_ART:"
  params: []
- id: default_level
  label: Default Level
  kind: action
  command: "DEFAULT_LEVEL:"
  params: []
- id: safe_level
  label: Safe Level
  kind: action
  command: "SAFE_LEVEL:"
  params: []
- id: go_search
  label: Go Search
  kind: action
  command: "GO_SEARCH:"
  params: []
- id: details
  label: Details
  kind: action
  command: "DETAILS:"
  params: []
- id: disc_in_tray_toggle
  label: Disc In Tray Toggle
  kind: action
  command: "DISC_IN_TRAY_TOGGLE:"
  params: []

# Screen Saver
- id: go_screen_saver
  label: Go Screen Saver
  kind: action
  command: "GO_SCREEN_SAVER:"
  params: []
- id: stop_screen_saver
  label: Stop Screen Saver
  kind: action
  command: "STOP_SCREEN_SAVER:"
  params: []

# Content Details
- id: get_content_details
  label: Get Content Details
  kind: query
  command: "GET_CONTENT_DETAILS:{handle}:{passcode}"
  params:
    - name: handle
      type: string
      description: Content handle from HIGHLIGHTED_SELECTION / BROWSE_RESPONSE / MUSIC_TITLE
    - name: passcode
      type: string
      description: Passcode to access content above current parental-control level
- id: get_highlighted_selection
  label: Get Highlighted Selection
  kind: query
  command: "GET_HIGHLIGHTED_SELECTION:"
  params: []

# Logging
- id: send_to_syslog
  label: Send to Syslog
  kind: action
  command: "SEND_TO_SYSLOG:INFORMATION:{message}"
  params:
    - name: message
      type: string

# Playback - Movie
- id: play
  label: Play
  kind: action
  command: "PLAY:"
  params: []
- id: pause
  label: Pause
  kind: action
  command: "PAUSE:"
  params: []
- id: pause_on
  label: Pause On
  kind: action
  command: "PAUSE_ON:"
  params: []
- id: pause_off
  label: Pause Off
  kind: action
  command: "PAUSE_OFF:"
  params: []
- id: play_or_pause
  label: Play or Pause
  kind: action
  command: "PLAY_OR_PAUSE:"
  params: []
- id: stop
  label: Stop
  kind: action
  command: "STOP:"
  params: []
- id: next
  label: Next
  kind: action
  command: "NEXT:"
  params: []
- id: previous
  label: Previous
  kind: action
  command: "PREVIOUS:"
  params: []
- id: scan_forward
  label: Scan Forward
  kind: action
  command: "SCAN_FORWARD:"
  params: []
- id: scan_reverse
  label: Scan Reverse
  kind: action
  command: "SCAN_REVERSE:"
  params: []
- id: replay
  label: Replay
  kind: action
  command: "REPLAY:"
  params: []
- id: stop_or_cancel
  label: Stop or Cancel
  kind: action
  command: "STOP_OR_CANCEL:"
  params: []

# Child Playback
- id: child_play
  label: Child Play
  kind: action
  command: "CHILD_PLAY:"
  params: []
- id: child_pause
  label: Child Pause
  kind: action
  command: "CHILD_PAUSE:"
  params: []
- id: child_pause_on
  label: Child Pause On
  kind: action
  command: "CHILD_PAUSE_ON:"
  params: []
- id: child_pause_off
  label: Child Pause Off
  kind: action
  command: "CHILD_PAUSE_OFF:"
  params: []
- id: child_stop
  label: Child Stop
  kind: action
  command: "CHILD_STOP:"
  params: []

# Disc Navigation
- id: disc_menu
  label: Disc Menu
  kind: action
  command: "DISC_MENU:"
  params: []
- id: disc_top_menu
  label: Disc Top Menu
  kind: action
  command: "DISC_TOP_MENU:"
  params: []
- id: disc_resume
  label: Disc Resume
  kind: action
  command: "DISC_RESUME:"
  params: []
- id: start_chapter_entry
  label: Start Chapter Entry
  kind: action
  command: "START_CHAPTER_ENTRY:"
  params: []
- id: start_disc_title_entry
  label: Start Disc Title Entry
  kind: action
  command: "START_DISC_TITLE_ENTRY:"
  params: []
- id: start_send_number_to_disc_entry
  label: Start Send Number to Disc Entry
  kind: action
  command: "START_SEND_NUMBER_TO_DISC_ENTRY:"
  params: []
- id: show_navigation_overlay
  label: Show Navigation Overlay
  kind: action
  command: "SHOW_NAVIGATION_OVERLAY:"
  params: []
- id: status_and_settings
  label: Status and Settings
  kind: action
  command: "STATUS_AND_SETTINGS:"
  params: []
- id: angle_next
  label: Angle Next
  kind: action
  command: "ANGLE_NEXT:"
  params: []
- id: angle_previous
  label: Angle Previous
  kind: action
  command: "ANGLE_PREVIOUS:"
  params: []
- id: audio_next
  label: Audio Next
  kind: action
  command: "AUDIO_NEXT:"
  params: []
- id: subtitles_next
  label: Subtitles Next
  kind: action
  command: "SUBTITLES_NEXT:"
  params: []
- id: bluray_special_stop
  label: BluRay Special Stop
  kind: action
  command: "BLURAY_SPECIAL_STOP:"
  params: []
  notes: "Source CAUTION: can trap user depending on disc authoring; provide alternative return mechanism"
- id: bluray_popup_menu_toggle
  label: BluRay Popup Menu Toggle
  kind: action
  command: "BLURAY_POPUP_MENU_TOGGLE:"
  params: []

# Intermission
- id: intermission_on
  label: Intermission On
  kind: action
  command: "INTERMISSION_ON:"
  params: []
- id: intermission_off
  label: Intermission Off
  kind: action
  command: "INTERMISSION_OFF:"
  params: []
- id: intermission_toggle
  label: Intermission Toggle
  kind: action
  command: "INTERMISSION_TOGGLE:"
  params: []

# Favorite Scene
- id: set_favorite_scene_start
  label: Set Favorite Scene Start
  kind: action
  command: "SET_FAVORITE_SCENE_START:"
  params: []
- id: set_favorite_scene_end
  label: Set Favorite Scene End
  kind: action
  command: "SET_FAVORITE_SCENE_END:"
  params: []

# Blu-ray Color Buttons
- id: red_press
  label: Red Press
  kind: action
  command: "RED_PRESS:"
  params: []
- id: red_release
  label: Red Release
  kind: action
  command: "RED_RELEASE:"
  params: []
- id: red
  label: Red
  kind: action
  command: "RED:"
  params: []
- id: green_press
  label: Green Press
  kind: action
  command: "GREEN_PRESS:"
  params: []
- id: green_release
  label: Green Release
  kind: action
  command: "GREEN_RELEASE:"
  params: []
- id: green
  label: Green
  kind: action
  command: "GREEN:"
  params: []
- id: blue_press
  label: Blue Press
  kind: action
  command: "BLUE_PRESS:"
  params: []
- id: blue_release
  label: Blue Release
  kind: action
  command: "BLUE_RELEASE:"
  params: []
- id: blue
  label: Blue
  kind: action
  command: "BLUE:"
  params: []
- id: yellow_press
  label: Yellow Press
  kind: action
  command: "YELLOW_PRESS:"
  params: []
- id: yellow_release
  label: Yellow Release
  kind: action
  command: "YELLOW_RELEASE:"
  params: []
- id: yellow
  label: Yellow
  kind: action
  command: "YELLOW:"
  params: []

# Playback Queries / Status
- id: set_status_cue_period
  label: Set Status Cue Period
  kind: action
  command: "SET_STATUS_CUE_PERIOD:{period}"
  params:
    - name: period
      type: integer
      description: "Seconds between PLAY_STATUS/MUSIC_PLAY_STATUS messages (0=no location updates, 1=every second)"
- id: get_play_status
  label: Get Play Status
  kind: query
  command: "GET_PLAY_STATUS:"
  params: []
- id: get_playing_title_name
  label: Get Playing Title Name
  kind: query
  command: "GET_PLAYING_TITLE_NAME:"
  params: []
- id: get_movie_media_type
  label: Get Movie Media Type
  kind: query
  command: "GET_MOVIE_MEDIA_TYPE:"
  params: []
- id: get_camera_angle
  label: Get Camera Angle
  kind: query
  command: "GET_CAMERA_ANGLE:"
  params: []
- id: get_movie_location
  label: Get Movie Location
  kind: query
  command: "GET_MOVIE_LOCATION:"
  params: []
- id: get_video_mode
  label: Get Video Mode
  kind: query
  command: "GET_VIDEO_MODE:"
  params: []
- id: get_video_color
  label: Get Video Color
  kind: query
  command: "GET_VIDEO_COLOR:"
  params: []
- id: get_content_color
  label: Get Content Color
  kind: query
  command: "GET_CONTENT_COLOR:"
  params: []

# Masking / CinemaScape
- id: go_calibrate_masking
  label: Go Calibrate Masking
  kind: action
  command: "GO_CALIBRATE_MASKING:"
  params: []
- id: go_calibrate_masking_overscan
  label: Go Calibrate Masking Overscan
  kind: action
  command: "GO_CALIBRATE_MASKING_OVERSCAN:"
  params: []
- id: get_cinemascape_mask
  label: Get CinemaScape Mask
  kind: query
  command: "GET_CINEMASCAPE_MASK:"
  params: []
- id: get_screen_mask
  label: Get Screen Mask
  kind: query
  command: "GET_SCREEN_MASK:"
  params: []
- id: get_screen_mask2
  label: Get Screen Mask2
  kind: query
  command: "GET_SCREEN_MASK2:"
  params: []
- id: set_screen_mask
  label: Set Screen Mask
  kind: action
  command: "SET_SCREEN_MASK:{flag}"
  params:
    - name: flag
      type: enum
      values: [0, 1]
      description: "0=no masking compensation, 1=compensate for masking"
- id: get_cinemascape_mode
  label: Get CinemaScape Mode
  kind: query
  command: "GET_CINEMASCAPE_MODE:"
  params: []
- id: set_cinemascape_mode
  label: Set CinemaScape Mode
  kind: action
  command: "SET_CINEMASCAPE_MODE:{mode}"
  params:
    - name: mode
      type: enum
      values: [0, 1, 2, 3]
      description: "0=off, 1=2.35 Anamorphic, 2=2.35 Letterbox, 3=Native 2.35"
- id: get_scale_mode
  label: Get Scale Mode
  kind: query
  command: "GET_SCALE_MODE:"
  params: []

# Music Zone
- id: get_music_now_playing_status
  label: Get Music Now Playing Status
  kind: query
  command: "GET_MUSIC_NOW_PLAYING_STATUS:"
  params: []
- id: get_music_play_status
  label: Get Music Play Status
  kind: query
  command: "GET_MUSIC_PLAY_STATUS:"
  params: []
- id: get_music_title
  label: Get Music Title
  kind: query
  command: "GET_MUSIC_TITLE:"
  params: []
- id: get_playing_music_information
  label: Get Playing Music Information
  kind: query
  command: "GET_PLAYING_MUSIC_INFORMATION:"
  params: []
- id: music_random_on
  label: Music Random On
  kind: action
  command: "MUSIC_RANDOM_ON:"
  params: []
- id: music_random_off
  label: Music Random Off
  kind: action
  command: "MUSIC_RANDOM_OFF:"
  params: []
- id: music_random_toggle
  label: Music Random Toggle
  kind: action
  command: "MUSIC_RANDOM_TOGGLE:"
  params: []
- id: music_repeat_on
  label: Music Repeat On
  kind: action
  command: "MUSIC_REPEAT_ON:"
  params: []
- id: music_repeat_off
  label: Music Repeat Off
  kind: action
  command: "MUSIC_REPEAT_OFF:"
  params: []
- id: music_repeat_toggle
  label: Music Repeat Toggle
  kind: action
  command: "MUSIC_REPEAT_TOGGLE:"
  params: []
- id: get_controlled_zone
  label: Get Controlled Zone
  kind: query
  command: "GET_CONTROLLED_ZONE:"
  params: []
- id: set_controlled_zone
  label: Set Controlled Zone
  kind: action
  command: "SET_CONTROLLED_ZONE:#{sn}.{zn}"
  params:
    - name: sn
      type: string
      description: Serial number (zero-padded 12 hex)
    - name: zn
      type: integer
      description: Music zone 01-04
- id: browse
  label: Browse
  kind: action
  command: "BROWSE:{browse_handle}:{passcode}:{lines}:{flags}"
  params:
    - name: browse_handle
      type: string
    - name: passcode
      type: string
    - name: lines
      type: string
      description: Line range, e.g. "1-10"
    - name: flags
      type: string
      description: "filter=\"searchstring\" or suggest"
- id: perform_action
  label: Perform Action
  kind: action
  command: "PERFORM_ACTION:{handle}:{passcode}:{action}"
  params:
    - name: handle
      type: string
    - name: passcode
      type: string
    - name: action
      type: string
- id: play_first_in_music_collection
  label: Play First In Music Collection
  kind: action
  command: "PLAY_FIRST_IN_MUSIC_COLLECTION:{collection}"
  params:
    - name: collection
      type: string
- id: play_next_in_music_collection
  label: Play Next In Music Collection
  kind: action
  command: "PLAY_NEXT_IN_MUSIC_COLLECTION:{collection}"
  params:
    - name: collection
      type: string
- id: play_previous_in_music_collection
  label: Play Previous In Music Collection
  kind: action
  command: "PLAY_PREVIOUS_IN_MUSIC_COLLECTION:{collection}"
  params:
    - name: collection
      type: string
- id: assign_playing_music_to_preset
  label: Assign Playing Music To Preset
  kind: action
  command: "ASSIGN_PLAYING_MUSIC_TO_PRESET:{tag}"
  params:
    - name: tag
      type: string
- id: play_music_preset
  label: Play Music Preset
  kind: action
  command: "PLAY_MUSIC_PRESET:{tag}"
  params:
    - name: tag
      type: string
- id: get_music_preset_information
  label: Get Music Preset Information
  kind: query
  command: "GET_MUSIC_PRESET_INFORMATION:{tag}"
  params:
    - name: tag
      type: string

# Scripts
- id: play_script
  label: Play Script
  kind: action
  command: "PLAY_SCRIPT:{script_name}"
  params:
    - name: script_name
      type: string

# Child Mode
- id: get_child_mode_state
  label: Get Child Mode State
  kind: query
  command: "GET_CHILD_MODE_STATE:"
  params: []
- id: enter_child_mode
  label: Enter Child Mode
  kind: action
  command: "ENTER_CHILD_MODE:"
  params: []
- id: leave_child_mode
  label: Leave Child Mode
  kind: action
  command: "LEAVE_CHILD_MODE:"
  params: []

# Network
- id: get_network_settings
  label: Get Network Settings
  kind: query
  command: "GET_NETWORK_SETTINGS:"
  params: []
- id: set_network_settings
  label: Set Network Settings
  kind: action
  command: "SET_NETWORK_SETTINGS:{static}:{ip_address}:{subnet}:{gateway}:{dns1}:{dns2}"
  params:
    - name: static
      type: enum
      values: [0, 1]
      description: "0=DHCP, 1=static"
    - name: ip_address
      type: string
    - name: subnet
      type: string
    - name: gateway
      type: string
    - name: dns1
      type: string
    - name: dns2
      type: string

# Capabilities / Time
- id: get_system_capabilities
  label: Get System Capabilities
  kind: query
  command: "GET_SYSTEM_CAPABILITIES:"
  params: []
- id: get_zone_capabilities
  label: Get Zone Capabilities
  kind: query
  command: "GET_ZONE_CAPABILITIES:"
  params: []
- id: get_time
  label: Get Time
  kind: query
  command: "GET_TIME:"
  params: []
  notes: "Recommended TCP/IP connection keepalive test (no system effect)"

Feedbacks

# Event messages are unsolicited; device sends them on state change
# Response format: status_code:message_name:fields...
# Status 000 = OK, non-zero = error

# Power state events
- id: device_power_state
  label: Device Power State
  type: event
  fields:
    - name: power_state
      type: enum
      values: [0, 1]
      description: "0=standby, 1=powered on"
    - name: zone_states
      type: string
      description: "Colon-delimited zone availability (0=disabled, 1=available)"

- id: player_restart
  label: Player Restart
  type: event
  description: Generated after power up complete or LEAVE_STANDBY

# UI state event
- id: ui_state
  label: UI State
  type: event
  fields:
    - name: screen
      type: integer
      description: "00=Unknown, 01=Movie List, 02=Movie Collections, 03=Movie Covers, 04=Parental Control, 07=Playing movie, 08=System Status, 09=Music List, 10=Music Covers, 11=Music Collections, 12=Music Now Playing, 14=Vault Summary, 15=System Settings, 16=Movie Store, 18=Library search"
    - name: popup
      type: integer
      description: "00=None, 01=Details, 02=Status overlay, 03=Overlay not status, 09=Keyboard"
    - name: dialog
      type: integer
      description: "00=None, 01=Kaleidescape menu, 02=Passcode, 03=Question, 04=Info, 05=Warning, 06=Error, 07=Preplay, 08=Import Warranty, 09=Keyboard, 10=IP config"
    - name: saver
      type: enum
      values: [0, 1]
      description: "0=inactive, 1=active"

- id: highlighted_selection
  label: Highlighted Selection
  type: event
  fields:
    - name: selection_id
      type: string

- id: system_readiness_state
  label: System Readiness State
  type: event
  fields:
    - name: state
      type: enum
      values: [0, 1, 2]
      description: "0=ready, 1=becoming ready, 2=idle"

- id: available_devices
  label: Available Devices
  type: event
  fields:
    - name: devices
      type: string
      description: Colon-delimited CPDID list

- id: available_devices_by_serial_number
  label: Available Devices by Serial Number
  type: event
  fields:
    - name: serial_numbers
      type: string
      description: Colon-delimited zero-padded 12-hex serial numbers

# Query responses share same field structure as events
- id: system_version
  label: System Version
  type: response
  fields:
    - name: control_protocol_version
      type: string
      description: Zero-padded two-digit protocol version
    - name: kos_version
      type: string

- id: protocol
  label: Protocol
  type: response
  fields:
    - name: version
      type: string

- id: active_protocol
  label: Active Protocol
  type: response
  fields:
    - name: version
      type: string

- id: num_zones
  label: Num Zones
  type: response
  fields:
    - name: num_movie_zones
      type: string
      description: "01=has onscreen display, 00=no display"
    - name: num_music_zones
      type: string

- id: device_type_name
  label: Device Type Name
  type: response
  fields:
    - name: device_name
      type: string
      description: "Server, Cinema One, Strato, Strato V, Alto, Terra Movie Server, Player, Music Player, or Disc Vault"

- id: device_info
  label: Device Info
  type: response
  fields:
    - name: device_type
      type: string
    - name: serial_num
      type: string
      description: Zero-padded 16 hex
    - name: cpdid
      type: string
      description: Assigned CPDID (00 if unassigned)
    - name: ip_address
      type: string

- id: friendly_name
  label: Friendly Name
  type: response
  fields:
    - name: name
      type: string

- id: friendly_system_name
  label: Friendly System Name
  type: response
  fields:
    - name: name
      type: string

- id: user_input
  label: User Input
  type: response
  fields:
    - name: type
      type: enum
      values: [00, 01, 02]
      description: "00=No prompt, 01=Alphanumeric, 02=Numeric"
    - name: prompt
      type: string
    - name: entry
      type: string

- id: user_input_prompt
  label: User Input Prompt
  type: response
  fields:
    - name: type
      type: enum
      values: [00, 01, 02]
    - name: icon
      type: string
    - name: prompt
      type: string
    - name: displayed
      type: enum
      values: [0, 1]
    - name: char_limit
      type: string
    - name: valid
      type: enum
      values: [0, 1]

- id: content_details_overview
  label: Content Details Overview
  type: response
  fields:
    - name: num_lines
      type: integer
    - name: handle
      type: string
    - name: table
      type: string
      description: "movies or albums"

- id: content_details
  label: Content Details
  type: response
  fields:
    - name: line
      type: integer
    - name: name
      type: string
    - name: value
      type: string

- id: title_name
  label: Title Name
  type: event
  fields:
    - name: title
      type: string

- id: movie_media_type
  label: Movie Media Type
  type: event
  fields:
    - name: media_type
      type: string
      description: "00=none, 01=DVD, 02=Video stream, 03=Blu-ray"

- id: movie_location
  label: Movie Location
  type: event
  fields:
    - name: location
      type: string
      description: "00=Kaleidescape interface/unknown, 03=main content, 04=intermission, 05=end credits, 06=disc menu"

- id: video_mode
  label: Video Mode
  type: event
  fields:
    - name: composite
      type: string
    - name: component
      type: string
    - name: hdmi
      type: string

- id: video_color
  label: Video Color
  type: event
  fields:
    - name: eotf
      type: string
    - name: color_space
      type: string
    - name: color_depth
      type: string
    - name: color_sampling
      type: string

- id: content_color
  label: Content Color
  type: event
  fields:
    - name: eotf
      type: string
    - name: color_space
      type: string
    - name: color_depth
      type: string
    - name: color_sampling
      type: string

- id: play_status
  label: Play Status
  type: event
  fields:
    - name: mode
      type: enum
      values: [0, 1, 2, 4, 6]
      description: "0=nothing playing, 1=paused, 2=playing, 4=fwd scan, 6=rev scan"
    - name: speed
      type: integer
      description: 1-3, applies to mode 4 or 6
    - name: title_num
      type: string
    - name: title_length
      type: string
    - name: title_loc
      type: string
    - name: chap_num
      type: string
    - name: chap_len
      type: string
    - name: chap_loc
      type: string

- id: status_cue_period
  label: Status Cue Period
  type: response
  fields:
    - name: period
      type: integer

- id: camera_angle
  label: Camera Angle
  type: event
  fields:
    - name: cur_angle
      type: integer
    - name: num_angles
      type: integer
    - name: in_angle_block
      type: enum
      values: [0, 1]

- id: cinemascape_mask
  label: CinemaScape Mask
  type: event
  fields:
    - name: frame_ratio
      type: string
      description: "133, 166, 178, 237, or 240"

- id: screen_mask
  label: Screen Mask
  type: event
  fields:
    - name: image_ratio
      type: string
    - name: top_trim_rel
      type: string
    - name: bottom_trim_rel
      type: string
    - name: conservative_ratio
      type: string
    - name: top_mask_abs
      type: string
    - name: bottom_mask_abs
      type: string

- id: screen_mask2
  label: Screen Mask2
  type: event
  fields:
    - name: top_mask_abs
      type: string
    - name: bottom_mask_abs
      type: string
    - name: top_calibrated
      type: string
    - name: bottom_calibrated
      type: string

- id: cinemascape_mode
  label: CinemaScape Mode
  type: event
  fields:
    - name: mode
      type: enum
      values: [0, 1, 2, 3]

- id: scale_mode
  label: Scale Mode
  type: event
  fields:
    - name: mode
      type: enum
      values: [0, 1, 2, 3]
      description: "0=no scaling, 1=anamorphic, 2=reserved, 3=zoom"

- id: music_now_playing_status
  label: Music Now Playing Status
  type: event
  fields:
    - name: total
      type: string
    - name: location
      type: string
    - name: repeat
      type: enum
      values: [0, 1]
    - name: random
      type: enum
      values: [0, 1]
    - name: generation
      type: string
    - name: now_playing_handle
      type: string

- id: music_play_status
  label: Music Play Status
  type: event
  fields:
    - name: mode
      type: enum
      values: [1, 2, 4, 6]
      description: "1=paused, 2=play, 4=ff, 6=rev"
    - name: speed
      type: string
    - name: length
      type: string
    - name: position
      type: string
    - name: progress
      type: string

- id: music_title
  label: Music Title
  type: event
  fields:
    - name: track
      type: string
    - name: artist
      type: string
    - name: album
      type: string
    - name: track_handle
      type: string
    - name: album_handle
      type: string
    - name: now_playing_handle
      type: string

- id: playing_music_information
  label: Playing Music Information
  type: event
  fields:
    - name: handle
      type: string
    - name: label
      type: string

- id: music_preset_information
  label: Music Preset Information
  type: response
  fields:
    - name: tag
      type: string
    - name: handle
      type: string
    - name: label
      type: string

- id: controlled_zone
  label: Controlled Zone
  type: response
  fields:
    - name: sn
      type: string
      description: Component serial number
    - name: zn
      type: integer
      description: Music zone 01-04

- id: browse_results_overview
  label: Browse Results Overview
  type: response
  fields:
    - name: browse_handle
      type: string
    - name: title
      type: string
    - name: response_lines
      type: integer
    - name: total_lines
      type: integer
    - name: first_line_index
      type: integer
    - name: playing_line_index
      type: integer

- id: browse_result
  label: Browse Result
  type: response
  fields:
    - name: relative_line
      type: integer
    - name: absolute_line
      type: integer
    - name: text
      type: string
    - name: play_status
      type: string
    - name: default_label
      type: string
    - name: default_behavior
      type: string
    - name: default_handle
      type: string
    - name: default_pop
      type: string
    - name: action1_label
      type: string
    - name: action1_behavior
      type: string
    - name: action1_handle
      type: string
    - name: action1_pop
      type: string
    - name: action2_label
      type: string
    - name: action2_behavior
      type: string
    - name: action2_handle
      type: string
    - name: action2_pop
      type: string
    - name: action3_label
      type: string
    - name: action3_behavior
      type: string
    - name: action3_handle
      type: string
    - name: action3_pop
      type: string
    - name: action4_label
      type: string
    - name: action4_behavior
      type: string
    - name: action4_handle
      type: string
    - name: action4_pop
      type: string

- id: action_performed
  label: Action Performed
  type: response
  fields:
    - name: text
      type: string

- id: child_mode_state
  label: Child Mode State
  type: event
  fields:
    - name: state
      type: enum
      values: [0, 1]

- id: network_settings
  label: Network Settings
  type: response
  fields:
    - name: static
      type: enum
      values: [0, 1]
      description: "0=DHCP, 1=static"
    - name: ip_address
      type: string
    - name: subnet_mask
      type: string
    - name: gateway
      type: string
    - name: dns1
      type: string
    - name: dns2
      type: string

- id: system_capabilities
  label: System Capabilities
  type: response
  fields:
    - name: movies
      type: enum
      values: [Y, N]
    - name: music
      type: enum
      values: [Y, N]
    - name: product_line
      type: enum
      values: [Y, N]
      description: "Y=Premiere, N=Strato"

- id: zone_capabilities
  label: Zone Capabilities
  type: response
  fields:
    - name: osd
      type: enum
      values: [Y, N]
    - name: movies
      type: enum
      values: [Y, N]
    - name: music
      type: enum
      values: [Y, N]
    - name: store
      type: enum
      values: [Y, N]
    - name: search
      type: enum
      values: [Y, N]
    - name: library_type
      type: enum
      values: [Y, N]
    - name: osd_generation
      type: integer
      description: "00=none, 01=OSDv1 Premiere, 02=OSDv2 classic, 03=OSDv2 row"

- id: time
  label: Time
  type: response
  fields:
    - name: yyyy
      type: integer
    - name: mm
      type: integer
    - name: dd
      type: integer
    - name: hh
      type: integer
    - name: min
      type: integer
    - name: ss
      type: integer
    - name: timezone
      type: string

- id: user_defined_event
  label: User Defined Event
  type: event
  fields:
    - name: event_name
      type: string

Variables

# UNRESOLVED: explicit settable parameters largely mirror actions (SET_* commands).
# Volume control: source documents only USER_DEFINED_EVENT triggers from remote
# (VOLUME_DOWN_PRESS, VOLUME_UP_PRESS, VOLUME_DOWN_RELEASE, VOLUME_UP_RELEASE,
# TOGGLE_MUTE) and App volume capabilities (VOLUME_QUERY, VOLUME_UP, VOLUME_DOWN,
# TOGGLE_MUTE) - no direct volume SET command on the player itself.

Events

# See Feedbacks section - events use same message types as responses but with seq="!" and status 000
# Key unsolicited events:
#   - DEVICE_POWER_STATE: power state change
#   - PLAYER_RESTART: after power up or LEAVE_STANDBY (no status code)
#   - UI_STATE: onscreen display state change
#   - HIGHLIGHTED_SELECTION: user changes selection
#   - AVAILABLE_DEVICES: list of addressable components changes
#   - SYSTEM_READINESS_STATE: idle mode transitions
#   - PLAY_STATUS / MUSIC_PLAY_STATUS: playback progress (rate governed by SET_STATUS_CUE_PERIOD)
#   - VIDEO_MODE / VIDEO_COLOR / CONTENT_COLOR: video output changes
#   - SCREEN_MASK / SCREEN_MASK2 / CINEMASCAPE_MASK / CINEMASCAPE_MODE: masking state
#   - MOVIE_LOCATION / MOVIE_MEDIA_TYPE / TITLE_NAME: playback metadata
#   - MUSIC_TITLE / PLAYING_MUSIC_INFORMATION / MUSIC_NOW_PLAYING_STATUS / MUSIC_PLAY_STATUS: music metadata
#   - CHILD_MODE_STATE: child UI activation change
#   - USER_DEFINED_EVENT: script step, child UI activation, remote volume, or SEND_EVENT

Macros

# UNRESOLVED: explicit multi-step macros not described in source

Safety

confirmation_required_for: []
interlocks:
  - "1080p Mini Player drops TCP/IP connection on ENTER_STANDBY/LEAVE_STANDBY; wait 15 seconds before reconnecting"
  - "When 1080p Mini Player disconnects on power state change, controller may miss DEVICE_POWER_STATE event during reconnect"
  - "BLURAY_SPECIAL_STOP can trap user depending on disc authoring; controller must provide alternative return to Kaleidescape menu/movie view"
  - "On PLAYER_RESTART, controller should resync: send SET_STATUS_CUE_PERIOD, GET_UI_STATE, GET_MOVIE_LOCATION"
# UNRESOLVED: explicit interlock procedures not fully detailed in source

Notes

TCP/IP uses port 10000 with up to 20 simultaneous connections. Serial uses RS-232 DTE pinout (DB-9 male: pins 2 RD, 3 TD, 5 SG, 7 RTS, 8 CTS; straight-through to DCE, null modem to DTE). Hardware RTS/CTS flow control supported (not software); default = None (RTS asserted, CTS ignored). Checksums not applicable over TCP/IP (TCP has built-in error handling); checksums optional for serial commands. Message format: device_id/seq/message_body[/checksum] with slash (/) and colon (:) delimiters; up to 1024 chars + CR/LF. CPDID range 01-99; 00 invalid; ?? indicates garbled command. Sequence number 0-9 for commands/responses, ! for events, ? for unknown. Character set ISO 8859-1 (Latin-1), decimal 32-255; special chars escaped with backslash sequences (\n, \r, \t, \/, \\, \:, \dnnn). Binary delimiters (SOH/STX/EOT) available for TCP only, not RS-232. GET_TIME command recommended for TCP keepalive testing. Response times scale with serial baud rate (9600=3.2s, 19200=1.6s, 38400=0.8s, 57600=0.5s). Components do not echo characters; enable local echo on terminal emulator. Settings changed via SET_* commands reset on component restart — controller must resend on PLAYER_RESTART / VIDEO_MODE / SCREEN_MASK events. Premiere players used with Co-Star are controlled via the connected Strato and cannot be controlled directly.


Spec output above. ~140 new actions added, all with verbatim `command:` payloads. Feedbacks extended with PLAY_STATUS, MUSIC_PLAY_STATUS, MUSIC_TITLE, CAMERA_ANGLE, masks, color, capabilities, time, browse, etc. Existing IDs/shapes preserved; revision bumped to 2. Caveman mode active for chat.

## Provenance

```yaml
source_domains:
  - kaleidescape.com
source_urls:
  - https://www.kaleidescape.com/wp-content/uploads/kaleidescape-system-control-protocol-reference-manual.pdf
  - https://www.kaleidescape.com/wp-content/uploads/2019/07/Kaleidescape-Programming-Manual-for-Crestron.pdf
  - https://www.kaleidescape.com/support/article/Kaleidescape-Control-Commands
retrieved_at: 2026-05-21T02:46:18.238Z
last_checked_at: 2026-07-21T22:57:00.983Z
```

## Verification Summary

```yaml
verdict: verified
checked_at: 2026-07-21T22:57:00.983Z
matched_actions: 203
action_count: 203
confidence: medium
summary: "All 203 spec actions match literal source command headers/tokens with consistent shapes; transport values (port 10000, 19200-8-N-1) confirmed verbatim; near-total bidirectional coverage of source protocol. (8 unresolved item(s) noted in Known Gaps.)"
```

## Known Gaps

```yaml
- "Appendix A (full command summary and status codes) referenced but not fully reproduced in source excerpt"
- "no direct volume/gain commands in source (volume reported only as USER_DEFINED_EVENT from remote)"
- "explicit settable parameters largely mirror actions (SET_* commands)."
- "explicit multi-step macros not described in source"
- "explicit interlock procedures not fully detailed in source"
- "Appendix A (full command summary and status codes) referenced but only partially reproduced in source excerpt"
- "direct volume/audio level commands not documented (only USER_DEFINED_EVENT triggers from remote/apps)"
- "firmware version compatibility not stated in source (doc covers kOS 10.18 & 8.13)"
```

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