Summary

Parasound Halo C 2 and C 1 surround controllers with RS-232C serial control. Binary protocol at 9600 baud with fixed RS-Enable preamble required before every command. Covers power, volume, source selection, surround modes, tone/speaker trim, zone control, tape monitoring, setup menu navigation, and full status query with unsolicited feedback.

Transport

protocols:
  - serial
serial:
  baud_rate: 9600
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
  pinout:
    txd: 2
    rxd: 3
    gnd: 5
  cable: "DB9 straight-through (NOT null modem)"
auth:
  type: none  # inferred: no auth procedure in source

Traits

traits:
  - powerable    # inferred: power on/off/toggle commands
  - queryable    # inferred: full status report query + unsolicited feedback
  - levelable    # inferred: volume, bass, treble, trim controls
  - routable     # inferred: source selection commands

Preamble

preamble:
  description: "RS Enable command must precede every command (except full status query)"
  decimal: [224, 82, 83, 33]
  hex: [0xE0, 0x52, 0x53, 0x21]
  note: "No carriage returns required. No spaces/line feeds between bytes."

Actions

actions:
  # Power Control
  - id: power_off
    label: Power Off (Standby)
    kind: action
    params: []
    decimal: [34]
    hex: [0x22]

  - id: power_on
    label: Power On
    kind: action
    params: []
    decimal: [35]
    hex: [0x23]

  - id: power_toggle
    label: Power Toggle
    kind: action
    params: []
    decimal: [6]
    hex: [0x06]

  # Volume Control
  - id: volume_plus
    label: Volume Plus
    kind: action
    params: []
    decimal: [53]
    hex: [0x35]

  - id: volume_minus
    label: Volume Minus
    kind: action
    params: []
    decimal: [54]
    hex: [0x36]

  - id: mute_toggle
    label: Mute Toggle
    kind: action
    params: []
    decimal: [7]
    hex: [0x07]

  - id: mute_on
    label: Mute On
    kind: action
    params: []
    decimal: [32]
    hex: [0x20]

  - id: mute_off
    label: Mute Off
    kind: action
    params: []
    decimal: [33]
    hex: [0x21]

  # Source Selection
  - id: source_plus
    label: Source Plus
    kind: action
    params: []
    decimal: [8]
    hex: [0x08]

  - id: source_minus
    label: Source Minus
    kind: action
    params: []
    decimal: [9]
    hex: [0x09]

  - id: source_video_1
    label: Source Video 1
    kind: action
    params: []
    decimal: [13]
    hex: [0x0D]

  - id: source_video_2
    label: Source Video 2
    kind: action
    params: []
    decimal: [14]
    hex: [0x0E]

  - id: source_video_3
    label: Source Video 3
    kind: action
    params: []
    decimal: [15]
    hex: [0x0F]

  - id: source_video_4
    label: Source Video 4
    kind: action
    params: []
    decimal: [16]
    hex: [0x10]

  - id: source_video_5
    label: Source Video 5
    kind: action
    params: []
    decimal: [17]
    hex: [0x11]

  - id: source_video_6
    label: Source Video 6
    kind: action
    params: []
    decimal: [18]
    hex: [0x12]

  - id: source_audio_1
    label: Source Audio 1
    kind: action
    params: []
    decimal: [19]
    hex: [0x13]

  - id: source_audio_2
    label: Source Audio 2
    kind: action
    params: []
    decimal: [20]
    hex: [0x14]

  - id: source_audio_3
    label: Source Audio 3
    kind: action
    params: []
    decimal: [72]
    hex: [0x48]

  - id: source_audio_4
    label: Source Audio 4
    kind: action
    params: []
    decimal: [73]
    hex: [0x49]

  - id: source_analog_71
    label: Source Analog 7.1
    kind: action
    params: []
    decimal: [100]
    hex: [0x64]

  - id: source_analog_71_toggle
    label: Source Analog 7.1 Toggle
    kind: action
    params: []
    decimal: [136]
    hex: [0x88]

  - id: source_auto_search
    label: Active Source Auto Search
    kind: action
    params: []
    decimal: [144]
    hex: [0x90]

  # Surround Mode Selection
  - id: surround_minus
    label: Surround Mode Minus
    kind: action
    params: []
    decimal: [10]
    hex: [0x0A]

  - id: surround_plus
    label: Surround Mode Plus
    kind: action
    params: []
    decimal: [11]
    hex: [0x0B]

  - id: surround_mono
    label: Mono
    kind: action
    params: []
    decimal: [42]
    hex: [0x2A]

  - id: surround_stereo
    label: Stereo
    kind: action
    params: []
    decimal: [43]
    hex: [0x2B]

  - id: surround_prologic
    label: Prologic
    kind: action
    params: []
    decimal: [44]
    hex: [0x2C]

  - id: surround_natural
    label: Natural
    kind: action
    params: []
    decimal: [45]
    hex: [0x2D]

  - id: surround_party
    label: Party
    kind: action
    params: []
    decimal: [46]
    hex: [0x2E]

  - id: surround_club
    label: Club
    kind: action
    params: []
    decimal: [47]
    hex: [0x2F]

  - id: surround_concert
    label: Concert
    kind: action
    params: []
    decimal: [48]
    hex: [0x30]

  - id: surround_plii_movie
    label: Prologic II/IIx Movie
    kind: action
    params: []
    decimal: [160]
    hex: [0xA0]

  - id: surround_plii_music
    label: Prologic II/IIx Music
    kind: action
    params: []
    decimal: [161]
    hex: [0xA1]

  - id: surround_neo6_cinema
    label: DTS Neo6 Cinema
    kind: action
    params: []
    decimal: [162]
    hex: [0xA2]

  - id: surround_dtses_matrix
    label: DTS ES Matrix
    kind: action
    params: []
    decimal: [163]
    hex: [0xA3]

  - id: surround_direct
    label: Direct
    kind: action
    params: []
    decimal: [164]
    hex: [0xA4]

  - id: surround_neo6_music
    label: DTS Neo6 Music
    kind: action
    params: []
    decimal: [167]
    hex: [0xA7]

  - id: surround_dolby_ex
    label: Dolby EX
    kind: action
    params: []
    decimal: [168]
    hex: [0xA8]

  - id: surround_stereo_96
    label: Stereo 96
    kind: action
    params: []
    decimal: [169]
    hex: [0xA9]

  - id: late_night_on
    label: Late Night On (DYN)
    kind: action
    params: []
    decimal: [37]
    hex: [0x25]

  - id: late_night_off
    label: Late Night Off (DYN)
    kind: action
    params: []
    decimal: [38]
    hex: [0x26]

  - id: late_night_toggle
    label: Late Night Toggle (DYN)
    kind: action
    params: []
    decimal: [12]
    hex: [0x0C]

  - id: cinema_eq_toggle
    label: Cinema EQ Toggle
    kind: action
    params: []
    decimal: [99]
    hex: [0x63]

  - id: thx_toggle
    label: THX Toggle
    kind: action
    params: []
    decimal: [27]
    hex: [0x1B]

  # Tone and Speaker Trim
  - id: bass_plus
    label: Bass Plus
    kind: action
    params: []
    decimal: [68]
    hex: [0x44]

  - id: bass_minus
    label: Bass Minus
    kind: action
    params: []
    decimal: [69]
    hex: [0x45]

  - id: treble_plus
    label: Treble Plus
    kind: action
    params: []
    decimal: [70]
    hex: [0x46]

  - id: treble_minus
    label: Treble Minus
    kind: action
    params: []
    decimal: [71]
    hex: [0x47]

  - id: subwoofer_plus
    label: Subwoofer Plus
    kind: action
    params: []
    decimal: [97]
    hex: [0x61]

  - id: subwoofer_minus
    label: Subwoofer Minus
    kind: action
    params: []
    decimal: [98]
    hex: [0x62]

  - id: surround_trim_plus
    label: Surround Trim Plus
    kind: action
    params: []
    decimal: [131]
    hex: [0x83]

  - id: surround_trim_minus
    label: Surround Trim Minus
    kind: action
    params: []
    decimal: [132]
    hex: [0x84]

  - id: center_plus
    label: Center Trim Plus
    kind: action
    params: []
    decimal: [129]
    hex: [0x81]

  - id: center_minus
    label: Center Trim Minus
    kind: action
    params: []
    decimal: [130]
    hex: [0x82]

  - id: preset_1
    label: Preset 1
    kind: action
    params: []
    decimal: [124]
    hex: [0x7C]

  - id: preset_2
    label: Preset 2
    kind: action
    params: []
    decimal: [125]
    hex: [0x7D]

  - id: preset_3
    label: Preset 3
    kind: action
    params: []
    decimal: [126]
    hex: [0x7E]

  - id: preset_4
    label: Preset 4
    kind: action
    params: []
    decimal: [127]
    hex: [0x7F]

  - id: preset_5
    label: Preset 5
    kind: action
    params: []
    decimal: [128]
    hex: [0x80]

  - id: enhanced_bass_on
    label: Enhanced Bass On
    kind: action
    params: []
    decimal: [156]
    hex: [0x9C]

  - id: enhanced_bass_off
    label: Enhanced Bass Off
    kind: action
    params: []
    decimal: [157]
    hex: [0x9D]

  - id: enhanced_bass_toggle
    label: Enhanced Bass Toggle
    kind: action
    params: []
    decimal: [133]
    hex: [0x85]

  # Zone Control
  - id: zone_off
    label: Zone Off
    kind: action
    params: []
    decimal: [4]
    hex: [0x04]

  - id: zone_on
    label: Zone On
    kind: action
    params: []
    decimal: [5]
    hex: [0x05]

  - id: zone_toggle
    label: Zone On/Off Toggle
    kind: action
    params: []
    decimal: [134]
    hex: [0x86]

  - id: zone_volume_plus
    label: Zone Volume Plus
    kind: action
    params: []
    decimal: [139]
    hex: [0x8B]

  - id: zone_volume_minus
    label: Zone Volume Minus
    kind: action
    params: []
    decimal: [140]
    hex: [0x8C]

  - id: zone_mute_on
    label: Zone Mute On
    kind: action
    params: []
    decimal: [158]
    hex: [0x9E]

  - id: zone_mute_off
    label: Zone Mute Off
    kind: action
    params: []
    decimal: [159]
    hex: [0x9F]

  - id: zone_mute_toggle
    label: Zone Mute Toggle
    kind: action
    params: []
    decimal: [165]
    hex: [0xA5]

  - id: zone_source_minus
    label: Zone Source Minus
    kind: action
    params: []
    decimal: [135]
    hex: [0x87]

  - id: zone_source_plus
    label: Zone Source Plus
    kind: action
    params: []
    decimal: [141]
    hex: [0x8D]

  - id: zone_source_video_1
    label: Zone Source Video 1
    kind: action
    params: []
    decimal: [74]
    hex: [0x4A]

  - id: zone_source_video_2
    label: Zone Source Video 2
    kind: action
    params: []
    decimal: [75]
    hex: [0x4B]

  - id: zone_source_video_3
    label: Zone Source Video 3
    kind: action
    params: []
    decimal: [76]
    hex: [0x4C]

  - id: zone_source_video_4
    label: Zone Source Video 4
    kind: action
    params: []
    decimal: [77]
    hex: [0x4D]

  - id: zone_source_video_5
    label: Zone Source Video 5
    kind: action
    params: []
    decimal: [78]
    hex: [0x4E]

  - id: zone_source_video_6
    label: Zone Source Video 6
    kind: action
    params: []
    decimal: [79]
    hex: [0x4F]

  - id: zone_source_audio_1
    label: Zone Source Audio 1
    kind: action
    params: []
    decimal: [80]
    hex: [0x50]

  - id: zone_source_audio_2
    label: Zone Source Audio 2
    kind: action
    params: []
    decimal: [81]
    hex: [0x51]

  - id: zone_source_audio_3
    label: Zone Source Audio 3
    kind: action
    params: []
    decimal: [82]
    hex: [0x52]

  - id: zone_source_audio_4
    label: Zone Source Audio 4
    kind: action
    params: []
    decimal: [83]
    hex: [0x53]

  - id: zone_source_analog_71
    label: Zone Source Analog 7.1
    kind: action
    params: []
    decimal: [84]
    hex: [0x54]

  - id: zone_source_analog_71_toggle
    label: Zone Source Analog 7.1 Toggle
    kind: action
    params: []
    decimal: [137]
    hex: [0x89]

  # Tape Record Control
  - id: tape_sticky_toggle
    label: Tape Monitor Sticky Toggle
    kind: action
    params: []
    decimal: [26]
    hex: [0x1A]

  - id: tape_nonsticky_toggle
    label: Tape Monitor Non-Sticky Toggle
    kind: action
    params: []
    decimal: [31]
    hex: [0x1F]

  - id: tape_off
    label: Tape Monitor Off
    kind: action
    params: []
    decimal: [39]
    hex: [0x27]

  - id: tape_sticky_on
    label: Tape Monitor Sticky On
    kind: action
    params: []
    decimal: [40]
    hex: [0x28]

  - id: tape_nonsticky_on
    label: Tape Monitor Non-Sticky On
    kind: action
    params: []
    decimal: [41]
    hex: [0x29]

  # Setup Menu Control
  - id: setup_menu_toggle
    label: Setup Menu Toggle
    kind: action
    params: []
    decimal: [103]
    hex: [0x67]

  - id: cursor_up
    label: Cursor Up
    kind: action
    params: []
    decimal: [104]
    hex: [0x68]

  - id: cursor_down
    label: Cursor Down
    kind: action
    params: []
    decimal: [105]
    hex: [0x69]

  - id: cursor_left
    label: Cursor Left
    kind: action
    params: []
    decimal: [106]
    hex: [0x6A]

  - id: cursor_right
    label: Cursor Right
    kind: action
    params: []
    decimal: [107]
    hex: [0x6B]

  - id: cursor_select
    label: Select
    kind: action
    params: []
    decimal: [108]
    hex: [0x6C]

  - id: cursor_exit
    label: Exit Without Save (ESC)
    kind: action
    params: []
    decimal: [109]
    hex: [0x6D]

  - id: cursor_step_down
    label: Cursor Step Down
    kind: action
    params: []
    decimal: [114]
    hex: [0x72]

  - id: test_noise
    label: Test Noise (CAL)
    kind: action
    params: []
    decimal: [23]
    hex: [0x17]

  # Other
  - id: front_panel_lock_toggle
    label: Lock/Unlock Front Panel Toggle
    kind: action
    params: []
    decimal: [145]
    hex: [0x91]

  - id: show_status_onscreen
    label: Show Status On Screen
    kind: action
    params: []
    decimal: [122]
    hex: [0x7A]

  - id: ping
    label: Ping and Hello Response
    kind: action
    params: []
    decimal: [80]
    hex: [0x50]

  # Multi-byte Commands
  - id: set_main_volume
    label: Set Main Volume
    kind: action
    params:
      - name: level
        type: integer
        min: 10
        max: 106
        description: "10 = -90dB, 81 = -19dB, 100 = 0dB"
    decimal: [180]
    hex: [0xB4]
    multi_byte: true
    byte_2_decimal: "10-106"

  - id: set_zone_volume
    label: Set Zone Volume
    kind: action
    params:
      - name: level
        type: integer
        min: 10
        max: 100
        description: "10 = -90dB, 81 = -19dB, 100 = 0dB"
    decimal: [182]
    hex: [0xB6]
    multi_byte: true
    byte_2_decimal: "10-100"

  - id: set_plii_params
    label: Set PLII Parameters
    kind: action
    params:
      - name: panorama
        type: integer
        values: [0, 1]
        description: "0 = Off, 1 = On"
      - name: center_width
        type: integer
        min: 0
        max: 7
        description: "0 = Narrow, 7 = Wide"
      - name: dimension
        type: integer
        min: 0
        max: 6
        description: "0 = Front biased, 6 = Max surround"
    decimal: [184]
    hex: [0xB8]
    multi_byte: true

  - id: set_neo6_params
    label: Set Neo6 Parameters
    kind: action
    params:
      - name: center_image
        type: integer
        min: 0
        max: 5
        description: "0 = Narrow, 5 = Wide"
    decimal: [185]
    hex: [0xB9]
    multi_byte: true

  - id: show_zone_status
    label: Show Zone Status
    kind: action
    params: []
    decimal: [166]
    hex: [0xA6]

  # Full Status Query (no preamble needed)
  - id: request_full_status
    label: Request Full Status Report
    kind: query
    params: []
    decimal: [227]
    hex: [0xE3]
    note: "Do NOT send RS Enable preamble before this command"

