Summary

The Elium IRD 2160 is an Integrated Receiver Decoder (IRD) supporting DVB-S/S2, DVB-C, DVB-T reception. It can be controlled bidirectionally via RS-232 serial connection (RS-RC mode) or TCP network connection (NET-RC mode). Commands are sent as ASCII strings enclosed in angle brackets (<COMMAND>), with responses prefixed by #.

Transport

protocols:
  - tcp
  - serial
addressing:
  port: 26
serial:
  baud_rate: 115200
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable      # inferred from ON/OFF power commands
- queryable      # inferred from extensive query command set (GCS, GCM, GCC, etc.)
- levelable      # inferred from VOL, SBR, SCO, SSA, SSH, SHU, SBRD, SCOD, SSAD, SSHD commands
- routable       # inferred from PRT/PRR channel selection and CICAMTSROUTE routing

Actions

# ===== Section 7: Commands without additional return value =====

- id: power_on
  label: Power On
  kind: action
  command: "<ON>"
  params: []

- id: power_off
  label: Power Off
  kind: action
  command: "<OFF>"
  params: []

- id: reboot
  label: Reboot Receiver
  kind: action
  command: "<REB>"
  params: []

- id: set_rs232_baud
  label: Set RS232 Baud Rate
  kind: action
  command: "<SSS {n}>"
  params:
    - name: n
      type: integer
      description: "Baud rate: 9600, 19200, 38400, or 115200"

- id: set_cooler_max_left
  label: Set Left Cooler Maximum Temperature
  kind: action
  command: "<CMX {n}>"
  params:
    - name: n
      type: integer
      description: "Temperature: 50, 55, 60, 65, 70, or 75"

- id: set_cooler_max_left_l
  label: Set Left Cooler Maximum Temperature (L variant)
  kind: action
  command: "<CMXL {n}>"
  params:
    - name: n
      type: integer
      description: "Temperature: 50, 55, 60, 65, 70, or 75"

- id: set_cooler_max_right
  label: Set Right Cooler Maximum Temperature
  kind: action
  command: "<CMXR {n}>"
  params:
    - name: n
      type: integer
      description: "Temperature: 50, 55, 60, 65, 70, or 75"

- id: set_cooler_min_left
  label: Set Left Cooler Minimum Temperature
  kind: action
  command: "<CMN {n}>"
  params:
    - name: n
      type: integer
      description: "Temperature: 20, 25, 30, 35, 40, or 45"

- id: set_cooler_min_left_l
  label: Set Left Cooler Minimum Temperature (L variant)
  kind: action
  command: "<CMNL {n}>"
  params:
    - name: n
      type: integer
      description: "Temperature: 20, 25, 30, 35, 40, or 45"

- id: set_cooler_min_right
  label: Set Right Cooler Minimum Temperature
  kind: action
  command: "<CMNR {n}>"
  params:
    - name: n
      type: integer
      description: "Temperature: 20, 25, 30, 35, 40, or 45"

- id: teletext_control
  label: Teletext Control
  kind: action
  command: "<TXT {param}>"
  params:
    - name: param
      type: string
      description: "1=on, 0=off, n=page number (100-999), R=Key RED, G=Key GREEN, Y=Key YELLOW, B=Key BLUE"

- id: epg_control
  label: EPG Control
  kind: action
  command: "<EPG {param}>"
  params:
    - name: param
      type: string
      description: "1=on, 0=off, R=move right, L=move left, U=move up, D=move down, I=get event information, E=leave event info"

- id: program_info_control
  label: Current Program Information Control
  kind: action
  command: "<CPI {param}>"
  params:
    - name: param
      type: string
      description: "1=on, 0=off, U=scroll up, D=scroll down"

- id: freeze_picture
  label: Freeze Current Picture
  kind: action
  command: "<FCP {param}>"
  params:
    - name: param
      type: string
      description: "1=on, 0=off"

- id: audio_multifeed_control
  label: Audio and Multifeed Option Control
  kind: action
  command: "<AVM {param}>"
  params:
    - name: param
      type: string
      description: "1=on, 0=off, U=move up, D=move down, L=move left, R=move right"

- id: return_last_channel
  label: Return to Last Channel
  kind: action
  command: "<RCL>"
  params: []

- id: menu
  label: Menu
  kind: action
  command: "<MNU>"
  params: []

- id: exit_menu
  label: Exit and Leave Menu
  kind: action
  command: "<EXT>"
  params: []

- id: confirm_option
  label: Confirm Selected Option
  kind: action
  command: "<CNF>"
  params: []

- id: start_mp3_player
  label: Start movieNET MP3 Audio Player
  kind: action
  command: "<MP3>"
  params: []

- id: start_internet_radio
  label: Start movieNET Internet Radio Player
  kind: action
  command: "<IRADIO>"
  params: []

- id: navigate
  label: Navigate
  kind: action
  command: "<NAV {direction}>"
  params:
    - name: direction
      type: string
      description: "U=up, D=down, L=left, R=right"

