Summary

1.9 GHz digital wireless microphone system with LAN control. Binary protocol over TCP (port 50003) for commands and UDP (port 50004) for level data streaming. Covers WX-SR204/SR202 receivers (with and without Dante) and WX-SZ600 charger. Challenge-response authentication required (MD5 or SHA-256).

Transport

protocols:
  - tcp
  - udp
addressing:
  port: 50003
serial: null
udp:
  port: 50004
  description: Destination port for radio wave level and audio level data from receiver
auth:
  type: challenge_response
  description: >-
    Challenge-response using device password. Receiver returns 8-byte random
    ASCII string in connection response. Client computes MD5(Password:Random)
    or SHA-256(Password:Random) and sends result in authentication request.
    WX-SR204 and WX-SR202DN/SR204DN support SHA-256.
  hash_algorithms:
    - MD5
    - SHA-256
max_simultaneous_connections: 2
keepalive:
  interval_seconds: 5
  method: Current data acquisition request (command 0x0021)

Protocol Details

byte_order: big_endian
frame_structure:
  description: Binary frame with header (20 bytes) + data section
  header:
    - name: Common identifier
      bytes: 4
      values:
        receiver: "0x53523200 (SR2+00)"
        charger: "0x535A3600 (SZ6+00)"
    - name: Header size
      bytes: 2
      value: "0x0014 (20, fixed)"
    - name: Transaction number
      bytes: 2
      description: "1-65535, increments per transaction. Delivery commands use 0."
    - name: Command identifier
      bytes: 2
    - name: Reserve
      bytes: 6
      value: "0x000000000000"
    - name: Command data length
      bytes: 4
  data_section:
    data_header:
      - name: Reserve
        bytes: 8
        value: "0x0000000000000000 (fixed)"
    data_body: varies per command

Traits

traits:
  - queryable
  - levelable
  - powerable

Actions

