Summary

Extron IPL EXP PDU8L is a networked power expansion interface with eight independently switched DC outputs, aggregate power monitoring, and a temperature sensor port. This spec covers Simple Instruction Set (SIS) control over an authenticated SSH connection and the documented device, network, security, and monitoring commands.

Transport

protocols:
  - tcp
addressing:
  port: 22023
auth:
  type: password
  username:
    allowed:
      - admin
      - user
  password:
    initial: device_serial_number
    after_factory_reset: extron
  case_sensitive: true
connection:
  application_protocol: ssh
  command_protocol: SIS
  response_terminator: "CR/LF"

Traits

- powerable  # inferred from DC output power commands
- queryable  # inferred from status and information query commands

Actions

- id: dc_output_power_on
  label: Turn DC Output Power On
  kind: action
  command: "E P{output}*1DCPP}"
  params:
    - name: output
      type: integer
      range: [0, 8]
      description: "0 selects all outputs; 1-8 select individual outputs."

- id: dc_output_power_off
  label: Turn DC Output Power Off
  kind: action
  command: "E P{output}*0DCPP}"
  params:
    - name: output
      type: integer
      range: [0, 8]
      description: "0 selects all outputs; 1-8 select individual outputs."

- id: dc_output_power_status
  label: View DC Output Power Status
  kind: query
  command: "E P{output}DCPP}"
  params:
    - name: output
      type: integer
      range: [0, 8]
      description: "0 selects all outputs; 1-8 select individual outputs."

- id: dc_load_status
  label: View Combined DC Load Status
  kind: query
  command: "E 33STAT}"
  params: []

- id: combined_dc_power
  label: View Combined DC Power Output
  kind: query
  command: "E 34STAT}"
  params: []

- id: set_output_name
  label: Set Power Output Name
  kind: action
  command: "E {output},{name}NO}"
  params:
    - name: output
      type: integer
      range: [1, 8]
    - name: name
      type: string
      max_length: 17

- id: reset_output_name
  label: Reset Power Output Name
  kind: action
  command: "E {output}, NO}"
  params:
    - name: output
      type: integer
      range: [1, 8]

- id: output_name
  label: View Power Output Name
  kind: query
  command: "E {output}NO}"
  params:
    - name: output
      type: integer
      range: [1, 8]

- id: current_temperature
  label: View Current Temperature
  kind: query
  command: "E T1 TEMP}"
  params: []

- id: temperature_state
  label: View Temperature State
  kind: query
  command: "E S1 TEMP}"
  params: []

- id: set_temperature_limit
  label: Set Temperature Limit Threshold
  kind: action
  command: "E L1*{temperature}TEMP}"
  params:
    - name: temperature
      type: number
      description: "Threshold in degrees Celsius to one decimal place."

- id: temperature_limit
  label: View Temperature Limit Threshold
  kind: query
  command: "E L1 TEMP}"
  params: []

- id: set_temperature_over
  label: Set Temperature Over Threshold
  kind: action
  command: "E O1*{temperature}TEMP}"
  params:
    - name: temperature
      type: number
      description: "Threshold in degrees Celsius to one decimal place."

- id: temperature_over
  label: View Temperature Over Threshold
  kind: query
  command: "E O1 TEMP}"
  params: []

- id: spd_mode
  label: View SPD Mode
  kind: query
  command: "E M ESPD}"
  params: []

- id: model_name
  label: View Model Name
  kind: query
  command: "1I"
  params: []

- id: model_description
  label: View Model Description
  kind: query
  command: "2I"
  params: []

- id: serial_number
  label: View Serial Number
  kind: query
  command: "19I"
  params: []

- id: part_number
  label: View Part Number
  kind: query
  command: "N"
  params: []

- id: firmware_version_advanced
  label: View Firmware Version Advanced
  kind: query
  command: "{firmware_query}Q"
  params:
    - name: firmware_query
      type: string
      values: ["*", "0", "1", "2", "3", "4"]

- id: firmware_version
  label: View Firmware Version
  kind: query
  command: "Q"
  params: []

- id: firmware_build
  label: View Full Firmware Version and Build
  kind: query
  command: "*Q"
  params: []

- id: firmware_library
  label: View Firmware Kernel or Library Version
  kind: query
  command: "**Q"
  params: []

- id: detailed_firmware
  label: View Detailed Firmware Information
  kind: query
  command: "0Q"
  params: []

- id: running_firmware
  label: View Running Firmware Version
  kind: query
  command: "1Q"
  params: []

- id: bootloader_firmware
  label: View Bootloader Firmware Version
  kind: query
  command: "2Q"
  params: []