- id: info_osd
  label: Info OSD
  kind: action
  command: "<INF>"
  params: []

- id: program_list_osd
  label: Program List OSD
  kind: action
  command: "<TVL>"
  params: []

- id: page_navigation
  label: Page Navigation
  kind: action
  command: "<PAG {param}>"
  params:
    - name: param
      type: string
      description: "u=10 lines up, d=10 lines down, n=move cursor +-n lines"

- id: digit_input
  label: Digit Input
  kind: action
  command: "<DIG {n}>"
  params:
    - name: n
      type: integer
      description: "Digit 0-9"

- id: set_rgb_ypbpr_mode
  label: Set RGB/YPbPr Mode
  kind: action
  command: "<YAM {n}>"
  params:
    - name: n
      type: integer
      description: "0=RGB, 1=YPbPr"

- id: set_digital_video_resolution
  label: Set Digital Video Output Resolution
  kind: action
  command: "<YAR {n}>"
  params:
    - name: n
      type: integer
      description: "0=576p, 1=720p60, 2=720p50, 3=1080i50, 4=1080p60, 5=1080p24, 6=1080p25, 7=1080p30, 8=480p"

- id: set_analog_video_resolution
  label: Set Analog Video Output Resolution
  kind: action
  command: "<YARAN {n}>"
  params:
    - name: n
      type: integer
      description: "0=PAL, 1=SECAM, 2=NTSC"

- id: define_alive_message
  label: Define Alive Message
  kind: action
  command: "<ALM {msg}>"
  params:
    - name: msg
      type: string
      description: "Message text sent with leading and trailing CR/LF pair"

- id: control_alive_message
  label: Start/Stop Alive Message Sending
  kind: action
  command: "<ALT {n}>"
  params:
    - name: n
      type: integer
      description: "0=stop, 1..n=send every n seconds"

- id: define_standby_message
  label: Define In-Standby Message
  kind: action
  command: "<SBM {msg}>"
  params:
    - name: msg
      type: string
      description: "Message text sent during IRD Standby with leading and trailing CR/LF pair"

- id: control_standby_message
  label: Start/Stop In-Standby Message Sending
  kind: action
  command: "<SBT {n}>"
  params:
    - name: n
      type: integer
      description: "0=disable, 1..n=send every n seconds during Standby"

- id: define_power_fail_message
  label: Define Power-Fail Message
  kind: action
  command: "<PFM {msg}>"
  params:
    - name: msg
      type: string
      description: "Message text for power supply failure (only for IRD with redundant power supply)"

- id: control_power_fail_message
  label: Start/Stop Power-Fail Message Sending
  kind: action
  command: "<PFT {n}>"
  params:
    - name: n
      type: integer
      description: "0=disable, 1..n=send every n seconds during power failure (only for IRD with redundant power supply)"

- id: control_epg_notifications
  label: Enable/Disable EPG Event Notifications
  kind: action
  command: "<NPM {n}>"
  params:
    - name: n
      type: integer
      description: "0=disable, 1=enable"

- id: control_tv_radio_notifications
  label: Enable/Disable TV/Radio Mode Change Notifications
  kind: action
  command: "<TRM {n}>"
  params:
    - name: n
      type: integer
      description: "0=disable, 1=enable"

- id: control_volume_notifications
  label: Enable/Disable Volume/Mute State Change Notifications
  kind: action
  command: "<VLM {n}>"
  params:
    - name: n
      type: integer
      description: "0=disable, 1=enable"

- id: control_channel_notifications
  label: Enable/Disable Channel Change Notifications
  kind: action
  command: "<CPM {n}>"
  params:
    - name: n
      type: integer
      description: "0=disable, 1=enable"

- id: control_power_notifications
  label: Enable/Disable ON/OFF State Change Notifications
  kind: action
  command: "<PWM {n}>"
  params:
    - name: n
      type: integer
      description: "0=disable, 1=enable"

- id: show_osd_messagebox
  label: Show OSD Messagebox
  kind: action
  command: "<EXTMSG {msg}>"
  params:
    - name: msg
      type: string
      description: "Message text (UTF8)"

- id: show_osd_popup
  label: Show OSD Popup Hintbox
  kind: action
  command: "<EXTPOPUP {msg}>"
  params:
    - name: msg
      type: string
      description: "Message text (UTF8)"

- id: set_osd_msgbox_x
  label: Set OSD Messagebox Horizontal Position
  kind: action
  command: "<SEXTMSGX {n}>"
  params:
    - name: n
      type: integer
      description: "-1=center, 0-100=relative position in percent of screen width"

- id: set_osd_msgbox_y
  label: Set OSD Messagebox Vertical Position
  kind: action
  command: "<SEXTMSGY {n}>"
  params:
    - name: n
      type: integer
      description: "-1=center, 0-100=relative position in percent of screen height"

- id: set_audio_channel
  label: Set Audio Channels
  kind: action
  command: "<SAC {args}>"
  params:
    - name: args
      type: string
      description: "Single output: n (0=audio1, 1=audio2, 1000=AC3 ch1, 1001=AC3 ch2). Dual output: m n (m=0 Audio1 out, m=1 Audio2 out)"