Feedbacks

feedbacks:
  - id: main_volume
    label: Main Volume
    type: integer
    decimal_code: 225
    hex_code: 0xE1
    range: "10-106"
    mapping: "10 = -90dB, 81 = -19dB, 100 = 0dB"

  - id: mute_status
    label: Mute Status
    type: enum
    decimal_code: 226
    hex_code: 0xE2
    values:
      0: unmuted
      1: muted

  - id: current_source
    label: Current Source
    type: enum
    decimal_code: 227
    hex_code: 0xE3
    values:
      1: Video 1
      2: Video 2
      3: Video 3
      4: Video 4
      5: Video 5
      6: Video 6
      7: Audio 1
      8: Audio 2
      9: Audio 3
      10: Audio 4
      64: 7.1 Input

  - id: power_status
    label: Power Status
    type: enum
    decimal_code: 229
    hex_code: 0xE5
    values:
      0: standby
      1: on

  - id: zone_source
    label: Zone Source
    type: enum
    decimal_code: 230
    hex_code: 0xE6
    values:
      1: Video 1
      2: Video 2
      3: Video 3
      4: Video 4
      5: Video 5
      6: Video 6

  - id: zone_volume
    label: Zone Volume
    type: integer
    decimal_code: 232
    hex_code: 0xE8
    range: "10-100"
    mapping: "10 = -90dB, 81 = -19dB, 100 = 0dB"

  - id: zone_mute_status
    label: Zone Mute Status
    type: enum
    decimal_code: 233
    hex_code: 0xE9
    values:
      0: unmuted
      1: muted

  - id: dimmer_status
    label: Dimmer Status
    type: enum
    decimal_code: 234
    hex_code: 0xEA
    values:
      0: bright
      1: dimmed

  - id: surround_mode
    label: Surround Mode
    type: enum
    decimal_code: 236
    hex_code: 0xEC
    values:
      0: Direct
      1: Dolby Pro Logic
      2: Natural
      3: Club
      4: Concert
      6: Party
      7: Mono downmix
      9: Surround 6.1
      12: Stereo downmix
      13: Pro Logic II Movie
      14: Pro Logic II Music
      15: Dolby Digital EX
      16: Neo:6 Cinema
      17: Matrix / Neo:6
      20: Neo:6 Music
      21: Stereo 96
      23: Pro Logic IIx Music
      24: Pro Logic IIx Movie

  - id: audio_type
    label: Current Audio Type
    type: enum
    decimal_code: 237
    hex_code: 0xED
    values:
      2: Digital PCM
      3: Dolby Digital
      4: DTS
      6: Noise
      7: Analog
      8: Digital Error
      9: DTS-ES Matrix
      10: DTS-ES Discrete
      11: DTS 96/24
      12: DTS 96 Matrix
      13: DTS 96 Discrete

  - id: input_type
    label: Input Type
    type: bitmask
    decimal_code: 215
    hex_code: 0xD7
    description: "8-bit value encoding audio channel configuration and flags"

  - id: input_method
    label: Current Input Method
    type: enum
    decimal_code: 238
    hex_code: 0xEE
    values:
      0: Non-balanced Analog
      1: Coaxial
      2: Optical

  - id: late_night_status
    label: Late Night (DYN)
    type: enum
    decimal_code: 239
    hex_code: 0xEF
    values:
      0: compression off
      1: compression on

  - id: cinema_eq_status
    label: Cinema EQ
    type: enum
    decimal_code: 240
    hex_code: 0xF0
    values:
      0: off
      1: on

  - id: treble_trim
    label: Treble Trim
    type: integer
    decimal_code: 242
    hex_code: 0xF2
    range: "0-24"
    mapping: "0 = -12dB, 12 = 0dB, 24 = +12dB"

  - id: bass_trim
    label: Bass Trim
    type: integer
    decimal_code: 243
    hex_code: 0xF3
    range: "0-24"
    mapping: "0 = -12dB, 12 = 0dB, 24 = +12dB"

  - id: center_trim
    label: Center Trim
    type: integer
    decimal_code: 244
    hex_code: 0xF4
    range: "0-24"
    mapping: "0 = -12dB, 12 = 0dB, 24 = +12dB"

  - id: surround_trim
    label: Surround Trim
    type: integer
    decimal_code: 245
    hex_code: 0xF5
    range: "0-24"
    mapping: "0 = -12dB, 12 = 0dB, 24 = +12dB"

  - id: subwoofer_trim
    label: Subwoofer Trim
    type: integer
    decimal_code: 246
    hex_code: 0xF6
    range: "0-24"
    mapping: "0 = -12dB, 12 = 0dB, 24 = +12dB"

  - id: trigger_1_status
    label: Trigger 1 Status
    type: enum
    decimal_code: 247
    hex_code: 0xF7
    values:
      0: inactive
      1: active

  - id: trigger_2_status
    label: Trigger 2 Status
    type: enum
    decimal_code: 248
    hex_code: 0xF8
    values:
      0: inactive
      1: active

  - id: video_format
    label: Video Format
    type: enum
    decimal_code: 249
    hex_code: 0xF9
    values:
      0: unknown
      1: PAL
      2: NTSC

  - id: thx_status
    label: THX Status
    type: enum
    decimal_code: 250
    hex_code: 0xFA
    values:
      0: THX off
      1: THX Cinema
      2: THX Surround EX
      3: THX Ultra2
      4: THX Music
      5: THX Games

  - id: headphone_status
    label: Headphone Status
    type: enum
    decimal_code: 224
    hex_code: 0xE0
    values:
      0: not connected
      1: connected

  - id: plii_params
    label: PLII Parameters
    type: compound
    decimal_code: 216
    hex_code: 0xD8
    fields:
      panorama: { type: enum, values: { 0: Off, 1: On } }
      center_width: { type: integer, range: "0-7", description: "0 = Narrow, 7 = Wide" }
      dimension: { type: integer, range: "0-6", description: "0 = 3, 6 = -3" }

