Summary
The WX-SR200 series is a 1.9 GHz digital wireless microphone system. Receivers (WX-SR204 / WX-SR202 / WX-SR204DN / WX-SR202DN) and the WZ-SZ600 charger are controlled over 100Base-TX Ethernet using a custom binary TCP/UDP protocol. TCP port 50003 carries control commands; UDP port 50004 carries unsolicited radio-wave and audio-level data. Authentication uses MD5 (or SHA-256 on SR204/SR202DN/SR204DN and the charger) of the device password concatenated with a per-session nonce.
Transport
protocols:
- tcp
- udp
addressing:
port: 50003 # TCP control command waiting port (receiver and charger)
udp_port: 50004 # UDP destination for level data distribution (receiver -> control terminal)
serial: null # N/A: LAN protocol, not serial
auth:
type: digest # MD5 (or SHA-256 on SR204/SR202DN/SR204DN/charger) of "password:nonce"
hash_algorithms:
- md5
- sha-256 # SR204, SR202DN, SR204DN, and WZ-SZ600 only
nonce_source: 8-byte ASCII lowercase alphabetic, delivered in connection response
max_password_length: 32 # bytes (ASCII)
All frames use big-endian byte order. The header is fixed at 20 bytes:
Common identifier (4) | Header size (2, 0x0014) | Transaction number (2) | Command identifier (2) | Reserve (6) | Command data length (4).
The common identifier is 0x53523200 ("SR2\0") for receivers and
0x535A3600 ("SZ6\0") for the charger. The transaction number wraps
1-65535 for requests/updates; the responder echoes the same value. UDP
delivery commands use a fixed transaction number of 0.
Traits
# - queryable: current-data, volume, operation-mode, mic-charge-status,
# charger-data requests all return state
# - levelable: per-mic absolute / relative volume change + mute bit
Actions
# Each action is keyed by the 2-byte command identifier. The data section
# format per command is documented in the source. The header section
# (20 bytes) is prepended automatically per the frame layout.
# === Receiver (WX-SR200 series) ===
- id: connection_request
label: Connection Request
kind: action
command: "0xE001"
params:
- name: current_time
type: string
description: ASCII 14-byte timestamp "YYYYMMDDhhmmss" of the control terminal
- id: authentication_request
label: Authentication Request
kind: action
command: "0xF001"
params:
- name: auth_data
type: string
description: MD5 or SHA-256 hash of "password:nonce" (lowercase hex, 32 or 64 bytes)
- id: current_data_acquisition_request
label: Current Data Acquisition Request
kind: query
command: "0x0021"
params: []
- id: level_data_distribution_request
label: Level Data Distribution Request (start/stop)
kind: action
command: "0x0031"
params:
- name: identifier
type: enum
values: [start, stop]
description: 0x0000 = start, 0x0001 = stop
- name: distribution_type
type: enum
values: [level_only, level_and_mic_status]
description: 0x0000 = level only (5.7.2), 0x0001 = level + mic status (5.7.3, SR204/SR202DN/SR204DN v6.00R00+)
- id: operation_mode_change
label: Operation Mode Change
kind: action
command: "0x0140"
params:
- name: mode
type: enum
values: [local, remote]
description: 0x0000 = local (front-panel volume), 0x0001 = remote (terminal-controlled)
- id: operation_mode_request
label: Operation Mode Request
kind: query
command: "0x0141"
params: []
- id: volume_change
label: Volume Change
kind: action
command: "0x0150"
params:
- name: setting_method
type: enum
values: [absolute, relative]
description: 0x0000 = absolute, 0x0001 = relative
- name: mic_select_bitmap
type: integer
description: 16-bit bitmap, bit 0 = Mic1 ... bit 15 = Mic16. 1 = apply this command
- name: volume_per_mic
type: bytes
description: 16 bytes, one per mic. Bit 6:0 = 0x00-0x3F volume (abs) or +/- delta (rel). Bit 7 = mute (abs) or direction (rel: 0=up, 1=down)
notes: |
Requires operation mode = remote (0x0140 with 0x0001). If relative deltas
exceed 0x00-0x3F, clamp to min/max.
- id: volume_request
label: Volume Request
kind: query
command: "0x0151"
params: []
- id: mic_pairing_request
label: Mic Pairing Request
kind: action
command: "0x0071"
params:
- name: pairing_mode
type: enum
values: [start, stop]
description: 0x0000 = start pairing, 0x0001 = stop pairing
- name: pairing_channel
type: integer
description: Channel 1-16, encoded 0x0000-0x000F
- id: mic_talking_status_change
label: Mic Talking Status Change
kind: action
command: "0x0081"
params:
- name: talking
type: enum
values: [stop, start]
description: 0x0000 = stop, 0x0001 = start
- name: mic_id
type: integer
description: Microphone registration number 1-100 (encoded 0x0000-0x0063), or 0xFFFF for all mics (only with stop)
notes: |
Available on SR204 / SR202DN / SR204DN v6.00R00 or later.
# === Charger (WZ-SZ600) ===
- id: charger_connection_request
label: Charger Connection Request
kind: action
command: "0x4011"
params: []
- id: charger_authentication_request
label: Charger Authentication Request
kind: action
command: "0x4031"
params:
- name: auth_data
type: string
description: SHA-256 hash of "password:nonce" (lowercase hex, 64 bytes)
- id: mic_charge_status_request
label: Mic Charge Status Request
kind: query
command: "0x2071"
params: []
- id: charger_data_request
label: Charger Data Request
kind: query
command: "0x2041"
params: []
Feedbacks
- id: connection_response
command: "0xE002"
description: Receiver returns connection result + 8-byte ASCII nonce
fields:
notification_code: 0x00000000 = OK, other = NG
nonce: 8-byte ASCII lowercase alphabet
- id: authentication_response
command: "0xF002"
description: Authentication result
fields:
notification_code: 0x00000000 = OK, other = NG
- id: current_data
command: "0x0022"
description: 160-byte current data block (see source section 6)
fields:
data_version: 8 bytes
ext_receiver_1_state: enum (0x00=off, 0x01=connected, 0x0F=error)
ext_receiver_2_state: enum
ext_receiver_3_state: enum
operation_mode: enum (0x00=local, 0x01=remote)
antenna_1_to_8_state: 8 bytes (Bit 0-6 state, Bit 7 PHS detected)
mic_1_to_16_block: 16 x 8-byte block per mic
notes: |
Per-mic block = registration_number | state (off/connected/error) |
battery_level (red/orange/green) | radio_wave_level (0x00-0x3F, MSB=error)
| audio_level (0x0000-0xFFFF) | antenna_number (0x00-0x07) |
volume (0x00-0x3F, MSB=mute)
- id: operation_mode
command: "0x0142"
description: Current operation mode
fields:
mode: enum (0x0000=local, 0x0001=remote)
- id: volume_response
command: "0x0152"
description: Current per-mic volume
fields:
notification_code: 0x00000000 = OK
mic_1_to_16_volume: 16 bytes (Bit 0-6 = 0x00-0x3F, Bit 7 = mute). 0xFF = unregistered.
- id: mic_pairing_response
command: "0x0072"
description: Pairing mode + channel + result
fields:
pairing_mode: enum
pairing_channel: 0x0000-0x000F
notification_code: 0x00000000 = OK, other = NG
- id: charger_connection_response
command: "0x4012"
description: Charger connection result + nonce; flags initial-password-not-set
fields:
mode: 0x0000=normal boot, 0x0001=maintenance
notification_code: 0x00000000=OK, 0xFFFFFFFF=initial password not set, other=NG
nonce: 8-byte ASCII
- id: charger_authentication_response
command: "0x4032"
description: Charger authentication result
fields:
notification_code: 0x00000000 = OK, other = NG
- id: mic_charge_status
command: "0x2072"
description: 64-byte charge status for up to 4 ports
fields:
charger_version: 8-byte ASCII
port_1_to_4: 4 x (status, charge_elapsed_minutes, reserve1, reserve2 [, coil_state])
notes: |
Port status: 0x0000=no mic, 0x0001=charging, 0x0002=complete,
0x0003=abnormal. Charge elapsed: 0x0000-0x05A0 minutes. Coil state
(ports 3-4 only): 0x0000=laying down, 0x0001=standing.
- id: charger_data
command: "0x2042"
description: 64-byte charger config block
fields:
notification_code: 0x00000000 = OK, other = NG
data_version: 8 bytes
unit_name: 32 bytes UTF-8 (<=10 chars)
version_info: 8-byte ASCII
ip_address: 4 bytes
subnet_mask: 4 bytes
gateway: 4 bytes
port_number: 2 bytes
Variables
# Per-mic mutable parameters exposed as discrete actions/volume-change payloads.
# Variables not directly settable as discrete values are not modeled here.
Events
- id: level_data_distribution
command: "0x0032"
transport: udp
port: 50004
cadence: ~100 ms
description: |
Unsolicited radio-wave and audio level for up to 16 microphones.
52-byte payload: 16 x (radio_wave_level (1), audio_level (2))
+ 2 reserve bytes. Radio wave level 0x00-0x3F (MSB = error).
notes: |
Sent only after a level_data_distribution_request (0x0031) with
distribution_type = level_only (identifier 0x0000).
- id: level_data_and_mic_status_distribution
command: "0x0172"
transport: udp
port: 50004
cadence: ~100 ms
description: |
Unsolicited radio-wave, audio level AND mic connection status for up
to 16 microphones. 68-byte payload: 16 x (radio_wave_level (1),
audio_level (2), status (1), registration_number (1)) + 2 reserve.
Status 0x00=off, 0x01=connected, 0x0F=connection_error.
notes: |
Sent only after a level_data_distribution_request (0x0031) with
distribution_type = level_and_mic_status (identifier 0x0001).
Requires SR204 / SR202DN / SR204DN v6.00R00 or later.
Macros
# Recommended sequence to establish a control session (from source section 5):
# 1. TCP connect to port 50003
# 2. Send connection_request (0xE001) with current_time payload
# 3. Receive connection_response (0xE002), extract nonce
# 4. Send authentication_request (0xF001) with MD5/SHA-256 of "password:nonce"
# 5. Receive authentication_response (0xF002), check notification_code == OK
# 6. Send current_data_acquisition_request (0x0021) every <=5 s as keep-alive
# 7. Optionally send level_data_distribution_request (0x0031) to start UDP event stream
# 8. On exit, stop UDP stream and close TCP socket
session_handshake:
steps:
- connection_request
- connection_response
- authentication_request
- authentication_response
- current_data_acquisition_request # repeat <=5 s for keep-alive
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings, interlocks, or power-on sequencing
# requirements are documented in the source.
Notes
- Authentication is challenge-response: the device returns an 8-byte ASCII
nonce in the connection response; the client hashes
password:noncewith MD5 (or SHA-256 on supported models) and sends it back in the authentication request. The receiver returns NG with a specific notification code0xFFFFFFFFif the charger has no initial password set. - Volume changes (
0x0150) are rejected (NG) by the receiver when the current operation mode is local. Useoperation_mode_changeto switch to remote first. - The receiver delivers UDP level data at ~100 ms cadence. Stale keep-alive (no current_data_acquisition_request within 5 s) causes the device to drop the TCP connection.
- Up to 2 control terminals may be connected simultaneously.
- Source revision A.05 (2022-11-10); spec covers the WX-SR200 series plus WZ-SZ600 charger. Commands 0x0172 (level+mic status) and 0x0081 (mic talking status) require SR204 / SR202DN / SR204DN firmware v6.00R00+.
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-04-29T10:28:13.871Z
last_checked_at: 2026-06-02T22:13:00.308Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T22:13:00.308Z
matched_actions: 14
action_count: 14
confidence: medium
summary: "All 14 spec actions traced to source (dip-safe re-verify). (3 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "WX-SR202P specifically is not named in the source. The WX-SR200 series"
- "no safety warnings, interlocks, or power-on sequencing"
- "- WX-SR202P specifically is not named in this document; the WX-SR200"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0