- id: lock_keys
  label: Lock/Unlock Frontpanel Keys
  kind: action
  command: "<LCK {n}>"
  params:
    - name: n
      type: integer
      description: "0=unlock, non-zero=lock"

- id: lock_remote
  label: Lock/Unlock IR Remote Control
  kind: action
  command: "<LCI {n}>"
  params:
    - name: n
      type: integer
      description: "0=unlock, non-zero=lock"

- id: simulate_remote
  label: Simulate Remote Control Input
  kind: action
  command: "<RMC {c}>"
  params:
    - name: c
      type: string
      description: "Remote key code: 0-9=digits, i=OK, m=EXIT, b=MENU, u=UP, j=DOWN, k=RIGHT, h=LEFT, e=TXT, d=EPG, f=REC/STOP, g=INFO, x=Yellow, c=Red, v=RADIO/TV, n=LAST, t=ON/OFF, a=MUTE, J=PIP, K=FREEZE, L=ZOOM, M=AUDIO VIDEO, A=MODE, B=Green, C=Blue, D=rew back, E=PLAY/PAUSE, F=rew forward, G=go prev, H=go next, I=TIMER"

- id: record_control
  label: Recording Control
  kind: action
  command: "<REC {param}>"
  params:
    - name: param
      type: string
      description: "1=start recording, 0=stop recording, D=stop and delete record file"

- id: timeshift_control
  label: Timeshift Control
  kind: action
  command: "<TSHFT {param}>"
  params:
    - name: param
      type: string
      description: "1=start timeshifting, 0=stop timeshifting"

- id: movie_browser_toggle
  label: movieNET Movie Browser Toggle
  kind: action
  command: "<MPLAY {param}>"
  params:
    - name: param
      type: string
      description: "1=movie browser on, 0=movie browser off / stop player"

- id: play_media_file
  label: Play Media File
  kind: action
  command: "<MPLAY ={s}>"
  params:
    - name: s
      type: string
      description: "Media file path in format container;filename (HDD1-2, NFS1-4, INET) or GRL/GML/GAL/GPL return format"

- id: play_movie_queue
  label: Play Movie Queue
  kind: action
  command: "<MPLAY list>"
  params: []

- id: control_movie_loop
  label: Movie Player Loop Control
  kind: action
  command: "<MPLAY LOOP {n}>"
  params:
    - name: n
      type: integer
      description: "0=disabled, 1=loop current file, 2=loop play queue"

- id: add_to_playlist
  label: Add to Play Queue
  kind: action
  command: "<MPLAYLIST +={s}>"
  params:
    - name: s
      type: string
      description: "Media file path in format container;filename (HDD1-2, NFS1-4)"

- id: clear_playlist
  label: Clear Play Queue
  kind: action
  command: "<MPLAYLIST clear>"
  params: []

- id: play_audio_queue
  label: Play Audio Queue
  kind: action
  command: "<APLAY list>"
  params: []

- id: control_audio_loop
  label: Audio Player Loop Control
  kind: action
  command: "<APLAY LOOP {n}>"
  params:
    - name: n
      type: integer
      description: "0=disabled, 1=loop current file, 2=loop play queue"

- id: playback_pause
  label: Playback Pause
  kind: action
  command: "<MPPAUSE>"
  params: []

- id: playback_play
  label: Playback Play
  kind: action
  command: "<MPPLAY>"
  params: []

- id: playback_stop
  label: Playback Stop
  kind: action
  command: "<MPSTOP>"
  params: []

- id: playback_fast_forward
  label: Playback Fast Forward
  kind: action
  command: "<MPFF {n}>"
  params:
    - name: n
      type: string
      description: "Empty=jump 2% forward, or n minutes (1, 5, or 10 only)"

- id: playback_rewind
  label: Playback Rewind
  kind: action
  command: "<MPRW {n}>"
  params:
    - name: n
      type: string
      description: "Empty=jump 2% backward, or n minutes (1, 5, or 10 only)"

- id: playback_jump_start
  label: Playback Jump to Start
  kind: action
  command: "<MPSTA>"
  params: []

- id: playback_jump_middle
  label: Playback Jump to Middle
  kind: action
  command: "<MPMID>"
  params: []

- id: playback_jump_end
  label: Playback Jump to End
  kind: action
  command: "<MPEND>"
  params: []

- id: playback_timeline
  label: Show/Hide Playback Timeline
  kind: action
  command: "<MPTIME>"
  params: []

- id: playback_time_order
  label: Change Playback Timeline Time Order
  kind: action
  command: "<MPTMORD>"
  params: []

- id: set_subtitle
  label: Set Subtitle Stream
  kind: action
  command: "<SSU {n}>"
  params:
    - name: n
      type: integer
      description: "Subtitle stream number, 0=disable subtitling. Available streams from GSU command."