actions:
  - id: receiver_connect
    label: Connect to Receiver
    kind: action
    command: "0xE001"
    command_id: "0xE001"
    direction: control_terminal_to_receiver
    description: "Initiate TCP connection to receiver. Sends control terminal timestamp (14 bytes ASCII, e.g. 20171006090102). Command data length: 0x00000026 (38 bytes)."
    params:
      - name: current_time
        type: string
        description: "Current time in ASCII format YYYYMMDDHHmmSS (14 bytes)"

  - id: receiver_authenticate
    label: Authenticate to Receiver
    kind: action
    command: "0xF001"
    command_id: "0xF001"
    direction: control_terminal_to_receiver
    description: "Send authentication data derived from connection response random number and receiver password. Command data length: 0x00000038 (56 bytes) for MD5 or 0x00000058 (88 bytes) for SHA-256."
    params:
      - name: authentication_data
        type: bytes
        description: "MD5 (32 bytes) or SHA-256 (64 bytes) of 'Password:RandomNumber'"

  - id: current_data_request
    label: Request Current Data (Keepalive)
    kind: action
    command: "0x0021"
    command_id: "0x0021"
    direction: control_terminal_to_receiver
    description: "Request current operational data. Also serves as keepalive; must be sent every 5 seconds."
    params: []

  - id: level_data_distribution_start
    label: Start Level Data Distribution
    kind: action
    command: "0x0031"
    command_id: "0x0031"
    direction: control_terminal_to_receiver
    description: "Start/stop UDP delivery of radio wave and audio level data (~100ms interval)."
    params:
      - name: mode
        type: enum
        values:
          - start_delivery
          - stop_delivery
        description: "Identifier field: 0x0000 = start, 0x0001 = stop"
      - name: distribution_type
        type: enum
        values:
          - level_only
          - level_with_mic_status
        description: "Option parameter 1: 0x0000 = level data only (0x0032), 0x0001 = level + mic status (0x0172, requires firmware 6.00R00+)"

  - id: operation_mode_change
    label: Set Operation Mode
    kind: action
    command: "0x0140"
    command_id: "0x0140"
    direction: control_terminal_to_receiver
    description: "Switch between local (front panel) and remote (control terminal) volume control. Remote mode disables front panel volume. Command data length: 0x0000001A (26 bytes)."
    params:
      - name: mode
        type: enum
        values:
          - local
          - remote
        description: "0x0000 = Local mode, 0x0001 = Remote mode"

  - id: operation_mode_request
    label: Request Operation Mode
    kind: query
    command: "0x0141"
    command_id: "0x0141"
    direction: control_terminal_to_receiver
    description: "Query current operation mode. Returns operation mode response (0x0142)."
    params: []

  - id: volume_change
    label: Change Volume
    kind: action
    command: "0x0150"
    command_id: "0x0150"
    direction: control_terminal_to_receiver
    description: "Change volume for selected microphones. Requires remote mode. Supports absolute and relative values. Bit 7 of volume byte = mute. Command data length: 0x0000002A (42 bytes)."
    params:
      - name: setting_method
        type: enum
        values:
          - absolute
          - relative
        description: "0x0000 = absolute, 0x0001 = relative"
      - name: mic_selection
        type: integer
        description: "16-bit bitmask. Bit 0 = Mic1 ... Bit 15 = Mic16. 1 = apply change."
      - name: mic_volumes
        type: array
        items:
          type: integer
          min: 0
          max: 127
        description: "Per-mic volume. Bits 0-6: level 0x00-0x3F. Bit 7: mute (absolute) or direction (relative: 0=up, 1=down). 16 bytes (one per mic)."

  - id: volume_request
    label: Request Volume
    kind: query
    command: "0x0151"
    command_id: "0x0151"
    direction: control_terminal_to_receiver
    description: "Query current volume for all microphones. Returns volume response (0x0152)."
    params: []

  - id: mic_pairing
    label: Mic Pairing
    kind: action
    command: "0x0071"
    command_id: "0x0071"
    direction: bidirectional
    description: "Enter/exit microphone pairing mode for a specific channel."
    params:
      - name: pairing_mode
        type: enum
        values:
          - start
          - stop
        description: "0x0000 = start pairing, 0x0001 = stop pairing"
      - name: channel
        type: integer
        min: 0
        max: 15
        description: "Channel number. 0x0000 = Ch1 ... 0x000F = Ch16"

  - id: mic_talking_status_change
    label: Change Mic Talking Status
    kind: action
    command: "0x0081"
    command_id: "0x0081"
    direction: control_terminal_to_receiver
    description: "Start or stop microphone talking. Requires firmware 6.00R00+ on WX-SR204/SR202DN/SR204DN."
    params:
      - name: status
        type: enum
        values:
          - stop_talking
          - start_talking
        description: "0x0000 = stop talking, 0x0001 = start talking"
      - name: microphone
        type: integer
        min: 0
        max: 255
        description: "Registration number 0x00-0x63 (Mic 1-100). When stopping: 0xFFFF = all microphones."

  - id: charger_connect
    label: Connect to Charger
    kind: action
    command: "0x4011"
    command_id: "0x4011"
    direction: control_terminal_to_charger
    description: "Initiate TCP connection to WX-SZ600 charger."
    params: []

  - id: charger_authenticate
    label: Authenticate to Charger
    kind: action
    command: "0x4031"
    command_id: "0x4031"
    direction: control_terminal_to_charger
    description: "Authenticate to charger using SHA-256 hash of password and random number. Command data length: 0x00000058 (88 bytes)."
    params:
      - name: authentication_data
        type: bytes
        description: "64-byte SHA-256 hash of 'Password:RandomNumber'"

  - id: mic_charge_status_request
    label: Request Mic Charge Status
    kind: query
    command: "0x2071"
    command_id: "0x2071"
    direction: control_terminal_to_charger
    description: "Request charging status for all charge ports. Also serves as charger keepalive."
    params: []

  - id: charger_data_request
    label: Request Charger Data
    kind: query
    command: "0x2041"
    command_id: "0x2041"
    direction: control_terminal_to_charger
    description: "Request charger configuration data (unit name, version, IP settings, port)."
    params: []

Feedbacks