Events

events:
  description: "Unsolicited feedback sent out the RS-232 port whenever a parameter or function status changes. Format: <command_code> <data> <255> where 255 indicates end of transmission block."
  note: "All feedback entries in the Feedbacks section above are also sent as unsolicited events on state change."

Macros

macros:
  - id: universal_stereo
    label: Universal Stereo
    description: "Ensures surround mode goes to stereo regardless of input type"
    steps:
      - action: surround_direct
        decimal: [224, 82, 83, 33, 164]
      - action: surround_stereo
        decimal: [224, 82, 83, 33, 43]
    crestron_hex: "\\xE0\\x52\\x53\\x21\\xA4\\xE0\\x52\\x53\\x21\\x2B"

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings or interlock procedures found in source

Notes

  • Binary protocol — all commands are raw byte values, not ASCII strings.
  • RS Enable preamble (decimal 224 82 83 33 / hex E0 52 53 21) must precede every command except the full status query.
  • No carriage returns or line feeds between bytes.
  • Feedback format: <parameter_code> <data> <255> where 255 marks end of block.
  • Full status query (decimal 227) does NOT require RS Enable preamble. Response starts with byte 223 (start marker) followed by 255-separated data blocks.
  • Source also covers the Halo C 1 — identical command set.
  • Volume byte mapping: value 10 = -90dB through value 100 = 0dB (linear in the byte but non-linear in dB; value 81 = -19dB).
  • Surround mode feedback value space has gaps (e.g. 5, 8, 10, 11, 18, 19, 22 are undefined).

Provenance

source_domains:
  - cdn.shopify.com
source_urls:
  - "https://cdn.shopify.com/s/files/1/0763/0864/4159/files/C1_C2_RS232Codes.pdf?v=1719694110"
retrieved_at: 2026-05-21T16:56:39.590Z
last_checked_at: 2026-05-31T07:00:29.370Z

Verification Summary

verdict: verified
checked_at: 2026-05-31T07:00:29.370Z
matched_actions: 108
action_count: 108
confidence: medium
summary: "All 108 spec actions matched literal command codes from source; transport parameters verified; source command set fully represented. (5 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "no safety warnings or interlock procedures found in source"
- "firmware version compatibility not stated in source"
- "maximum command rate / minimum inter-command delay not stated"
- "error recovery or timeout behavior not documented"
- "no TCP/IP control documented — serial only"

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