- id: picture_viewer_control
  label: pictureNET Image Viewer Control
  kind: action
  command: "<PICVIEW {param}>"
  params:
    - name: param
      type: string
      description: "1=on, 0=off, F=1 image fwd, FF=10 images fwd, FFF=last image, B=1 image back, BB=10 images back, BBB=first image, INF=show OSD infobar, MNU=config OSD menu, PLAY=start slideshow, STOP=stop slideshow, DELAY n=slideshow delay in seconds"

- id: set_fwupdate_ip
  label: Set Network Fileserver IP for Firmware Update
  kind: action
  command: "<SETUPDIP {ip}>"
  params:
    - name: ip
      type: string
      description: "Fileserver IP address in format xxx.xxx.xxx.xxx"

- id: set_fwupdate_dir
  label: Set Network Share Name for Firmware Update
  kind: action
  command: "<SETUPDDIR {dir}>"
  params:
    - name: dir
      type: string
      description: "Share name (CIFS) or shared path (NFS)"

- id: set_fwupdate_user
  label: Set Fileserver User Name for Firmware Update
  kind: action
  command: "<SETUPDUSER {usr}>"
  params:
    - name: usr
      type: string
      description: "User name string (must not be empty for CIFS; use 'guest' for Guest Access)"

- id: set_fwupdate_password
  label: Set Fileserver User Password for Firmware Update
  kind: action
  command: "<SETUPDPSWD {pwsd}>"
  params:
    - name: pwsd
      type: string
      description: "User password string"

- id: set_fwupdate_file
  label: Set Firmware Update Image Filename
  kind: action
  command: "<SETUPDFILE {file}>"
  params:
    - name: file
      type: string
      description: "Firmware image filename (elium_ird_v*.img) without full path"

- id: start_fwupdate
  label: Start Network Firmware Update
  kind: action
  command: "<FWUPDATE {method}>"
  params:
    - name: method
      type: string
      description: "CIFS=Windows share, NFS=Linux share"

- id: sync_logos_write
  label: Synchronize Channel Logos Write (IRD to Share)
  kind: action
  command: "<LOGOSYNCWR {method}>"
  params:
    - name: method
      type: string
      description: "CIFS=Windows share, NFS=Linux share"

- id: sync_logos_read
  label: Synchronize Channel Logos Read (Share to IRD)
  kind: action
  command: "<LOGOSYNCRD {method}>"
  params:
    - name: method
      type: string
      description: "CIFS=Windows share, NFS=Linux share"

- id: disable_bg_streaming
  label: Disable Background Streaming
  kind: action
  command: "<SET BG OFF>"
  params: []

# ===== Section 8: Commands with return value =====

- id: switch_to_tv
  label: Switch to TV Mode
  kind: action
  command: "<TTT>"
  params: []

- id: switch_to_radio
  label: Switch to Radio Mode
  kind: action
  command: "<TTR>"
  params: []

- id: change_tv_channel
  label: Change TV Channel
  kind: action
  command: "<PRT {param}>"
  params:
    - name: param
      type: string
      description: "n=channel number, u=up, d=down, =pn=exact name match, *pn=partial name match"

- id: change_radio_channel
  label: Change Radio Channel
  kind: action
  command: "<PRR {param}>"
  params:
    - name: param
      type: string
      description: "n=channel number, u=up, d=down, =pn=exact name match, *pn=partial name match"

- id: set_bg_tv_channel
  label: Set TV Channel for Background Streaming
  kind: action
  command: "<PRT BG {n}>"
  params:
    - name: n
      type: integer
      description: "Channel number (Dual Tuner IRD only)"

- id: set_bg_radio_channel
  label: Set Radio Channel for Background Streaming
  kind: action
  command: "<PRR BG {n}>"
  params:
    - name: n
      type: integer
      description: "Channel number (Dual Tuner IRD only)"

- id: cicam_ts_route
  label: Get/Set CI CAM Transport Stream Routing
  kind: action
  command: "<CICAMTSROUTE {n}>"
  params:
    - name: n
      type: string
      description: "?=get current routing, 0=Tuner1-CAM1/Tuner2-CAM2, 1=Tuner1-CAM2/Tuner2-CAM1, 2=Tuner1-CAM1-CAM2, 3=Tuner2-CAM1-CAM2 (Dual Tuner IRD only)"

- id: get_current_status
  label: Get Current Status
  kind: query
  command: "<GCS>"
  params: []

- id: get_current_mode
  label: Get Current Mode
  kind: query
  command: "<GCM>"
  params: []

- id: get_tv_channel_count
  label: Get Number of TV Channels
  kind: query
  command: "<GNT {n}>"
  params:
    - name: n
      type: string
      description: "Empty=all channels, 1-2=by tuner (Dual Tuner IRD only)"

- id: get_radio_channel_count
  label: Get Number of Radio Channels
  kind: query
  command: "<GNR {n}>"
  params:
    - name: n
      type: string
      description: "Empty=all channels, 1-2=by tuner (Dual Tuner IRD only)"