feedbacks:
  - id: connection_response
    command_id: "0xE002"
    direction: receiver_to_control_terminal
    description: "Connection result with random number data for authentication."
    fields:
      - name: notification_code
        type: enum
        values: [OK, NG]
        description: "0x00000000 = OK, else NG"
      - name: random_number_data
        type: string
        description: "8-byte ASCII random string for auth challenge generation"

  - id: authentication_response
    command_id: "0xF002"
    direction: receiver_to_control_terminal
    fields:
      - name: notification_code
        type: enum
        values: [OK, NG]

  - id: current_data_response
    command_id: "0x0022"
    direction: receiver_to_control_terminal
    description: "184-byte response containing full operational state for receiver and up to 16 microphones."
    fields:
      - name: notification_code
        type: enum
        values: [OK, NG]
      - name: receiver_state
        type: enum
        values: [power_off, connected, connection_error]
        description: "Per extended receiver slot"
      - name: operation_mode
        type: enum
        values: [local, remote]
      - name: antenna_states
        type: array
        description: "8 antenna states, each: power_off/connected/connection_error + PHS detected bit"
      - name: microphones
        type: array
        max_items: 16
        items:
          fields:
            - name: registration_number
              type: integer
              description: "0x00-0x63 (Mic 1-100), 0xFF = unused"
            - name: state
              type: enum
              values: [power_off, connected, connection_error]
            - name: battery_level
              type: enum
              values: [red_low, orange_mid, green_high]
            - name: radio_wave_level
              type: integer
              description: "0x00-0x3F, MSB = error flag"
            - name: audio_level
              type: integer
              description: "0x0000-0xFFFF"
            - name: connection_antenna
              type: integer
              description: "0x00-0x07 (antenna 1-8)"
            - name: volume
              type: integer
              description: "0x00-0x3F, MSB = mute state"
      - name: pairing_status
        type: enum
        values: [normal, during_pairing]
      - name: pairing_channel
        type: integer
        description: "0x00-0x0F (Ch1-16)"
      - name: sync_state
        type: enum
        values: [standalone, main_mode, sub_synced, sub_error]

  - id: level_data_distribution
    command_id: "0x0032"
    direction: receiver_to_control_terminal
    transport: udp
    transport_port: 50004
    description: "UDP delivery of radio wave and audio level for up to 16 microphones, ~100ms interval."
    fields:
      - name: mic_levels
        type: array
        max_items: 16
        items:
          fields:
            - name: radio_wave_level
              type: integer
              description: "0x00-0x3F, MSB = error flag"
            - name: audio_level
              type: integer
              description: "0x0000-0xFFFF"

  - id: level_data_with_mic_status
    command_id: "0x0172"
    direction: receiver_to_control_terminal
    transport: udp
    transport_port: 50004
    description: "Enhanced UDP level data with mic connection status and registration number. Requires firmware 6.00R00+."
    fields:
      - name: mic_levels
        type: array
        max_items: 16
        items:
          fields:
            - name: radio_wave_level
              type: integer
            - name: audio_level
              type: integer
            - name: status
              type: enum
              values: [power_off, connected, connection_error]
            - name: registration_number
              type: integer
              description: "0x00-0x63, 0xFF = unused"

  - id: operation_mode_response
    command_id: "0x0142"
    direction: receiver_to_control_terminal
    fields:
      - name: notification_code
        type: enum
        values: [OK, NG]
      - name: operation_mode
        type: enum
        values: [local, remote]

  - id: volume_response
    command_id: "0x0152"
    direction: receiver_to_control_terminal
    description: "Volume state for all 16 mic slots. 0xFF = mic not registered. In local mode, returns front panel volume."
    fields:
      - name: notification_code
        type: enum
        values: [OK, NG]
      - name: mic_volumes
        type: array
        max_items: 16
        items:
          fields:
            - name: volume
              type: integer
              description: "Bits 0-6: 0x00-0x3F volume. Bit 7: mute state. 0xFF = not registered."

  - id: mic_pairing_response
    command_id: "0x0072"
    direction: bidirectional
    fields:
      - name: pairing_mode
        type: enum
        values: [start, stop]
      - name: channel
        type: integer
      - name: notification_code
        type: enum
        values: [OK, NG]

  - id: charger_connection_response
    command_id: "0x4012"
    direction: charger_to_control_terminal
    fields:
      - name: boot_mode
        type: enum
        values: [normal, maintenance]
        description: "0x0000 = normal boot, 0x0001 = maintenance mode"
      - name: notification_code
        type: enum
        values: [OK, initial_password_not_set, NG]
        description: "0x00000000 = OK, 0xFFFFFFFF = initial password not set"
      - name: random_number_data
        type: string
        description: "8-byte ASCII random string for auth"

  - id: charger_auth_response
    command_id: "0x4032"
    direction: charger_to_control_terminal
    fields:
      - name: notification_code
        type: enum
        values: [OK, NG]

  - id: mic_charge_status_response
    command_id: "0x2072"
    direction: charger_to_control_terminal
    description: "Charging status for 4 charge ports including charger firmware version."
    fields:
      - name: charger_version
        type: string
        description: "ASCII version string, e.g. 1.00R000"
      - name: charge_ports
        type: array
        max_items: 4
        items:
          fields:
            - name: status
              type: enum
              values: [no_mic, charging, charging_complete, charging_abnormal]
            - name: elapsed_minutes
              type: integer
              min: 0
              max: 1440
              description: "0x0000-0x05A0 in minutes"
            - name: coil_state
              type: enum
              values: [laying_down, standing]
              description: "Only on ports 3 and 4"

  - id: charger_data_response
    command_id: "0x2042"
    direction: charger_to_control_terminal
    description: "Charger configuration data."
    fields:
      - name: notification_code
        type: enum
        values: [OK, NG]
      - name: unit_name
        type: string
        description: "UTF-8, max 10 characters"
      - name: version
        type: string
      - name: ip_address
        type: string
      - name: subnet_mask
        type: string
      - name: gateway
        type: string
      - name: port_number
        type: integer