- id: factory_firmware
  label: View Factory Base Firmware Version
  kind: query
  command: "3Q"
  params: []

- id: updated_firmware
  label: View Updated Firmware Version
  kind: query
  command: "4Q"
  params: []

- id: set_current_ethernet_timeout
  label: Set Current Ethernet Connection Timeout
  kind: action
  command: "E 0*{timeout}TC}"
  params:
    - name: timeout
      type: integer
      range: [1, 65000]
      description: "Timeout value documented in ten-second steps."

- id: current_ethernet_timeout
  label: View Current Ethernet Connection Timeout
  kind: query
  command: "E 0TC}"
  params: []

- id: set_global_ethernet_timeout
  label: Set Global Ethernet Connection Timeout
  kind: action
  command: "E 1*{timeout}TC}"
  params:
    - name: timeout
      type: integer
      range: [1, 65000]
      description: "Timeout value documented in ten-second steps."

- id: global_ethernet_timeout
  label: View Global Ethernet Connection Timeout
  kind: query
  command: "E 1TC}"
  params: []

- id: set_hostname
  label: Set Hostname
  kind: action
  command: "E {hostname}CN}"
  params:
    - name: hostname
      type: string
      max_length: 63

- id: reset_hostname
  label: Reset Hostname
  kind: action
  command: "E  CN}"
  params: []

- id: hostname
  label: View Hostname
  kind: query
  command: "E CN}"
  params: []

- id: enable_dhcp_ipv4
  label: Enable IPv4 DHCP
  kind: action
  command: "E 1DH}"
  params: []

- id: disable_dhcp_ipv4
  label: Disable IPv4 DHCP
  kind: action
  command: "E 0DH}"
  params: []

- id: dhcp_ipv4_status
  label: View IPv4 DHCP Status
  kind: query
  command: "E DH}"
  params: []

- id: mac_address
  label: View MAC Address
  kind: query
  command: "E {nic}CH}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: set_ipv4_address
  label: Set IPv4 Address
  kind: action
  command: "E {address}CI}"
  params:
    - name: address
      type: string

- id: ipv4_address
  label: View IPv4 Address
  kind: query
  command: "E CI}"
  params: []

- id: set_ipv4_network
  label: Set IPv4 Address Prefix and Gateway
  kind: action
  command: "E 1*{address}/{prefix}*{gateway}CISG}"
  params:
    - name: address
      type: string
    - name: prefix
      type: integer
    - name: gateway
      type: string

- id: ipv4_network
  label: View IPv4 Address Prefix and Gateway
  kind: query
  command: "E 1CISG}"
  params: []

- id: set_dns_server
  label: Set DNS Server IPv4 Address
  kind: action
  command: "E {address}DI}"
  params:
    - name: address
      type: string

- id: dns_server
  label: View DNS Server IPv4 Address
  kind: query
  command: "E DI}"
  params: []

- id: set_verbose_mode
  label: Set Verbose Response Mode
  kind: action
  command: "E {mode}CV}"
  params:
    - name: mode
      type: integer
      values: [0, 1, 2, 3]

- id: verbose_mode
  label: View Verbose Response Mode
  kind: query
  command: "E CV}"
  params: []

- id: connection_count
  label: View Connection Count
  kind: query
  command: "E CC}"
  params: []

- id: disable_ipv4
  label: Disable IPv4 Network Access
  kind: action
  command: "E V{nic}*4*0ETHN}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: enable_ipv4
  label: Enable IPv4 Network Access
  kind: action
  command: "E V{nic}*4*1ETHN}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: ipv4_status
  label: View IPv4 Network Status
  kind: query
  command: "E V{nic}*4ETHN}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: disable_ipv6
  label: Disable IPv6 Network Access
  kind: action
  command: "E V{nic}*6*0ETHN}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: enable_ipv6
  label: Enable IPv6 Network Access
  kind: action
  command: "E V{nic}*6*1ETHN}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: ipv6_status
  label: View IPv6 Network Status
  kind: query
  command: "E V{nic}*6ETHN}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: enable_network_access
  label: Enable Network Access
  kind: action
  command: "E E1*1ETHN}"
  params: []

- id: disable_network_access
  label: Disable Network Access
  kind: action
  command: "E E1*0ETHN}"
  params: []

- id: network_access_status
  label: View Network Access Status
  kind: query
  command: "E E1ETHN}"
  params: []