- id: get_current_channel
  label: Get Current Channel Number
  kind: query
  command: "<GCC {scope}>"
  params:
    - name: scope
      type: string
      description: "Empty=current, FG=foreground, BG=background (Dual Tuner IRD only)"

- id: get_current_program
  label: Get Current Program Name
  kind: query
  command: "<GCP {scope}>"
  params:
    - name: scope
      type: string
      description: "Empty=current, FG=foreground, BG=background (Dual Tuner IRD only)"

- id: get_current_volume
  label: Get Current Volume
  kind: query
  command: "<GCV>"
  params: []

- id: get_current_time
  label: Get Current Time
  kind: query
  command: "<GCT>"
  params: []

- id: get_channel_list
  label: Get Channel List
  kind: query
  command: "<GCL {n}>"
  params:
    - name: n
      type: string
      description: "Empty=all channels, 1-2=by tuner (Dual Tuner IRD only)"

- id: get_tv_channel_list_part
  label: Get Part of TV Channels List
  kind: query
  command: "<GCLPT {n} {m}>"
  params:
    - name: n
      type: integer
      description: "Starting program number"
    - name: m
      type: integer
      description: "Number of programs to retrieve"

- id: get_radio_channel_list_part
  label: Get Part of Radio Channels List
  kind: query
  command: "<GCLPR {n} {m}>"
  params:
    - name: n
      type: integer
      description: "Starting program number"
    - name: m
      type: integer
      description: "Number of programs to retrieve"

- id: get_extended_channel_list
  label: Get Extended Channel List
  kind: query
  command: "<GCLEXT>"
  params: []

- id: get_extended_tv_list_part
  label: Get Part of Extended TV Channels List
  kind: query
  command: "<GCLEXTPT {n} {m}>"
  params:
    - name: n
      type: integer
      description: "Starting program number"
    - name: m
      type: integer
      description: "Number of programs to retrieve"

- id: get_extended_radio_list_part
  label: Get Part of Extended Radio Channels List
  kind: query
  command: "<GCLEXTPR {n} {m}>"
  params:
    - name: n
      type: integer
      description: "Starting program number"
    - name: m
      type: integer
      description: "Number of programs to retrieve"

- id: get_pvr_records_list
  label: Get movieNET PVR Records List
  kind: query
  command: "<GRL>"
  params: []

- id: get_movies_list
  label: Get movieNET Movies List
  kind: query
  command: "<GML>"
  params: []

- id: get_audio_list
  label: Get movieNET MP3 Audio Files List
  kind: query
  command: "<GAL>"
  params: []

- id: get_pictures_list
  label: Get movieNET JPEG Pictures List
  kind: query
  command: "<GPL>"
  params: []

- id: get_internet_radio_list
  label: Get Internet Radio Stations List
  kind: query
  command: "<GIRL>"
  params: []

- id: get_current_internet_radio
  label: Get Current Internet Radio Station
  kind: query
  command: "<GIRC>"
  params: []

- id: get_teletext_status
  label: Get Teletext Status
  kind: query
  command: "<GST>"
  params: []

- id: get_teletext_page
  label: Get Current Teletext Page
  kind: query
  command: "<GPT>"
  params: []

- id: get_signal_quality
  label: Get Signal Quality and Power
  kind: query
  command: "<GSQ {scope}>"
  params:
    - name: scope
      type: string
      description: "Empty=current tuner, BG=background tuner (Dual Tuner only), 1-2=by tuner (Dual Tuner only)"

- id: get_signal_cnr
  label: Get Signal Carrier-to-Noise Ratio (dB)
  kind: query
  command: "<GSCNR {scope}>"
  params:
    - name: scope
      type: string
      description: "Empty=current tuner, BG=background tuner (Dual Tuner only), 1-2=by tuner (Dual Tuner only)"

- id: get_signal_rssi
  label: Get Signal RSSI (dBm)
  kind: query
  command: "<GSRSSI {scope}>"
  params:
    - name: scope
      type: string
      description: "Empty=current tuner, BG=background tuner (Dual Tuner only), 1-2=by tuner (Dual Tuner only)"

- id: get_signal_ber
  label: Get Signal Bit Error Rate (BER)
  kind: query
  command: "<GSBER {scope}>"
  params:
    - name: scope
      type: string
      description: "Empty=current tuner, BG=background tuner (Dual Tuner only), 1-2=by tuner (Dual Tuner only)"

- id: get_signal_fec
  label: Get DVB-S/S2 FEC (Code Rate)
  kind: query
  command: "<GSFEC {scope}>"
  params:
    - name: scope
      type: string
      description: "Empty=current tuner, BG=background tuner (Dual Tuner only), 1-2=by tuner (Dual Tuner only)"

- id: get_signal_constellation
  label: Get DVB-S/S2 Constellation
  kind: query
  command: "<GSPSK {scope}>"
  params:
    - name: scope
      type: string
      description: "Empty=current tuner, BG=background tuner (Dual Tuner only), 1-2=by tuner (Dual Tuner only)"