Variables

variables:
  - id: operation_mode
    label: Operation Mode
    type: enum
    values: [local, remote]
    description: "Local = front panel volume control, Remote = control terminal volume control"
    read_command: "0x0141"
    write_command: "0x0140"

  - id: mic_volume
    label: Microphone Volume
    type: integer
    min: 0
    max: 63
    description: "Per-microphone volume level 0x00-0x3F. Supports absolute and relative adjustment. Bit 7 = mute."
    read_command: "0x0151"
    write_command: "0x0150"

  - id: mic_mute
    label: Microphone Mute
    type: boolean
    description: "Mute state per microphone. Encoded as bit 7 of volume byte."
    write_command: "0x0150"

Events

events:
  - id: level_data_udp
    description: "Unsolicited UDP delivery of radio wave and audio level data every ~100ms after start request."
    trigger: After level_data_distribution_start with type level_only
    transport: udp
    port: 50004
    command_id: "0x0032"

  - id: level_data_with_status_udp
    description: "Enhanced UDP level data including mic status and registration number."
    trigger: After level_data_distribution_start with type level_with_mic_status
    transport: udp
    port: 50004
    command_id: "0x0172"

Macros

macros:
  - id: connection_sequence
    label: Full Connection Sequence
    steps:
      - description: "TCP connect to receiver port 50003"
      - action: receiver_connect
        description: "Send connection request with timestamp"
      - description: "Receive connection response with random number"
      - action: receiver_authenticate
        description: "Compute MD5/SHA-256 of Password:RandomNumber and send"
      - description: "Receive authentication response"
      - description: "Begin keepalive loop - send current_data_request every 5 seconds"

Safety

confirmation_required_for: []
interlocks:
  - description: "Volume control requires remote mode (operation_mode_change 0x0001). In local mode, volume change commands return NG."
  - description: "Keepalive required every 5 seconds. Missing keepalive causes disconnection."
# UNRESOLVED: no explicit safety warnings or interlock procedures found in source

Notes

  • Binary protocol with big-endian byte order, 20-byte fixed header.
  • Receiver common identifier: 0x53523200 ("SR2\0"). Charger common identifier: 0x535A3600 ("SZ6\0").
  • Transaction numbers increment per request; delivery commands from receiver use 0.
  • Maximum 2 simultaneous TCP connections to a single device.
  • Level data with mic status (0x0172) and mic talking status change (0x0081) require firmware 6.00R00+ on WX-SR204/SR202DN/SR204DN.
  • Operation mode persists across power cycles.
  • Charger (WX-SZ600) authentication uses SHA-256 only; receiver supports MD5 and SHA-256.
  • Mic registration numbers are internal to the wireless receiver (0x00-0x63 = Mic 1-100).
  • Charger connection response includes boot mode notification (normal vs maintenance).
  • Charger connection response may return 0xFFFFFFFF if initial password not yet set.

Provenance

source_domains:
  - na.panasonic.com
  - applicationmarket.crestron.com
  - connect.na.panasonic.com
source_urls:
  - "https://na.panasonic.com/ns/303988_API_Panasonic_WX-SR200_Series_IF_Specification_VA.05-20221110.pdf?hsLang=en"
  - "https://applicationmarket.crestron.com/content/Help/Panasonic/Panasonic%20WX-SR202P%20v2.0%20Help.pdf"
  - https://connect.na.panasonic.com/av/audio/2-channel-wireless-mic-receiver
retrieved_at: 2026-05-04T06:33:17.959Z
last_checked_at: 2026-06-02T17:23:40.601Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T17:23:40.601Z
matched_actions: 14
action_count: 14
confidence: medium
summary: "All 14 spec action command IDs verified verbatim in source; all 12 feedback command IDs also present in source feedbacks; transport port 50003/50004, MD5/SHA-256, 2 connections, 5s keepalive all confirmed. (4 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "no explicit safety warnings or interlock procedures found in source"
- "firmware version compatibility ranges not stated"
- "error recovery / fault behavior sequences not documented"
- "charger coil state (ports 3-4) physical meaning not fully documented"

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