Summary

Extron FOX3 fiber-optic extender family covering T (transmitter) and SR (scaling receiver) models 211, 321, 331. Control via RS-232 (rear panel), SSH over Ethernet (LAN), or SSH over USB (front panel, hard-coded IP 203.0.113.22 port 22023). The device speaks Extron's Simple Instruction Set (SIS) protocol over serial and SSH. Factory default IP is 192.168.254.254; Telnet port 23 is the default SSH listener.

Transport

protocols:
  - serial
  - tcp
serial:
  baud_rate: 9600
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
addressing:
  port: 23  # Telnet/SSH listener on LAN
auth:
  type: password
  username:
    - admin
    - user
  default_password_source: "device serial number; after full factory reset = 'extron'"

Notes on transport

  • Serial default: 9600 baud, no parity, 8 data bits, 1 stop bit, no flow control (stated on rear-panel RS-232 port).
  • LAN default SSH port: 23 (Telnet port map default; enable/disable via SIS).
  • USB config port: hard-coded IP 203.0.113.22, port 22023 (front panel mini-B USB).
  • Serial-configurable ranges (set via SIS E X1^*X1@,X1#,X1$,X1%): baud 300–115200, parity o/e/n/m/s, data bits 7/8, stop bits 1/2, flow control none.

Traits

- queryable   # inferred from Q/q, N/n, 19I/i, 35Q/q, E (DHCP), E (ECHO), E (CV), E (ZPMAP), E (RATE), E (ASPR), F, X, E (V4 WNDW), E (D4 WNDW), E (L4 WNDW), E (S4*1 TEXT), E (Zxxx), E (Amt) query forms
- routable    # UNRESOLVED: explicit input-routing commands for transmitter (T) input select not present in source excerpt
- levelable   # inferred from X2^ audio output volume commands

Actions

# Video mute
- id: mute_video_only
  label: Mute video only
  kind: action
  command: "1B"
  params: []

- id: mute_video_and_sync
  label: Mute video and sync
  kind: action
  command: "2B"
  params: []

- id: unmute_video_and_sync
  label: Unmute video and sync
  kind: action
  command: "0B"
  params: []

- id: view_mute_status
  label: View mute status
  kind: query
  command: "B"
  params: []

- id: verbose_mute_query
  label: Verbose mode 2/3 mute query
  kind: query
  command: "Vmt"
  params: []

# Audio mute (Digital / Analog / All)
- id: enable_audio_mute
  label: Enable audio mute on output
  kind: action
  command: "X@*1Z"
  params:
    - name: output
      type: integer
      description: "Audio output: 1=Digital (DisplayPort Out), 2=Analog (Analog Output), 3=All outputs"

- id: disable_audio_mute
  label: Disable audio mute on output
  kind: action
  command: "X@*0Z"
  params:
    - name: output
      type: integer
      description: "Audio output: 1=Digital, 2=Analog, 3=All"

- id: view_audio_mute_status
  label: View audio mute status
  kind: query
  command: "X3#Z"
  params:
    - name: audio_output
      type: integer
      description: "1=Digital, 2=Analog"

# Information requests
- id: view_firmware_version
  label: View firmware version
  kind: query
  command: "Q/q"
  params: []

- id: verbose_firmware_query
  label: Verbose firmware version query
  kind: query
  command: "Ver 01*"
  params: []

- id: view_full_firmware_version
  label: View full firmware version
  kind: query
  command: "*Q/q"
  params: []

- id: verbose_full_firmware_query
  label: Verbose full firmware version query
  kind: query
  command: "Bld "
  params: []

- id: view_part_number
  label: View part number
  kind: query
  command: "N/n"
  params: []

- id: verbose_part_number_query
  label: Verbose part number query
  kind: query
  command: "Pno "
  params: []

- id: view_extron_serial_number
  label: View Extron serial number
  kind: query
  command: "19I/i"
  params: []

- id: verbose_serial_number_query
  label: Verbose serial number query
  kind: query
  command: "Inf19*"
  params: []

- id: view_updated_fpga_version
  label: View updated FPGA version
  kind: query
  command: "35Q/q"
  params: []

- id: verbose_fpga_version_query
  label: Verbose FPGA version query
  kind: query
  command: "Ver 35*"
  params: []

- id: view_input_video_status
  label: View input video status
  kind: query
  command: "4S/s"
  params: []

- id: verbose_input_video_query
  label: Verbose input video status query
  kind: query
  command: "Sts04*"
  params: []

- id: view_input_audio_status
  label: View input audio status
  kind: query
  command: "5S/s"
  params: []

- id: verbose_input_audio_query
  label: Verbose input audio status query
  kind: query
  command: "Sts05*"
  params: []

- id: view_linklicense
  label: View LinkLicense
  kind: query
  command: "E"
  params: []

- id: information_request
  label: Information request (SFP links, signal, audio, device type, fiber mode)
  kind: query
  command: "I"
  params: []

- id: verbose_information_request
  label: Verbose information request
  kind: query
  command: "Inf00*"
  params: []

# DHCP client
- id: set_dhcp
  label: Set DHCP on or off
  kind: action
  command: "E X1)"
  params:
    - name: enable
      type: integer
      description: "0=Off (default), 1=On"

- id: view_dhcp_status
  label: View DHCP status
  kind: query
  command: "E DH }"
  params: []

# Telnet port
- id: set_telnet_port_map
  label: Set Telnet port map
  kind: action
  command: "E Z X3$"
  params:
    - name: enable
      type: integer
      description: "0=Off (default), 23=Telnet port 23 enabled"

- id: view_telnet_port_map
  label: View Telnet port map
  kind: query
  command: "E ZPMAP }"
  params: []

# Echo for SIS over SSH
- id: enable_echo
  label: Enable SSH echo
  kind: action
  command: "E 1ECHO }"
  params: []

- id: disable_echo
  label: Disable SSH echo
  kind: action
  command: "E 0ECHO }"
  params: []

- id: view_echo_status
  label: View echo status
  kind: query
  command: "E ECHO }"
  params: []

# Verbose mode
- id: set_verbose_mode
  label: Set verbose mode
  kind: action
  command: "E X1&"
  params:
    - name: mode
      type: integer
      description: "0=Clear/none (default for Ethernet), 1=Verbose (default for RS-232), 2=Tagged query response, 3=Verbose + tagged queries"

- id: view_verbose_mode
  label: View verbose mode
  kind: query
  command: "E CV }"
  params: []

# RS-232 COMM settings
- id: set_serial_port_params
  label: Set serial port parameters
  kind: action
  command: "E X1^*X1@,X1#,X1$,X1%"
  params:
    - name: uart
      type: integer
      description: "1=endpoint"
    - name: baud
      type: integer
      description: "300-115200 (9600 default)"
    - name: parity
      type: string
      description: "o/Odd, e/Even, n/None (default), m/Mark, s/Space (first letter sufficient)"
    - name: data_bits
      type: integer
      description: "7 or 8 (default)"
    - name: stop_bits
      type: integer
      description: "1 (default) or 2"

# Resets
- id: erase_all_files_from_flash
  label: Erase all files from flash memory
  kind: action
  command: "E ZFFF }"
  params: []

- id: reset_unit_settings
  label: Reset unit settings
  kind: action
  command: "E ZXXX }"
  params: []

- id: absolute_system_reset_retain_ip
  label: Absolute system reset (retain IP)
  kind: action
  command: "E ZY }"
  params: []

- id: absolute_system_reset
  label: Absolute system reset
  kind: action
  command: "E ZQQQ }"
  params: []

- id: ip_system_reset
  label: IP system reset
  kind: action
  command: "E 1ZQQQ }"
  params: []

- id: reset_audio_gain_attenuation
  label: Reset audio gain and attenuation
  kind: action
  command: "E ZA }"
  params: []

- id: reboot_device
  label: Reboot device
  kind: action
  command: "E 1BOOT }"
  params: []

- id: reboot_network
  label: Reboot network
  kind: action
  command: "E 2BOOT }"
  params: []

# Output scaler rate
- id: set_output_rate
  label: Set output rate
  kind: action
  command: "E X2$"
  params:
    - name: rate
      type: integer
      description: "3-digit scaler resolution code with 0 padding (see Resolution table; 199=scaler bypass, 201=custom/uploaded EDID)"

- id: view_output_rate
  label: View current output rate
  kind: query
  command: "E RATE }"
  params: []

# Output aspect ratio
- id: set_output_aspect_ratio
  label: Set output aspect ratio
  kind: action
  command: "E X2%"
  params:
    - name: ratio
      type: integer
      description: "1=Fill (default), 2=Follow"

- id: view_output_aspect_ratio
  label: View current output aspect ratio
  kind: query
  command: "E ASPR }"
  params: []

# Freeze
- id: set_freeze
  label: Set freeze
  kind: action
  command: "X3) F"
  params:
    - name: state
      type: integer
      description: "0=Off (default), 1=On"

- id: view_freeze_setting
  label: View current freeze setting
  kind: query
  command: "F"
  params: []

# Executive mode (front panel lockout)
- id: set_executive_mode
  label: Set executive mode (front panel lockout)
  kind: action
  command: "X3) X"
  params:
    - name: state
      type: integer
      description: "0=Off (default), 1=On"

- id: view_executive_mode
  label: View current executive mode setting
  kind: query
  command: "X"
  params: []

# OSD settings
- id: set_osd_enable
  label: Set OSD enable
  kind: action
  command: "E V4* X3) WNDW }"
  params:
    - name: state
      type: integer
      description: "0=Disable (default), 1=Enable"

- id: view_osd_enable
  label: View OSD enable
  kind: query
  command: "E V4 WNDW }"
  params: []

- id: set_osd_duration
  label: Set OSD duration
  kind: action
  command: "E D4* X1( WNDW }"
  params:
    - name: seconds
      type: integer
      description: "1-500 seconds (default 5), 501=always on"

- id: view_osd_duration
  label: View OSD duration
  kind: query
  command: "E D4 WNDW }"
  params: []

- id: set_osd_location
  label: Set OSD location
  kind: action
  command: "E L4* X2) WNDW }"
  params:
    - name: location
      type: integer
      description: "1=Top left (default), 2=Top right, 3=Top center, 4=Bottom left, 5=Bottom right, 6=Bottom center"

- id: view_osd_location
  label: View OSD location
  kind: query
  command: "E L4 WNDW }"
  params: []

- id: set_osd_font_size
  label: Set OSD font size
  kind: action
  command: "E S4*1* X2! TEXT }"
  params:
    - name: size
      type: string
      description: "24px, 36px (default), or 72px"

- id: view_osd_font_size
  label: View OSD font size
  kind: query
  command: "E S4*1 TEXT }"
  params: []

Feedbacks

- id: power_up_message
  type: string
  description: "Device-initiated message on serial port at startup. Format: `© Copyright 20yy, Extron FOX3 SR 321 (331 or 211) MM (SM), Vx.xx, 60-nnnn-nn Wed, 01 Jul 2025 18:05:26`"

- id: video_mute_state
  type: enum
  values: [unmuted, video_only_muted, video_and_sync_muted]

- id: audio_mute_state
  type: enum
  values: [unmuted, muted]

- id: input_video_signal_status
  type: enum
  values: [not_detected, detected]

- id: input_audio_status
  type: enum
  values: [not_detected, detected]

- id: input_audio_selection
  type: enum
  values: [digital, analog]

- id: device_type
  type: enum
  values: [TX, RX]

- id: fiber_link_a_state
  type: enum
  values: [not_detected, detected]

- id: fiber_link_b_state
  type: enum
  values: [not_detected, detected]

- id: fiber_optic_mode
  type: enum
  values: [SM, MM]

- id: dhcp_state
  type: enum
  values: [off, on]

- id: telnet_port_state
  type: integer
  description: "5-digit response with leading zeros, e.g. 00000 or 00023"

- id: echo_state
  type: enum
  values: [off, on]

- id: verbose_mode_state
  type: enum
  values: [clear_none, verbose, tagged_response, verbose_and_tagged]

- id: output_rate
  type: integer
  description: "3-digit scaler resolution code (see Resolution table); 199=Scaler Bypass, 201=Custom output rate (captured/uploaded EDID)"

- id: aspect_ratio_state
  type: enum
  values: [fill, follow]

- id: freeze_state
  type: enum
  values: [off, on]

- id: executive_mode_state
  type: enum
  values: [off, on]

- id: osd_enable_state
  type: enum
  values: [disabled, enabled]

- id: osd_duration_seconds
  type: integer
  description: "1-500 seconds; 501=always on"

- id: osd_location
  type: enum
  values: [top_left, top_right, top_center, bottom_left, bottom_right, bottom_center]

- id: osd_font_size
  type: enum
  values: [24px, 36px, 72px]

- id: firmware_version
  type: string
  description: "Vx.xx format (e.g. V1.23)"

- id: full_firmware_version
  type: string
  description: "Vx.xx.xxxx format (e.g. V1.23.4567)"

- id: part_number
  type: string
  description: "60-nnnn-nn format"

- id: extron_serial_number
  type: string

- id: updated_fpga_version
  type: string
  description: "Vx.xx format"

- id: linklicense
  type: string
  description: "Returns `LELIC` followed by license description (e.g. `FOX3 Uncompressed Video, 79-2560-01`) or empty if not installed"

Events

- id: input_change
  description: "Reconfig - any change of the input frequency, or a power cycle."

- id: fiber_link_change
  description: "Sts02* [X1*] * [X2*] - any change in fiber link status (SFP A, SFP B)."

- id: input_video_signal_presence
  description: "SigI [X$] - any change in input signal status."

- id: audio_input_status_change
  description: "Sts05* [X%] - displays input audio selection status."

- id: output_scaler_rate_change
  description: "Rate [X2$] - when output rate is changed."

- id: output_aspect_ratio_change
  description: "Aspr [X2%] - when aspect ratio is changed."

- id: freeze_change
  description: "Frz [X3)] - when freeze setting is changed."

Variables

# Settable device-level parameters that are not discrete actions:
- id: output_volume
  type: integer
  range: "0-100"
  unit: "percent"
  step: "1 dB per step"
  default: 100
  description: "Audio output volume. SIS command line references X2^ (volume percent)."

- id: serial_port_baud
  type: integer
  range: "300-115200"
  default: 9600
  description: "Settable via set_serial_port_params (X1@)."

- id: serial_port_parity
  type: enum
  values: [odd, even, none, mark, space]
  default: none
  description: "Settable via set_serial_port_params (X1#)."

- id: serial_port_data_bits
  type: enum
  values: [7, 8]
  default: 8
  description: "Settable via set_serial_port_params (X1$)."

- id: serial_port_stop_bits
  type: enum
  values: [1, 2]
  default: 1
  description: "Settable via set_serial_port_params (X1%)."

Safety

confirmation_required_for:
  - absolute_system_reset
  - absolute_system_reset_retain_ip
  - ip_system_reset
  - erase_all_files_from_flash
interlocks: []

Notes

  • Command framing: SIS uses E (0x1B) as the escape prefix. Responses terminate with CR/LF (] in this manual's typography). Pauses ≥10s between ASCII characters abort the command with no indication.
  • Verbose mode reverts to default on power cycle, DataViewer disconnect, or Ethernet disconnect.
  • Verbose modes 2 and 3 are required to receive global unsolicited responses (events) on an SSH session.
  • Reset equivalence (per source):
    • E ZQQQ = full factory reset (all defaults, clears files, resets passwords, retains firmware).
    • E 1ZQQQ = IP-only reset (equivalent to rear-panel "Reset Network Settings" button).
    • E ZY = absolute system reset that retains IP settings.
    • E ZXXX = reset unit settings only.
    • E ZA = reset audio gain & attenuation to defaults.
  • Rear-panel reset button (physical): "Factory Boot Code" (hold while powering up), "Reset Network Settings" (3s+6s blinks), "Full Factory Reset" (3s+6s+9s blinks) — each requires a second press within 1s.
  • Default credentials (per source): factory-shipped password = device serial number for all accounts. After complete system reset, password becomes extron. Two accounts: admin (full access) and user (create ties, presets, mutes; cannot edit passwords).
  • RS-232 insertion over fiber requires the "Captive Screw Insertion" mode configured in PCS on both endpoints; bidirectional fiber is required.
  • Source gap: refined source is truncated; the full SIS command table in the original user manual likely contains transmitter-specific commands (T-side input select, etc.), additional audio routing, and preset/macro commands not visible here. Spec should be re-amplified against the full manual when obtainable.
  • Timeout: ASCII inter-character pause of 10s or more aborts the command.
  • Error codes: E10 invalid command, E11 invalid preset number, E13 invalid parameter, E14 invalid for this configuration, E17 invalid command for signal type, E18 timeout, E21 invalid room number, E22 busy, E24 privilege violation, E25 device not present, E26 max connections exceeded, E28 bad file name / not found.

Provenance

source_domains:
  - media.extron.com
source_urls:
  - https://media.extron.com/public/download/files/userman/fox3_sr_321_331_211_68-3096-01_A.pdf
  - https://media.extron.com/public/download/files/userman/fox3_sr_301_311_68-3130-01_revB.pdf
retrieved_at: 2026-06-11T21:24:15.542Z
last_checked_at: 2026-06-12T19:17:35.568Z

Verification Summary

verdict: verified
checked_at: 2026-06-12T19:17:35.568Z
matched_actions: 59
action_count: 59
confidence: medium
summary: "All 59 spec actions match literal source commands from the SIS protocol table; transport parameters verified; complete bidirectional coverage. (3 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "full SIS command table is not present in the source (file is partial — first ~half of command table only). Commands below represent every distinct command-bearing row visible in the source. Many transmitter-specific and receiver-specific rows from later pages of the manual are not enumerated."
- "power on/off commands and input-routing commands (T-side select input) are not visible in the source excerpt."
- "explicit input-routing commands for transmitter (T) input select not present in source excerpt"

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