- id: get_signal_modulation
  label: Get Signal Modulation
  kind: query
  command: "<GSSTD {scope}>"
  params:
    - name: scope
      type: string
      description: "Empty=current tuner, BG=background tuner (Dual Tuner only), 1-2=by tuner (Dual Tuner only)"

- id: get_temperature
  label: Get Temperature from Cooler Sensors
  kind: query
  command: "<GTC {sensor}>"
  params:
    - name: sensor
      type: string
      description: "Empty or C=CPU cooler, L=left board cooler, R=right cooler"

- id: set_volume
  label: Set/Change Volume
  kind: action
  command: "<VOL {n}>"
  params:
    - name: n
      type: string
      description: "[+/-][0-100]=set/adjust absolute/relative volume, ON=mute on, OFF=mute off, ?=query current volume"

- id: set_analog_brightness
  label: Set Analog Video Brightness
  kind: action
  command: "<SBR {n}>"
  params:
    - name: n
      type: integer
      description: "Brightness 0-100"

- id: set_analog_contrast
  label: Set Analog Video Contrast
  kind: action
  command: "<SCO {n}>"
  params:
    - name: n
      type: integer
      description: "Contrast 0-100"

- id: set_analog_saturation
  label: Set Analog Video Saturation
  kind: action
  command: "<SSA {n}>"
  params:
    - name: n
      type: integer
      description: "Saturation 0-100"

- id: set_analog_sharpness
  label: Set Analog Video Sharpness
  kind: action
  command: "<SSH {n}>"
  params:
    - name: n
      type: integer
      description: "Sharpness 0-100"

- id: set_analog_hue
  label: Set Analog Video Hue
  kind: action
  command: "<SHU {n}>"
  params:
    - name: n
      type: integer
      description: "Hue 0-100"

- id: set_digital_brightness
  label: Set Digital Video Brightness
  kind: action
  command: "<SBRD {n}>"
  params:
    - name: n
      type: integer
      description: "Brightness 0-100"

- id: set_digital_contrast
  label: Set Digital Video Contrast
  kind: action
  command: "<SCOD {n}>"
  params:
    - name: n
      type: integer
      description: "Contrast 0-100"

- id: set_digital_saturation
  label: Set Digital Video Saturation
  kind: action
  command: "<SSAD {n}>"
  params:
    - name: n
      type: integer
      description: "Saturation 0-100"

- id: set_digital_sharpness
  label: Set Digital Video Sharpness
  kind: action
  command: "<SSHD {n}>"
  params:
    - name: n
      type: integer
      description: "Sharpness 0-100"

- id: get_digital_resolution
  label: Get Digital Video Output Resolution
  kind: query
  command: "<GYAR>"
  params: []

- id: get_analog_resolution
  label: Get Analog Video Output Resolution
  kind: query
  command: "<GYARAN>"
  params: []

- id: get_program_info
  label: Get Program Info
  kind: query
  command: "<GPI>"
  params: []

- id: get_transponder_info
  label: Get Current Multiplex (Transponder) Info
  kind: query
  command: "<GTI>"
  params: []

- id: get_version
  label: Get Device Firmware Version and Serial Number
  kind: query
  command: "<VER>"
  params: []

- id: get_ip_config
  label: Get IP Configuration
  kind: query
  command: "<IPC>"
  params: []

- id: get_audio_channels
  label: Get Available Audio Channels
  kind: query
  command: "<GAC>"
  params: []

- id: get_tv_epg
  label: Get EPG Events for TV Channel
  kind: query
  command: "<EVT {n}>"
  params:
    - name: n
      type: integer
      description: "TV channel number"

- id: get_radio_epg
  label: Get EPG Events for Radio Channel
  kind: query
  command: "<EVR {n}>"
  params:
    - name: n
      type: integer
      description: "Radio channel number"

- id: get_epg_description
  label: Get EPG Event Description
  kind: query
  command: "<EVDESC {n}>"
  params:
    - name: n
      type: string
      description: "Event ID from EVT or EVR command response"

- id: get_subtitles_available
  label: Get Available Subtitle Streams
  kind: query
  command: "<GSU>"
  params: []

- id: get_subtitle_selected
  label: Get Selected Subtitle Stream
  kind: query
  command: "<SUBT>"
  params: []

- id: get_osd_msgbox_x
  label: Get OSD Messagebox Horizontal Position
  kind: query
  command: "<GEXTMSGX {n}>"
  params:
    - name: n
      type: string
      description: "Query parameter (refer to SEXTMSGX command)"

- id: get_osd_msgbox_y
  label: Get OSD Messagebox Vertical Position
  kind: query
  command: "<GEXTMSGY {n}>"
  params:
    - name: n
      type: string
      description: "Query parameter (refer to SEXTMSGY command)"

- id: get_power_supply_status
  label: Get Power Supply Status
  kind: query
  command: "<GPS>"
  params: []

- id: get_set_infobar_timeout
  label: Get/Set OSD Infobar Timeout
  kind: action
  command: "<INFBTM {n}>"
  params:
    - name: n
      type: string
      description: "?=get current timeout, 0-10=set timeout in seconds"