- id: disable_dhcp_ipv6
  label: Disable IPv6 DHCP
  kind: action
  command: "E {nic}*0DHCP6}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: enable_dhcp_ipv6
  label: Enable IPv6 DHCP
  kind: action
  command: "E {nic}*1DHCP6}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: set_dhcp_ipv6_mode
  label: Set IPv6 DHCP Mode
  kind: action
  command: "E {nic}*{mode}DHCP6}"
  params:
    - name: nic
      type: integer
      values: [1]
    - name: mode
      type: integer
      values: [0, 1, 2, 3, 4, 5]

- id: dhcp_ipv6_mode
  label: View IPv6 DHCP Mode
  kind: query
  command: "E {nic}DHCP6}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: select_eui64
  label: Select EUI-64 Address Generation
  kind: action
  command: "E A{nic}*0ETHN}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: select_stable_privacy
  label: Select Stable Privacy Address Generation
  kind: action
  command: "E A{nic}*1ETHN}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: address_generation_mode
  label: View IPv6 Address Generation Mode
  kind: query
  command: "E A{nic}ETHN}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: set_ipv6_address
  label: Set IPv6 Address
  kind: action
  command: "E {nic}*{address}CISG6}"
  params:
    - name: nic
      type: integer
      values: [1]
    - name: address
      type: string

- id: set_ipv6_address_prefix
  label: Set IPv6 Address and Prefix
  kind: action
  command: "E {nic}*{address}/{prefix}CISG6}"
  params:
    - name: nic
      type: integer
      values: [1]
    - name: address
      type: string
    - name: prefix
      type: integer

- id: set_ipv6_network
  label: Set IPv6 Address Prefix and Gateway
  kind: action
  command: "E {nic}*{address}/{prefix}*{gateway}CISG6}"
  params:
    - name: nic
      type: integer
      values: [1]
    - name: address
      type: string
    - name: prefix
      type: integer
    - name: gateway
      type: string

- id: ipv6_network
  label: View IPv6 Address Prefix and Gateway
  kind: query
  command: "E {nic}CISG6}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: enable_dad
  label: Enable Duplicate Address Detection
  kind: action
  command: "E D{nic}*1ETHN}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: disable_dad
  label: Disable Duplicate Address Detection
  kind: action
  command: "E D{nic}*0ETHN}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: dad_status
  label: View Duplicate Address Detection Status
  kind: query
  command: "E D{nic}ETHN}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: ping_ipv4
  label: Ping IPv4 Device
  kind: query
  command: "E {address_or_name}*4PING}"
  params:
    - name: address_or_name
      type: string

- id: ping_ipv6
  label: Ping IPv6 Device
  kind: query
  command: "E {address_or_name}*6PING}"
  params:
    - name: address_or_name
      type: string

- id: resolve_hostname_ipv4
  label: Resolve Hostname to IPv4 Address
  kind: query
  command: "E V{nic}*{name}*4HNAM}"
  params:
    - name: nic
      type: integer
      values: [1]
    - name: name
      type: string

- id: resolve_hostname_ipv6
  label: Resolve Hostname to IPv6 Address
  kind: query
  command: "E V{nic}*{name}*6HNAM}"
  params:
    - name: nic
      type: integer
      values: [1]
    - name: name
      type: string

- id: resolve_hostname
  label: Resolve Hostname to IP Address
  kind: query
  command: "E V{nic}*{name}HNAM}"
  params:
    - name: nic
      type: integer
      values: [1]
    - name: name
      type: string

- id: ethernet_report
  label: View Human-Readable Ethernet Report
  kind: query
  command: "E R{nic}ETHN}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: ethernet_json_report
  label: View Ethernet JSON Report
  kind: query
  command: "E J{nic}ETHN}"
  params:
    - name: nic
      type: integer
      values: [1]

- id: set_admin_password
  label: Set Administrator Password
  kind: action
  command: "E {password}CA}"
  params:
    - name: password
      type: string
      min_length: 1
      max_length: 128
      description: "Human-readable ASCII excluding pipe; cannot be one space."

- id: reset_admin_password
  label: Reset Administrator Password
  kind: action
  command: "E  CA}"
  params: []

- id: admin_password_status
  label: View Administrator Password Status
  kind: query
  command: "E CA}"
  params: []

- id: set_user_password
  label: Set User Password
  kind: action
  command: "E {password}CU}"
  params:
    - name: password
      type: string
      min_length: 1
      max_length: 128
      description: "Human-readable ASCII excluding pipe; cannot be one space."

- id: reset_user_password
  label: Reset User Password
  kind: action
  command: "E  CU}"
  params: []

- id: user_password_status
  label: View User Password Status
  kind: query
  command: "E CU}"
  params: []

