Summary
The madVR Envy is a video processor with TCP/IP control. Envy runs as a TCP server on port 44077, supports up to 16 concurrent connections, and exchanges ASCII (UTF-8) command lines terminated by CR/LF. Commands cover power, menu/GUI, aspect ratio, profile management, options, 3DLUT files, settings, EDID, and maintenance operations; the server pushes unsolicited notifications for state changes.
Transport
protocols:
- tcp
addressing:
port: 44077
auth:
type: none # inferred: no auth procedure in source
Traits
- powerable # inferred: PowerOff / Standby / Restart / ReloadSoftware
- routable # inferred: ActivateProfile / OpenMenu navigation
- queryable # inferred: GetIncomingSignalInfo, GetAspectRatio, GetTemperatures, etc.
Actions
# 5.1 Power
- id: power_off
label: Power Off
kind: action
command: "PowerOff"
params: []
- id: standby
label: Standby
kind: action
command: "Standby"
params: []
- id: restart
label: Restart
kind: action
command: "Restart"
params: []
- id: reload_software
label: Reload Software
kind: action
command: "ReloadSoftware"
params: []
# 5.2 Menu / GUI
- id: open_menu
label: Open Menu
kind: action
command: "OpenMenu {menu}"
params:
- name: menu
type: string
description: One of Info, Settings, Configuration, Profiles, TestPatterns (or a pageId)
- id: close_menu
label: Close Menu
kind: action
command: "CloseMenu"
params: []
- id: key_press
label: Key Press (short, <0.7s)
kind: action
command: "KeyPress {button}"
params:
- name: button
type: string
description: POWER, INFO, MENU=CONFIG, LEFT, RIGHT, UP, DOWN, OK, INPUT=PROFILES, SETTINGS, BACK, RED, GREEN, BLUE, YELLOW, MAGENTA, CYAN
- id: key_hold
label: Key Hold (>1s)
kind: action
command: "KeyHold {button}"
params:
- name: button
type: string
description: Same button names as KeyPress
- id: display_alert_window
label: Display Alert Window
kind: action
command: "DisplayAlertWindow {text}"
params:
- name: text
type: string
description: Alert window text shown centered on display
- id: close_alert_window
label: Close Alert Window
kind: action
command: "CloseAlertWindow"
params: []
- id: display_message
label: Display Message
kind: action
command: "DisplayMessage {seconds} {text}"
params:
- name: seconds
type: integer
description: Timeout in seconds
- name: text
type: string
description: Message text
- id: display_audio_volume
label: Display Audio Volume
kind: action
command: "DisplayAudioVolume {min} {current} {max} {unit}"
params:
- name: min
type: integer
- name: current
type: integer
- name: max
type: integer
- name: unit
type: string
description: Unit description, e.g. "dB" or "%"
- id: display_audio_mute
label: Display Audio Mute
kind: action
command: "DisplayAudioMute"
params: []
- id: close_audio_mute
label: Close Audio Mute
kind: action
command: "CloseAudioMute"
params: []
# 5.3 Aspect Ratio
- id: set_aspect_ratio_mode
label: Set Aspect Ratio Mode
kind: action
command: "SetAspectRatioMode {mode}"
params:
- name: mode
type: string
description: Auto | Hold | 4:3 | 16:9 | 1.85:1 | 2.00:1 | 2.20:1 | 2.35:1 | 2.40:1 | 2.55:1 | 2.76:1
# 5.4 Information Requests
- id: get_incoming_signal_info
label: Get Incoming Signal Info
kind: query
command: "GetIncomingSignalInfo"
params: []
- id: get_aspect_ratio
label: Get Aspect Ratio
kind: query
command: "GetAspectRatio"
params: []
- id: get_masking_ratio
label: Get Masking Ratio
kind: query
command: "GetMaskingRatio"
params: []
- id: get_temperatures
label: Get Temperatures
kind: query
command: "GetTemperatures"
params: []
- id: get_mac_address
label: Get MAC Address
kind: query
command: "GetMacAddress"
params: []
# 5.5 Custom Profile Groups
- id: create_profile_group
label: Create Profile Group
kind: action
command: "CreateProfileGroup {name}"
params:
- name: name
type: string
description: New custom profile group name
- id: rename_profile_group
label: Rename Profile Group
kind: action
command: "RenameProfileGroup {groupId} {name}"
params:
- name: groupId
type: string
description: Custom profile group ID
- name: name
type: string
description: New name
- id: delete_profile_group
label: Delete Profile Group
kind: action
command: "DeleteProfileGroup {groupId}"
params:
- name: groupId
type: string
- id: enum_profile_groups
label: Enumerate Profile Groups
kind: query
command: "EnumProfileGroups"
params: []
# 5.6 Source, Display, Custom Profiles
- id: create_profile
label: Create Profile
kind: action
command: "CreateProfile {group} {name}"
params:
- name: group
type: string
description: SOURCE | DISPLAY | customProfileGroupId
- name: name
type: string
description: New profile name
- id: rename_profile
label: Rename Profile
kind: action
command: "RenameProfile {group} {profileId} {name}"
params:
- name: group
type: string
- name: profileId
type: string
- name: name
type: string
- id: delete_profile
label: Delete Profile
kind: action
command: "DeleteProfile {group} {profileId}"
params:
- name: group
type: string
- name: profileId
type: string
- id: add_profile_to_page
label: Add Profile To Page
kind: action
command: "AddProfileToPage {fullProfileId} {pageId}"
params:
- name: fullProfileId
type: string
- name: pageId
type: string
- id: remove_profile_from_page
label: Remove Profile From Page
kind: action
command: "RemoveProfileFromPage {fullProfileId} {pageId}"
params:
- name: fullProfileId
type: string
- name: pageId
type: string
- id: activate_profile
label: Activate Profile
kind: action
command: "ActivateProfile {group} {profileId}"
params:
- name: group
type: string
description: SOURCE | DISPLAY | customProfileGroupId
- name: profileId
type: string
description: 0 deactivates
- id: get_active_profile
label: Get Active Profile
kind: query
command: "GetActiveProfile {group}"
params:
- name: group
type: string
- id: enum_profiles
label: Enumerate Profiles
kind: query
command: "EnumProfiles {group}"
params:
- name: group
type: string
# 5.7 Options
- id: enum_setting_pages
label: Enumerate Setting Pages
kind: query
command: "EnumSettingPages"
params: []
- id: enum_config_pages
label: Enumerate Configuration Pages
kind: query
command: "EnumConfigPages"
params: []
- id: enum_options
label: Enumerate Options
kind: query
command: "EnumOptions {pageId}"
params:
- name: pageId
type: string
description: Settings page id, config page id, or detailed path e.g. temporary\hdrSettings
- id: query_option
label: Query Option
kind: query
command: "QueryOption {optionId}"
params:
- name: optionId
type: string
description: Option id or detailed path
- id: change_option
label: Change Option
kind: action
command: "ChangeOption {optionIdPath} {value}"
params:
- name: optionIdPath
type: string
- name: value
type: string
description: Quoted string value, integer, YES, or NO
- id: inherit_option
label: Inherit Option
kind: action
command: "InheritOption {optionIdPath}"
params:
- name: optionIdPath
type: string
description: Must be a detailed profile ID path
- id: reset_temporary
label: Reset Temporary Settings
kind: action
command: "ResetTemporary"
params: []
# 5.8 3DLUT Files
- id: enum_3dlut_files
label: Enumerate 3DLUT Files
kind: query
command: "Enum3DLUTFiles"
params: []
- id: rename_3dlut_file
label: Rename 3DLUT File
kind: action
command: "Rename3DLUTFile {oldName.3dlut} {newName.3dlut}"
params:
- name: oldName.3dlut
type: string
- name: newName.3dlut
type: string
- id: delete_3dlut_file
label: Delete 3DLUT File
kind: action
command: "Delete3DLUTFile {fileName.3dlut}"
params:
- name: fileName.3dlut
type: string
- id: download_3dlut_file
label: Download 3DLUT File
kind: action
command: "Download3DLUTFile {fileName.3dlut}"
params:
- name: fileName.3dlut
type: string
description: Reply precedes file with: Download3DLUTFile {base64size} {crcInHex} {fileName.3dlut}
- id: upload_3dlut_file
label: Upload 3DLUT File
kind: action
command: "Upload3DLUTFile {base64size} {crcInHex} {fileName.3dlut}"
params:
- name: base64size
type: integer
- name: crcInHex
type: string
- name: fileName.3dlut
type: string
description: Follow command with base64-encoded file body
# 5.9 Demo
- id: toggle_option
label: Toggle Option
kind: action
command: "Toggle {option}"
params:
- name: option
type: string
description: ToneMap | HighlightRecovery | ContrastRecovery | ShadowRecovery | 3DLUT | ScreenBoundaries | Histogram | DebugOSD
- id: tone_map_on
label: Tone Map On
kind: action
command: "ToneMapOn"
params: []
- id: tone_map_off
label: Tone Map Off
kind: action
command: "ToneMapOff"
params: []
# 5.10 Settings Management
- id: download_settings_file
label: Download Settings File
kind: action
command: "DownloadSettingsFile"
params: []
- id: upload_settings_file
label: Upload Settings File
kind: action
command: "UploadSettingsFile {base64size} {crcInHex}"
params:
- name: base64size
type: integer
- name: crcInHex
type: string
description: Follow with base64-encoded file body
- id: store_settings
label: Store Settings
kind: action
command: "StoreSettings {target} {storageName} {password}"
params:
- name: target
type: string
description: Installer | Suggested | slotIndex (1..16)
- name: storageName
type: string
description: Quoted storage name
- name: password
type: string
description: Optional quoted service password (required to overwrite Installer / Suggested)
- id: restore_settings
label: Restore Settings
kind: action
command: "RestoreSettings {target}"
params:
- name: target
type: string
description: Installer | Suggested | slotIndex (1..16)
# 5.11 EDID Management
- id: download_edid_file
label: Download EDID File
kind: action
command: "DownloadEDIDFile {target}"
params:
- name: target
type: string
description: Current (or omit) for display EDID, or slotIndex
- id: upload_edid_file
label: Upload EDID File
kind: action
command: "UploadEDIDFile {slotIndex} {base64size} {crcInHex} {storageName}"
params:
- name: slotIndex
type: integer
- name: base64size
type: integer
- name: crcInHex
type: string
- name: storageName
type: string
# 5.12 Other
- id: refresh_license_info
label: Refresh License Info
kind: action
command: "RefreshLicenseInfo"
params: []
- id: force_1080p60_output
label: Force 1080p60 Output
kind: action
command: "Force1080p60Output"
params: []
- id: hotplug
label: HDMI Hotplug
kind: action
command: "Hotplug"
params: []
- id: bye
label: Close Connection
kind: action
command: "Bye"
params: []
# 2 Connection / Heartbeat
- id: heartbeat
label: Heartbeat
kind: action
command: "Heartbeat"
params: []
notes: Send every 20s; server replies "OK" and closes after 60s of silence.
Feedbacks
# 5.4 Information replies
- id: mac_address
type: string
description: Reply to GetMacAddress, e.g. "01-02-03-04-05-06"
- id: temperatures
type: string
description: Reply to GetTemperatures. Format: Temperatures {gpu} {hdmiInput} "{cpu}" "{mainboard}" {unknownFuture}
# 5.5 Profile Group enumeration
- id: profile_group
type: string
description: One line per group: ProfileGroup {profileGroupId} "{profileGroupName}"
# 5.6 Profile enumeration / active
- id: profile
type: string
description: One line per profile: Profile {fullProfileId} "{profileName}"
- id: active_profile
type: string
description: Reply to GetActiveProfile: ActiveProfile {requestedProfileGroup} {activeProfileIndex}
# 5.7 Option enumeration / query
- id: setting_page
type: string
description: SettingPage {profileGroupId} "{profileName}"
- id: config_page
type: string
description: ConfigPage {profileGroupId} "{profileName}"
- id: option
type: string
description: Option {optionType} {optionId} {currentValue} {effectiveValue}; optionType is STRING or INTEGER
# 5.8 3DLUT enumeration / transfer
- id: three_dlut_file
type: string
description: One line per file: 3DLUTFile "{fileName.3dlut}"
- id: three_dlut_download_header
type: string
description: Preamble before base64 body: Download3DLUTFile {base64size} {crcInHex} "{fileName.3dlut}"
# 2 Welcome / Heartbeat / generic
- id: welcome
type: string
description: Initial banner sent on connect, e.g. "WELCOME to Envy v1.0.1.0"
- id: ok
type: string
description: Generic acknowledgement "OK"
- id: error
type: string
description: Generic error: ERROR "{description}"
Variables
- id: aspect_ratio
type: string
description: AspectRatio {pixelAR} {floatAR} {nearestWellKnownAR} "{description}" (well-known ratios: 119,133,137,143,166,175,178,185,190,200,210,220,235,239,240,255,266,276)
- id: masking_ratio
type: string
description: MaskingRatio {pixelAR} {floatAR} {nearestWellKnownAR}
- id: incoming_signal_info
type: string
description: IncomingSignalInfo {resolution} {refresh} {2D|3D} {RGB|444|422|420} {8|10|12bit} {SDR|HDR10|HLG} {601|PAL|709|DCI|2020} {TV|PC} {16:9|4:3}
- id: outgoing_signal_info
type: string
description: OutgoingSignalInfo {resolution} {refresh} {2D|3D} {RGB|444|422|420} {8|10|12bit} {SDR|HDR10|HLG} {601|PAL|709|DCI|2020} {TV|PC}
Events
# Section 6 notifications. All unsolicited, pushed to all connected clients.
- id: power_state
type: enum
values: [power_off, standby, restart, reload_software]
description: "PowerOff / Standby / Restart / ReloadSoftware"
- id: menu_state
type: enum
values: [open, close]
description: "OpenMenu {menu} / CloseMenu"
- id: key_event
type: enum
values: [press, hold]
description: "KeyPress|KeyHold {ButtonName}"
- id: aspect_ratio_change
type: string
description: "AspectRatio / MaskingRatio / SetAspectRatioMode"
- id: profile_group_change
type: string
description: "CreateProfileGroup / RenameProfileGroup / DeleteProfileGroup"
- id: profile_change
type: string
description: "CreateProfile / RenameProfile / DeleteProfile / AddProfileToPage / RemoveProfileFromPage / ActivateProfile"
- id: option_change
type: string
description: "ChangeOption / InheritOption / ResetTemporary"
- id: three_dlut_change
type: string
description: "Upload3DLUTFile / Rename3DLUTFile / Delete3DLUTFile"
- id: demo_change
type: string
description: "Toggle / ToneMapOn / ToneMapOff"
- id: settings_change
type: string
description: "UploadSettingsFile / StoreSettings / RestoreSettings"
- id: signal_change
type: string
description: "NoSignal / IncomingSignalInfo / OutgoingSignalInfo / DisplayChanged"
- id: misc_event
type: string
description: "RefreshLicenseInfo / Force1080p60Output / Hotplug / FirmwareUpdate / MissingHeartbeat"
Macros
# UNRESOLVED: source contains no explicit multi-step sequences.
Safety
confirmation_required_for:
- delete_3dlut_file # source: "no undelete available"
- store_settings # source: Installer/Suggested overwrites require service password
interlocks: []
# UNRESOLVED: no other safety warnings, interlock procedures, or power-on sequencing requirements stated in source.
Notes
- Envy supports up to 16 concurrent TCP connections on port 44077.
- Lines are CR/LF terminated (0x0D, 0x0A or 0x0D 0x0A); parameters are space-separated; quoted strings support embedded spaces.
- Replies are either "OK" or
ERROR "description". - Heartbeat must be sent every 20s; server closes the connection after 60s of silence (also pushes a
MissingHeartbeatnotification first). - Welcome banner is sent on connect, no reply required.
- 3DLUT and settings file transfers use base64 body with a
{base64size} {crcInHex}header; CRC32 is initialised with -1 on the receiver side. - Replies and notifications can arrive out of expected order — clients must not depend on strict ordering.
Byecleanly closes the TCP connection from the client side.- A "Windows-only Envy IP Control Tool with Delphi source" is mentioned at http://madVR.com/EnvyIpControl.zip — not part of the wire protocol.
Provenance
source_domains:
- madvrenvy.com
source_urls:
- https://madvrenvy.com/wp-content/uploads/EnvyIpControl.pdf
retrieved_at: 2026-04-30T04:34:22.833Z
last_checked_at: 2026-06-02T17:23:22.104Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T17:23:22.104Z
matched_actions: 58
action_count: 58
confidence: medium
summary: "All 58 spec actions matched literally in source with correct opcodes, parameter shapes, and transport (TCP/44077/no-auth). (4 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "firmware version compatibility not stated in source"
- "source contains no explicit multi-step sequences."
- "no other safety warnings, interlock procedures, or power-on sequencing requirements stated in source."
- "firmware version compatibility range, voltage/current draw, MAC-address slot count, and 3DLUT byte-length validation rules not stated in source."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0