- id: get_recording_status
  label: Get Current Recording Status
  kind: query
  command: "<REC ?>"
  params: []

- id: get_streaming_params
  label: Get IPTV Streaming Settings
  kind: query
  command: "<STREAM GET PARAM>"
  params: []

- id: get_streaming_state
  label: Get IPTV Streaming State
  kind: query
  command: "<STREAM GET STATE>"
  params: []

- id: get_streaming_channels
  label: Get IPTV Stream Programs
  kind: query
  command: "<STREAM GET CHANNELS>"
  params: []

- id: get_mux_list
  label: Get Multiplex (Transponder) List
  kind: query
  command: "<MUX LIST>"
  params: []

- id: get_mux_channels
  label: Get Channel List for Multiplex
  kind: query
  command: "<MUX GCL {s}>"
  params:
    - name: s
      type: string
      description: "Multiplex parameters string from MUX LIST command"

- id: set_mux
  label: Switch to Multiplex (Transponder)
  kind: action
  command: "<MUX SET {s}>"
  params:
    - name: s
      type: string
      description: "Multiplex parameters string from MUX LIST command"

- id: get_nfs_config
  label: Get NFS Network Drive Configuration
  kind: query
  command: "<NFS GET CONFIG {n}>"
  params:
    - name: n
      type: integer
      description: "Network Drive number 1-4"

- id: set_nfs_config
  label: Set NFS Network Drive Configuration
  kind: action
  command: "<NFS SET CONFIG {n};{s}>"
  params:
    - name: n
      type: integer
      description: "Network Drive number 1-4"
    - name: s
      type: string
      description: "Config string: type;ip;share;automount;user;pwd;mount"

- id: nfs_drive_status
  label: Get/Set NFS Network Drive Status
  kind: action
  command: "<NFS {c} {n}>"
  params:
    - name: c
      type: string
      description: "?=get status, ON=enable, OFF=disable"
    - name: n
      type: integer
      description: "Network Drive number 1-4"

- id: nfs_storage_status
  label: Get/Set NFS-Storage as PVR Default
  kind: action
  command: "<NFS DEF STORAGE {c}>"
  params:
    - name: c
      type: string
      description: "?=get status, ON=NFS-Storage PVR default, OFF=HDD-Storage PVR default"

# ===== Section 9: Special Commands =====

- id: hardware_reset
  label: Hardware Reset
  kind: action
  command: "<CR>"
  params: []

Feedbacks

# Command acknowledgment responses
- id: command_received
  type: string
  description: "#COMMAND: <CMD> - indicates the command string was received by the Receiver"

- id: command_ok
  type: string
  description: "#OK - command was performed successfully"

- id: command_error
  type: string
  description: "#ERROR: <message> - command not supported or failed"

- id: command_return_value
  type: string
  description: "#RET: <value> - return value for query commands"

- id: transmission_end
  type: string
  description: "#END - end of multi-line transmission (e.g. channel lists, EPG data)"

# Query response states
- id: power_state
  type: enum
  values: [On, Off]
  description: "From GCS query: #RET: On or #RET: Off"

- id: mode_state
  type: enum
  values: [TV, Radio]
  description: "From GCM query"

- id: teletext_status
  type: enum
  values: [On, Off]
  description: "From GST query"

- id: power_supply_status
  type: enum
  values: [on, fail]
  description: "From GPS query (redundant power supply devices only)"

- id: streaming_state
  type: enum
  values: [streaming, idle]
  description: "From STREAM GET STATE query"

Variables

- id: volume
  type: integer
  range: [0, 100]
  description: "Current volume level, set via VOL command"

- id: mute_state
  type: enum
  values: [On, Off]
  description: "Mute state, controlled via VOL ON/OFF"

- id: osd_msgbox_x
  type: integer
  range: [-1, 100]
  description: "OSD messagebox horizontal position (-1=center), set via SEXTMSGX"

- id: osd_msgbox_y
  type: integer
  range: [-1, 100]
  description: "OSD messagebox vertical position (-1=center), set via SEXTMSGY"

- id: infobar_timeout
  type: integer
  range: [0, 10]
  description: "OSD Infobar timeout in seconds, set via INFBTM"

- id: analog_brightness
  type: integer
  range: [0, 100]
  description: "Analog video brightness, set via SBR"

- id: analog_contrast
  type: integer
  range: [0, 100]
  description: "Analog video contrast, set via SCO"

- id: analog_saturation
  type: integer
  range: [0, 100]
  description: "Analog video saturation, set via SSA"

- id: analog_sharpness
  type: integer
  range: [0, 100]
  description: "Analog video sharpness, set via SSH"

- id: analog_hue
  type: integer
  range: [0, 100]
  description: "Analog video hue, set via SHU"

- id: digital_brightness
  type: integer
  range: [0, 100]
  description: "Digital video brightness, set via SBRD"

- id: digital_contrast
  type: integer
  range: [0, 100]
  description: "Digital video contrast, set via SCOD"