- id: set_ssh_port_map
  label: Set SIS-over-SSH Port Map
  kind: action
  command: "E B{port}PMAP}"
  params:
    - name: port
      type: integer

- id: reset_ssh_port_map
  label: Reset SIS-over-SSH Port Map
  kind: action
  command: "E B22023PMAP}"
  params: []

- id: disable_ssh_port
  label: Disable SIS-over-SSH Port
  kind: action
  command: "E B0PMAP}"
  params: []

- id: ssh_port_map
  label: View SIS-over-SSH Port Map
  kind: query
  command: "E BPMAP}"
  params: []

- id: set_ssh_port_map_nic
  label: Set SIS-over-SSH Port Map for NIC
  kind: action
  command: "E B1*{port}PMAP}"
  params:
    - name: port
      type: integer

- id: enable_echo
  label: Enable SSH Session Echo
  kind: action
  command: "E 1ECHO}"
  params: []

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

- id: echo_status
  label: View SSH Session Echo Status
  kind: query
  command: "E ECHO}"
  params: []

- id: set_snmp_contact
  label: Set SNMP Contact
  kind: action
  command: "E C{contact}SNMP}"
  params:
    - name: contact
      type: string
      min_length: 1
      max_length: 64

- id: reset_snmp_contact
  label: Reset SNMP Contact
  kind: action
  command: "E C SNMP}"
  params: []

- id: snmp_contact
  label: View SNMP Contact
  kind: query
  command: "E CSNMP}"
  params: []

- id: set_snmp_location
  label: Set SNMP Location
  kind: action
  command: "E L{location}SNMP}"
  params:
    - name: location
      type: string
      min_length: 1
      max_length: 64

- id: reset_snmp_location
  label: Reset SNMP Location
  kind: action
  command: "E L SNMP}"
  params: []

- id: snmp_location
  label: View SNMP Location
  kind: query
  command: "E LSNMP}"
  params: []

- id: set_snmp_public_community
  label: Set SNMP Public Community
  kind: action
  command: "E P{community}SNMP}"
  params:
    - name: community
      type: string
      min_length: 1
      max_length: 64

- id: reset_snmp_public_community
  label: Reset SNMP Public Community
  kind: action
  command: "E P SNMP}"
  params: []

- id: snmp_public_community
  label: View SNMP Public Community
  kind: query
  command: "E PSNMP}"
  params: []

- id: enable_snmp
  label: Enable SNMP Access
  kind: action
  command: "E E1SNMP}"
  params: []

- id: disable_snmp
  label: Disable SNMP Access
  kind: action
  command: "E E0SNMP}"
  params: []

- id: snmp_status
  label: View SNMP Access Status
  kind: query
  command: "E ESNMP}"
  params: []

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

- id: absolute_reset_retain_ip
  label: Absolute System Reset Retaining IP Settings
  kind: action
  command: "E ZY}"
  params: []

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

- id: reset_ip_and_connection
  label: Reset IP Settings and Connection
  kind: action
  command: "E 1ZQQQ}"
  params: []

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

- id: restart_network
  label: Restart Network Connection
  kind: action
  command: "E 2BOOT}"
  params: []

Feedbacks

- id: dc_output_power_state
  type: enum
  values: [off, on]
  response: "DcppP{output}*{state}"

- id: combined_dc_load_state
  type: enum
  values: [normal, limit, over]
  wire_values:
    normal: 0
    limit: 1
    over: 2
  response: "33Stat {state}"

- id: combined_dc_power_watts
  type: number
  response: "34Stat {watts}"

- id: output_name
  type: string
  max_length: 17

- id: temperature_celsius
  type: number
  precision: 1
  response: "TempT1*{temperature}"

- id: temperature_state
  type: enum
  values: [probe_error, normal, limit, over]
  wire_values:
    probe_error: 0
    normal: 1
    limit: 2
    over: 3
  response: "TempS1*{state}"

- id: temperature_limit_celsius
  type: number
  precision: 1
  response: "TempL1*{temperature}"

- id: temperature_over_celsius
  type: number
  precision: 1
  response: "TempO1*{temperature}"

- id: spd_mode_state
  type: enum
  values: [disabled, enabled]
  wire_values:
    disabled: 0
    enabled: 1
  response: "EspdM{state}"

- id: model_name
  type: string
  response: "Inf01*{model}"

- id: model_description
  type: string
  response: "Inf02*{description}"

- id: serial_number
  type: string
  response: "Inf19*{serial_number}"

- id: part_number
  type: string
  response: "Pno{part_number}"

