Summary
This spec covers the RS-232 and IP control protocol for Lexicon RV-6, RV-9, and MC-10 AV receivers. Commands and responses use a framed binary protocol (0x21 start, 0x0D end, with command code, zone, data length, and answer-code byte) at 38,400 baud over RS-232 null-modem, or over TCP port 50000. The protocol supports power, source selection, volume, decode modes, tuner (FM/DAB), network playback, and audio/video status queries.
Transport
protocols:
- serial
- tcp
serial:
baud_rate: 38400
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
addressing:
port: 50000
auth:
type: none # inferred: no auth procedure in source
Connection notes from source:
- RS-232 cable wired as null modem: pin 2↔3 (Rx/Tx crossed), pin 5↔5 (ground). No other pins used.
- IP control is via port 50000 on the unit's IP address. RS-232 and IP must be enabled via front panel (hold DIRECT 4s) or OSD setup menu; Control is disabled by default for standby power.
Traits
# - powerable (power on/off via standby / RC5 16-12; source covers 0x00 power request and RC5 Power On/Off codes)
# - routable (video input selection 0x0A, source list 0x1D, HDMI output switching 0x4F)
# - queryable (volume, mute, decode mode, source, brightness, RDS, DAB, network status all queryable)
# - levelable (volume 0x0D, treble/bass 0x35/0x36, balance 0x3B, subwoofer trim 0x3F/0x45, lipsync 0x40)
Actions
- id: restore_factory_default_settings_0x05
label: "Restore factory default settings (0x05)"
kind: action
command: "0x21 0x01 0x05 0x02 0xAA 0xAA 0x0D"
params: []
- id: save_restore_secure_copy_of_settings_0x06
label: "Save/Restore secure copy of settings (0x06)"
kind: action
command: "0x21 0x01 0x06 0x07 0x01 0x55 0x55 0x01 0x02 0x03 0x040x0D"
params: []
- id: simulate_rc5_ir_command_0x08
label: "Simulate RC5 IR Command (0x08)"
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x11 0x0D"
params: []
- id: display_information_type_0x09
label: "Display Information Type (0x09)"
kind: action
command: "0x21 0x02 0x09 0x01 0x01 0x0D"
params: []
- id: headphone_over_ride_0x1_f
label: "Headphone Over-ride (0x1F)"
kind: action
command: "0x21 0x01 0x1F 0x01 0x01 0x0D"
params: []
- id: video_selection_0x0_a
label: "Video selection (0x0A)"
kind: action
command: "0x21 0x01 0x0A 0x01 0x03 0x0D"
params: []
- id: select_analogue_digital_0x0_b
label: "Select analogue/digital (0x0B)"
kind: action
command: "0x21 0x01 0x0B 0x01 0x01 0x0D"
params: []
- id: tune_0x16
label: "Tune (0x16)"
kind: action
command: "0x21 0x01 0x16 0x01 0x01 0x0D"
params: []
- id: imax_enhanced_0x0_c
label: "IMAX Enhanced (0x0C)"
kind: action
command: "0x21 0x01 0x0C 0x01 0xF1 0x0D"
params: []
- id: treble_equalisation_0x35
label: "Treble Equalisation (0x35)"
kind: action
command: "0x21 0x01 0x35 0x01 0x82 0x0D"
params: []
- id: bass_equalisation_0x36
label: "Bass Equalisation (0x36)"
kind: action
command: "0x21 0x01 0x36 0x01 0xF1 0x0D"
params: []
- id: room_equalisation_0x37
label: "Room Equalisation (0x37)"
kind: action
command: "0x21 0x01 0x37 0x01 0xF1 0x0D"
params: []
- id: dolby_volume_0x38
label: "Dolby Volume (0x38)"
kind: action
command: "0x21 0x01 0x38 0x01 0x01 0x0D"
params: []
- id: dolby_leveller_0x39
label: "Dolby Leveller (0x39)"
kind: action
command: "0x21 0x01 0x39 0x01 0x05 0x0D"
params: []
- id: dolby_volume_calibration_offset_0x3_a
label: "Dolby Volume Calibration Offset (0x3A)"
kind: action
command: "0x21 0x01 0x3A 0x01 0x85 0x0D"
params: []
- id: balance_0x3_b
label: "Balance (0x3B)"
kind: action
command: "0x21 0x01 0x3B 0x01 0x83 0x0D"
params: []
- id: subwoofer_trim_0x3_f
label: "Subwoofer Trim (0x3F)"
kind: action
command: "0x21 0x01 0x3F 0x01 0x85 0x0D"
params: []
- id: lipsync_delay_0x40
label: "Lipsync Delay (0x40)"
kind: action
command: "0x21 0x01 0x40 0x01 0x0A 0x0D"
params: []
- id: compression_0x41
label: "Compression (0x41)"
kind: action
command: "0x21 0x01 0x41 0x01 0x01 0x0D"
params: []
- id: fm_scan_up_down_0x23
label: "FM Scan up/down (0x23)"
kind: action
command: "0x21 0x01 0x23 0x01 0x01 0x0D"
params: []
- id: heartbeat_0x25
label: "Heartbeat (0x25)"
kind: action
command: "0x21 0x01 0x25 0x01 0xF0 0x0D"
params: []
- id: reboot_0x26
label: "Reboot (0x26)"
kind: action
command: "0x21 0x01 0x26 0x06 0x52 0x45 0x42 0x4F 0x4F 0x54 0x0D"
params: []
Feedbacks
- id: power_0x00
label: "Power (0x00)"
kind: query
query_command: "0x21 0x01 0x00 0x01 0xF0 0x0D"
- id: display_brightness_0x01
label: "Display Brightness (0x01)"
kind: query
query_command: "0x21 0x01 0x01 0x01 0xF0 0x0D"
- id: headphones_0x02
label: "Headphones (0x02)"
kind: query
query_command: "0x21 0x01 0x02 0x01 0xF0 0x0D"
- id: fm_genre_0x03
label: "FM genre (0x03)"
kind: query
query_command: "0x21 0x01 0x03 0x01 0xF0 0x0D"
- id: software_version_0x04
label: "Software version (0x04)"
kind: query
query_command: "0x21 0x01 0x04 0x01 0xF0 0x0D"
- id: request_current_source_0x1_d
label: "Request current source (0x1D)"
kind: query
query_command: "0x21 0x01 0x1D 0x01 0xF0 0x0D"
- id: set_request_volume_0x0_d
label: "Set/Request Volume (0x0D)"
kind: query
query_command: "0x21 0x01 0x0D 0x01 0x2D 0x0D"
- id: request_mute_status_0x0_e
label: "Request Mute status (0x0E)"
kind: query
query_command: "0x21 0x01 0x0E 0x01 0xF0 0x0D"
- id: request_direct_mode_status_0x0_f
label: "Request direct mode status (0x0F)"
kind: query
query_command: "0x21 0x01 0x0F 0x01 0xF0 0x0D"
- id: request_decode_mode_status_-_2ch_0x10
label: "Request decode mode status - 2ch (0x10)"
kind: query
query_command: "0x21 0x01 0x10 0x01 0xF0 0x0D"
- id: request_decode_mode_status_-_mch_0x11
label: "Request Decode mode status - MCH (0x11)"
kind: query
query_command: "0x21 0x01 0x11 0x01 0xF0 0x0D"
- id: request_rds_information_0x12
label: "Request RDS information (0x12)"
kind: query
query_command: "0x21 0x01 0x12 0x01 0xF0 0x0D"
- id: request_video_output_resolution_0x13
label: "Request Video Output Resolution (0x13)"
kind: query
query_command: "0x21 0x01 0x13 0x01 0xF0 0x0D"
- id: request_menu_status_0x14
label: "Request menu status (0x14)"
kind: query
query_command: "0x21 0x01 0x14 0x01 0xF0 0x0D"
- id: request_tuner_preset_0x15
label: "Request tuner preset (0x15)"
kind: query
query_command: "0x21 0x01 0x15 0x01 0xF0 0x0D"
- id: request_dab_station_0x18
label: "Request DAB station (0x18)"
kind: query
query_command: "0x21 0x01 0x18 0x01 0xF0 0x0D"
- id: prog_type_category_0x19
label: "Prog. Type/Category (0x19)"
kind: query
query_command: "0x21 0x01 0x19 0x01 0xF0 0x0D"
- id: dls_pdt_info_0x1_a
label: "DLS/PDT info. (0x1A)"
kind: query
query_command: "0x21 0x01 0x1A 0xF0 0x0D"
- id: request_preset_details_0x1_b
label: "Request preset details (0x1B)"
kind: query
query_command: "0x21 0x01 0x1B 0x01 0x01 0x0D"
- id: network_playback_status_0x1_c
label: "Network playback status (0x1C)"
kind: query
query_command: "0x21 0x01 0x1C 0x01 0xF0 0x0D"
- id: request_incoming_video_parameters_0x42
label: "Request incoming video parameters (0x42)"
kind: query
query_command: "0x21 0x01 0x42 0x01 0xF0 0x0D"
- id: request_incoming_audio_format_0x43
label: "Request incoming audio format (0x43)"
kind: query
query_command: "0x21 0x01 0x43 0x01 0xF0 0x0D"
- id: request_incoming_audio_sample_rate_0x44
label: "Request incoming audio sample rate (0x44)"
kind: query
query_command: "0x21 0x01 0x44 0x01 0xF0 0x0D"
- id: set_request_sub_stereo_trim_0x45
label: "Set/Request Sub Stereo Trim (0x45)"
kind: query
query_command: "0x21 0x01 0x45 0x01 0x83 0x0D"
- id: set_request_zone_1_osd_on_off_0x4_e
label: "Set/Request Zone 1 OSD on/off (0x4E)"
kind: query
query_command: "0x21 0x01 0x4A 0x01 0xF2 0x0D"
- id: set_request_video_output_switching_0x4_f
label: "Set/Request Video Output Switching (0x4F)"
kind: query
query_command: "0x21 0x01 0x4F 0x01 0x02 0x0D"
- id: set_request_input_name_0x20
label: "Set/request input name (0x20)"
kind: query
query_command: "0x21 0x01 0x20 0x06 0x42 0x44 0x50 0x33 0x30 0x30 0x0D"
- id: dab_scan_0x24
label: "DAB Scan (0x24)"
kind: query
query_command: "0x21 0x01 0x24 0x01 0xF0 0x0D"
Variables
# UNRESOLVED: discrete settable parameters are represented as Actions (per-command) rather than as Variables in this protocol; remove section if not applicable.
Events
# Source describes unsolicited state-change messages triggered by front-panel / IR input. These use the same framing as responses with Ac=0x00. Specific event types per action: power state, display brightness, decode mode, source, headphone connect. Full event catalogue not separately enumerated.
Macros
# UNRESOLVED: no multi-step sequences described in source.
Safety
confirmation_required_for:
- restore_factory_default_settings_0x05 # requires 0xAA 0xAA confirmation pattern
- save_restore_secure_copy_of_settings_0x06 # requires 0x55 0x55 + 4-digit PIN
- reboot_0x26 # requires "REBOOT" (0x52 0x45 0x42 0x4F 0x4F 0x54) magic string
interlocks: []
# UNRESOLVED: no additional safety interlocks documented.
Notes
Framing. Every command and response shares the format St Zn Cc [Ac] Dl Data… Et, where St=0x21, Et=0x0D, Ac only appears in responses. Data length byte counts only the data items, excluding ETR. Data payload is limited to 255 bytes per response.
Answer codes (Ac byte in responses):
0x00— Status update (success)0x82— Zone invalid0x83— Command not recognised0x84— Parameter not recognised0x85— Command invalid at this time (e.g. Setup Menu open, wrong input selected)0x86— Invalid data length
Zones. Two zones defined: 0x01 (Zone 1, master) and 0x02 (Zone 2). Zone-less commands refer to Zone 1.
Reserved codes. 0xF0–0xFF are reserved for test functions and must not be used.
Simulate RC5 IR Command (0x08). Any IR remote function can be triggered over RS-232/IP by sending the two-byte RC5 (system, command) pair. The RC5 code tables in §AV RC5 command codes cover both Basic Functions (remote-handled) and Advanced Functions (custom-install only). Zone-2 commands use system code 0x17; Zone-1 commands use system code 0x10.
AMX Duet / DDDP. Device responds to AMX\r with AMXB<Device-SDKClass=Receiver><Device-Make=Lexicon><Device-Model={RV-6|RV-9|MC-10}><Device-Revision=x.y.z>\r. Used by AMX NetLinx masters for auto-discovery.
Response timing. AV responds within 3 seconds. RC may send further commands before a previous response is received.
Per-command quirks.
0x05(factory default restore) and0x06(save/restore secure copy) require magic confirmation bytes to prevent accidental trigger.0x06also requires a 4-digit PIN (digits 0x01–0x04 of the data block).0x26(reboot) requires the ASCII stringREBOOT(0x52 0x45 0x42 0x4F 0x4F 0x54) as the data payload.0x25(heartbeat) also resets the EuP standby timer — must be sent periodically to keep the unit awake over IP.- Tuner commands (
0x16,0x18,0x19,0x1A,0x23,0x24) return0x85when the corresponding input (FM/DAB) is not currently selected on the requested zone. 0x1F(headphone override) toggles the speaker mute relays without zeroing the volume.
Two-channel audio config note. The source doc references an RC5 mapping for "Cycle between output resolutions" (16-47) but does not list the 0x4D resolution-cycle command in the binary opcode table — only 0x13 (request) is documented. Some RC5 functions may not have a corresponding direct binary opcode.
Family coverage caveat. The RV-5 / RV-8 legacy models were not included in the source document. Earlier product-line serial protocols (Lexicon RV-5 / RV-8 SerialDef rev3) used a different command set; this spec is not valid for those models. RV-6, RV-9, and MC-10 share the protocol described here.
Provenance
source_domains:
- lexicon.com
source_urls:
- https://www.lexicon.com/on/demandware.static/-/Sites-masterCatalog_Harman/default/dwd2bbdf85/pdfs/RS232_Protocol_Documentation.pdf
retrieved_at: 2026-06-25T09:53:04.025Z
last_checked_at: 2026-06-25T10:48:58.534Z
Verification Summary
verdict: verified
checked_at: 2026-06-25T10:48:58.534Z
matched_actions: 50
action_count: 50
confidence: medium
summary: "deterministic presence proof: 50/50 payloads verbatim in source; stratified Sonnet sample corroborated (5 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "original RV Series doc (RV-5 / RV-8) is referenced but not included; coverage inferred to be RS-232-only (no IP control documented for those models). Firmware version compatibility not stated."
- "discrete settable parameters are represented as Actions (per-command) rather than as Variables in this protocol; remove section if not applicable."
- "no multi-step sequences described in source."
- "no additional safety interlocks documented."
- "firmware version compatibility not stated; no published protocol revision number cited in source for these models."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0