- id: digital_saturation
  type: integer
  range: [0, 100]
  description: "Digital video saturation, set via SSAD"

- id: digital_sharpness
  type: integer
  range: [0, 100]
  description: "Digital video sharpness, set via SSHD"

Events

# Unsolicited notifications sent by the device

- id: system_ready
  description: "#SYSTEM READY - sent when the unit has finished starting up; safe to send commands after this"
  trigger: "Power-on startup complete"

- id: boot_info
  description: "#?/text/?# - boot/application version info lines; should NOT be taken into account as command responses"
  trigger: "During boot procedure and certain moments"

- id: epg_event_notification
  description: "#EPG: <program title> - sent after current program change when enabled via NPM"
  trigger: "Program change (requires NPM 1)"

- id: tv_radio_mode_notification
  description: "#TVR: TV or #TVR: Radio - sent after TV/Radio mode change when enabled via TRM"
  trigger: "Mode change (requires TRM 1)"

- id: volume_mute_notification
  description: "#VOL: <On|Off>;<volume> - sent after volume/mute change when enabled via VLM"
  trigger: "Volume or mute state change (requires VLM 1)"

- id: channel_change_notification
  description: "#CHN: <TV|Radio>;<channel_number>;<channel_title> - sent after channel change when enabled via CPM"
  trigger: "Channel change (requires CPM 1)"

- id: power_state_notification
  description: "#PWR: On or #PWR: Off - sent after ON/OFF (Standby) state change when enabled via PWM"
  trigger: "Power state change (requires PWM 1)"

- id: alive_message
  description: "Alive message text (defined by ALM) sent with leading/trailing CR/LF pair at interval set by ALT"
  trigger: "Periodic (when ALT n > 0)"

- id: standby_message
  description: "In-standby message text (defined by SBM) sent during IRD Standby at interval set by SBT"
  trigger: "During Standby (when SBT n > 0)"

- id: power_fail_message
  description: "Power-fail message text (defined by PFM) sent during power supply failure at interval set by PFT"
  trigger: "Power supply failure (when PFT n > 0, requires redundant power supply)"

Macros

# UNRESOLVED: no multi-step command sequences described explicitly in source

Safety

confirmation_required_for:
  - hardware_reset        # <CR> causes immediate hardware-level reset via watchdog processor
  - reboot                # <REB> reboots the receiver
  - fwupdate              # <FWUPDATE CIFS/NFS> starts firmware update
interlocks:
  - description: "After switching on via Power Switch, do NOT send any commands during startup procedure. Sending data during startup can trigger Firmware update procedure. Wait until '#SYSTEM READY' is received before sending commands."
  - description: "For commands with return values (TTT, TTR, PRT, PRR, PRT BG, PRR BG, CICAMTSROUTE), no other commands should be sent until the answer (#RET: ... #OK) is received."
  - description: "Hardware-Reset command <CR> must be enclosed by carriage return characters. It is interpreted by the watchdog processor and causes an immediate reset on hardware level."

Notes

  • Protocol document revision 2.38, dated 04.02.2016.
  • Commands are ASCII strings enclosed in angle brackets: <COMMAND>. Each command starts with < and ends with >. The command is performed immediately after > is received.
  • Response protocol: the first character sent back from the Receiver is always #. The next letter indicates result: #C (command echo), #E (error), or #O (OK).
  • Unknown commands return: #COMMAND: <ABC> followed by #ERROR: Command not supported.
  • Successful commands return: #COMMAND: <ON> followed by #OK.
  • For RS-RC mode, only two of nine RS-232 pins are used (RX and TX).
  • Boot Loader always uses 115200 baud; only the application uses the baud rate set via SSS.
  • Certain commands are marked "Only for Dual Tuner IRD devices" — these apply only to dual-tuner hardware variants.
  • Remote simulation via <RMC c> uses single-character codes for each remote key (see params description).
  • Media file paths for MPLAY/MPLAYLIST use format <container>;<filename> where container is HDD1-2, NFS1-4, or INET.

Provenance

source_domains:
  - elium.de
source_urls:
  - https://elium.de/files/download/IRD_RS232_Protocol.pdf
retrieved_at: 2026-07-10T20:18:20.644Z
last_checked_at: 2026-07-12T08:59:04.004Z

Verification Summary

verdict: verified
checked_at: 2026-07-12T08:59:04.004Z
matched_actions: 154
action_count: 154
confidence: medium
summary: "All 154 spec actions match verbatim command tokens in source; transport parameters fully verified; complete protocol coverage. (6 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "firmware version compatibility not stated in source. Protocol document revision is 2.38 (dated 04.02.2016)."
- "no multi-step command sequences described explicitly in source"
- "firmware version compatibility range not stated in source"
- "exact pinout of RS-232 connector (9-pin) not specified beyond RX/TX usage"
- "whether RS-RC and NET-RC modes can operate simultaneously is not stated"
- "TCP port is configurable on server side; default is 26 but configurable range not specified"

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