- id: command_error
  type: enum
  values:
    - E10
    - E12
    - E13
    - E14
    - E18
    - E22
    - E24
    - E26
    - E28
    - E37

- id: power_up_message
  type: string
  response: "Copyright 20{year}, Extron IPL EXP PDU8L, V{firmware}, 60-1928-01"

- id: enabled_state
  type: enum
  values: [disabled, enabled]
  wire_values:
    disabled: 0
    enabled: 1

Variables

- id: dc_output_state
  type: enum
  values: [off, on]
  scope: outputs_1_through_8

- id: dc_output_name
  type: string
  max_length: 17
  default_template: "DC Power Output{output}"

- id: temperature_limit_celsius
  type: number
  precision: 1
  default: 24.0

- id: temperature_over_celsius
  type: number
  precision: 1
  default: 30.0

- id: verbose_mode
  type: integer
  values: [0, 1, 2, 3]
  default: 0

- id: ethernet_timeout
  type: integer
  range: [1, 65000]
  default: 30
  step_seconds: 10

- id: ipv6_dhcp_mode
  type: integer
  values: [0, 1, 2, 3, 4, 5]

- id: ssh_port
  type: integer
  default: 22023

- id: echo_enabled
  type: boolean
  default: true

- id: snmp_enabled
  type: boolean
  default: false

Events

- id: device_started
  description: Device sends its copyright, model, firmware, part number, date, and time after startup.

- id: verbose_change_notice
  description: SSH sessions in verbose mode 1 or 3 receive device change notices.

- id: network_reconfigured
  response: "Reconfig"

- id: network_restarted
  response: "Boot2"

- id: system_rebooted
  response: "Boot 1"

Macros

# UNRESOLVED: source documents no SIS macro payloads or explicit multi-step control sequences.

Safety

confirmation_required_for:
  - reset_unit_settings
  - absolute_reset_retain_ip
  - absolute_system_reset
  - reset_ip_and_connection
  - reboot_system
  - restart_network
interlocks:
  - id: sis_spd_exclusion
    description: "SIS-over-SSH and SPD modes are mutually exclusive. In SPD mode, only the SPD-mode query is accepted; other SIS commands return E37."
  - id: overload_shutdown
    description: "When combined DC output power exceeds the overload threshold, the device turns the DC outputs off. Correct excessive power draw before attempting restoration."
  - id: ipv4_ipv6_minimum
    description: "Firmware prevents disabling both IPv4 and IPv6; disabling one causes the other to remain enabled."

Notes

SIS commands accept upper- or lowercase characters unless otherwise specified. Commands can be sent back-to-back without spaces, and numeric fields may contain one, two, or three digits. Unit responses end with carriage return and line feed.

SIS-over-SSH is enabled by default but becomes unavailable when SPD mode is enabled. Port 22023 is configurable and can be disabled. Echo is enabled by default per SSH session; verbose modes 1 and 3 enable change notices.

Administrator-level commands identified by the source may return E24 for insufficient privilege. Commands can also return E10 for invalid command, E12 for unavailable port, E13 for invalid value, E14 for invalid configuration, E18 for timeout, E22 for busy, E26 for too many connections, E28 for missing file, or E37 in SPD mode.

Firmware older than v1.01.0000-b026 may lack IPv6 NIC support. This is a feature-specific limitation, not a general firmware compatibility range.

Provenance

source_domains:
  - media.extron.com
  - extron.com
  - manualslib.com
source_urls:
  - https://media.extron.com/public/download/files/userman/68-3495-01_B_IPL_EXP_PwrSer_UG.pdf
  - https://www.extron.com/product/iplexppdu8l
  - https://www.manualslib.com/products/Extron-Electronics-Ipl-Exp-Series-14063750.html
  - https://www.extron.com/download/control-system-drivers
  - https://www.extron.com/download/files/userman/68-3495-50_B_IPL_EXP_PowerSer_SUG_.pdf
retrieved_at: 2026-07-24T19:06:24.848Z
last_checked_at: 2026-08-05T08:20:40.931Z

Verification Summary

verdict: verified
checked_at: 2026-08-05T08:20:40.931Z
matched_actions: 110
action_count: 110
confidence: medium
summary: "All 110 spec SIS actions match the PDU8L command table verbatim (Escape=E, CR=}); transport values (port 22023, SSH/SIS, password rules) all source-anchored. (3 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "behavior has not been verified against a physical device."
- "source documents no SIS macro payloads or explicit multi-step control sequences."
- "exact command framing representation should be checked against original manual typography because extracted text represents Escape as \"E\", carriage return as \"}\", and spaces inconsistently."

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