Summary

The DIDO Jr. is an Aurora Multimedia video-wall / multi-window image processor and scaler (DVI/RGB/S-Video inputs, scaled DVI/RGB output). This spec covers its RS-232 control protocol (also carried over RS-485 for unit chaining). The device is addressable (000–254, with 255/*** as broadcast) so multiple units can share one serial bus. Commands use an ASCII !/?/~ prefixed format terminated by <CR> (0x0D).

Transport

protocols:
  - serial
serial:
  baud_rate: 115200      # source: "115k 8N1 (Default)"; selectable 2400-115k
  baud_rate_selectable: UNRESOLVED  # source states only the range 2400-115k, not the discrete steps
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: UNRESOLVED  # flow control not explicitly stated by "8N1"
  connector: "9-pin to 6-pin mini-DIN RS-232 NULL cable (manufacturer-supplied)"
  pinout_rs232:
    1: Ground
    3: TX
    5: RX
  pinout_rs485:          # used for looping multiple units
    1: Ground
    4: "485+"
    6: "485-"
auth:
  type: UNRESOLVED  # source does not state this (was inferred none: no login/password/auth procedure in source)

Command format (verbatim from source): [Prefix][Address][Command][n][m][<CR>]

  • Prefix: ! = command, ? = query, ~ = response
  • Address: 3 ASCII digits 000–254, or *** / 255 for broadcast
  • <CR> = 0x0D (decimal 13)
  • Responses are always UPPERCASE; commands/queries are not case-sensitive.
  • {addr} in command templates below = the 3-digit target unit address (or *** for broadcast).

Traits

traits:
  - powerable    # inferred: POWERON / POWEROFF / KEY_POWER commands present
  - routable     # inferred: WINDOW n m, input-select (KEY_A_DVI / KEY_A_RGB / KEY_A_VIDEO), SWAPIN / SWAPWIN
  - queryable    # inferred: 25 documented query commands
  - levelable    # inferred: BRIGHTNESS / CONTRAST / SATURATION / HUE / position / size continuous params (0-1000)

Actions

# Command template: "!{addr}<COMMAND>[ <n>][ <m>]<CR>" - see Transport for {addr} and <CR>.
# kind: action  = a `!` command;  kind: query = a `?` query (response is a `~` line, see Feedbacks).
# Entries marked "Not Available" are documented command rows the source explicitly flags as
# non-functional on the DIDO Jr.; the opcode is recognized by the protocol but performs no operation.

# --- IR-equivalent key commands (KEY_*) ---
- id: key_p1
  label: Preset 1
  kind: action
  command: "!{addr}KEY_P1<CR>"
  params: []
- id: key_p2
  label: Preset 2
  kind: action
  command: "!{addr}KEY_P2<CR>"
  params: []
- id: key_p3
  label: Preset 3
  kind: action
  command: "!{addr}KEY_P3<CR>"
  params: []
- id: key_p4
  label: Preset 4
  kind: action
  command: "!{addr}KEY_P4<CR>"
  params: []
- id: key_num0
  label: Number 0
  kind: action
  command: "!{addr}KEY_NUM0<CR>"
  params: []
- id: key_num1
  label: Number 1
  kind: action
  command: "!{addr}KEY_NUM1<CR>"
  params: []
- id: key_num2
  label: Number 2
  kind: action
  command: "!{addr}KEY_NUM2<CR>"
  params: []
- id: key_num3
  label: Number 3
  kind: action
  command: "!{addr}KEY_NUM3<CR>"
  params: []
- id: key_num4
  label: Number 4
  kind: action
  command: "!{addr}KEY_NUM4<CR>"
  params: []
- id: key_num5
  label: Number 5
  kind: action
  command: "!{addr}KEY_NUM5<CR>"
  params: []
- id: key_num6
  label: Number 6
  kind: action
  command: "!{addr}KEY_NUM6<CR>"
  params: []
- id: key_num7
  label: Number 7
  kind: action
  command: "!{addr}KEY_NUM7<CR>"
  params: []
- id: key_num8
  label: Number 8
  kind: action
  command: "!{addr}KEY_NUM8<CR>"
  params: []
- id: key_num9
  label: Number 9
  kind: action
  command: "!{addr}KEY_NUM9<CR>"
  params: []
- id: key_left
  label: Left Arrow
  kind: action
  command: "!{addr}KEY_LEFT<CR>"
  params: []
- id: key_right
  label: Right Arrow
  kind: action
  command: "!{addr}KEY_RIGHT<CR>"
  params: []
- id: key_up
  label: Up Arrow
  kind: action
  command: "!{addr}KEY_UP<CR>"
  params: []
- id: key_down
  label: Down Arrow
  kind: action
  command: "!{addr}KEY_DOWN<CR>"
  params: []
- id: key_sel
  label: Select
  kind: action
  command: "!{addr}KEY_SEL<CR>"
  params: []
- id: key_menu
  label: Menu
  kind: action
  command: "!{addr}KEY_MENU<CR>"
  params: []
- id: key_exit
  label: Exit
  kind: action
  command: "!{addr}KEY_EXIT<CR>"
  params: []
- id: key_power
  label: Power Toggle
  kind: action
  command: "!{addr}KEY_POWER<CR>"
  params: []
- id: key_mute
  label: Mute (Not Available)
  kind: action
  command: "!{addr}KEY_MUTE<CR>"
  params: []
  description: "Source marks this function 'Not Available' for DIDO Jr."
- id: key_info
  label: Information
  kind: action
  command: "!{addr}KEY_INFO<CR>"
  params: []
- id: key_rotate
  label: Rotate
  kind: action
  command: "!{addr}KEY_ROTATE<CR>"
  params: []
- id: key_zoom
  label: Zoom
  kind: action
  command: "!{addr}KEY_ZOOM<CR>"
  params: []
- id: key_crop
  label: Crop
  kind: action
  command: "!{addr}KEY_CROP<CR>"
  params: []
- id: key_pos
  label: Position
  kind: action
  command: "!{addr}KEY_POS<CR>"
  params: []
- id: key_size
  label: Size
  kind: action
  command: "!{addr}KEY_SIZE<CR>"
  params: []
- id: key_a_dvi
  label: DVI Input (Channel A)
  kind: action
  command: "!{addr}KEY_A_DVI<CR>"
  params: []
- id: key_a_rgb
  label: RGB Input (Channel A)
  kind: action
  command: "!{addr}KEY_A_RGB<CR>"
  params: []
- id: key_a_video
  label: Video/SVideo Input (Channel A)
  kind: action
  command: "!{addr}KEY_A_VIDEO<CR>"
  params: []
- id: key_b_dvi
  label: DVI Input (Channel B) - Not Available
  kind: action
  command: "!{addr}KEY_B_DVI<CR>"
  params: []
  description: "Source marks this function 'Not Available' for DIDO Jr."
- id: key_b_rgb
  label: RGB Input (Channel B) - Not Available
  kind: action
  command: "!{addr}KEY_B_RGB<CR>"
  params: []
  description: "Source marks this function 'Not Available' for DIDO Jr."
- id: key_b_video
  label: Video Input (Channel B) - Not Available
  kind: action
  command: "!{addr}KEY_B_VIDEO<CR>"
  params: []
  description: "Source marks this function 'Not Available' for DIDO Jr."
- id: key_single
  label: Single Mode
  kind: action
  command: "!{addr}KEY_SINGLE<CR>"
  params: []
- id: key_dual
  label: Dual Mode
  kind: action
  command: "!{addr}KEY_DUAL<CR>"
  params: []
- id: key_tri
  label: Triple Mode - Not Available
  kind: action
  command: "!{addr}KEY_TRI<CR>"
  params: []
  description: "Source marks this function 'Not Available' for DIDO Jr."
- id: key_quad
  label: Quad Mode - Not Available
  kind: action
  command: "!{addr}KEY_QUAD<CR>"
  params: []
  description: "Source marks this function 'Not Available' for DIDO Jr."
- id: key_freeze
  label: Freeze
  kind: action
  command: "!{addr}KEY_FREEZE<CR>"
  params: []
- id: key_swap
  label: Swap Window Sources
  kind: action
  command: "!{addr}KEY_SWAP<CR>"
  params: []

# --- Setup / system commands ---
- id: setdefault
  label: Factory Defaults
  kind: action
  command: "!{addr}SETDEFAULT<CR>"
  params: []
- id: preset_recall
  label: Recall Preset
  kind: action
  command: "!{addr}PRESET {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Preset slot, 00-99"
- id: preset_store
  label: Store Preset
  kind: action
  command: "!{addr}S_PRESET {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Preset slot, 00-99"
- id: rsaddr_set
  label: Set Unit Address
  kind: action
  command: "!{addr}RSADDR {n}<CR>"
  params:
    - name: n
      type: string
      description: "Unit address, 000-254 (or '***'/255 for broadcast)"
- id: window_select
  label: Select Window Input
  kind: action
  command: "!{addr}WINDOW {n} {m}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
    - name: m
      type: string
      description: "Input source - DVI_A, RGB_A, or SVIDEO_A"
- id: rotate_output
  label: Rotate Output
  kind: action
  command: "!{addr}ROTATE {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Rotation index 0-3; degrees = 90 × n"
- id: layout_set
  label: Set Layout
  kind: action
  command: "!{addr}LAYOUT {m}<CR>"
  params:
    - name: m
      type: string
      description: "Layout - single, dual, pip, or sbs"
- id: outformat_set
  label: Set Output Resolution
  kind: action
  command: "!{addr}OUTFORMAT {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Output resolution index 0-32 (see resolution table in Notes)"
- id: hposit_set
  label: Set Horizontal Position
  kind: action
  command: "!{addr}HPOSIT {n} {m}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
    - name: m
      type: integer
      description: "Position value, 0-1000"
- id: vposit_set
  label: Set Vertical Position
  kind: action
  command: "!{addr}VPOSIT {n} {m}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
    - name: m
      type: integer
      description: "Position value, 0-1000"
- id: hsize_set
  label: Set Horizontal Size
  kind: action
  command: "!{addr}HSIZE {n} {m}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
    - name: m
      type: integer
      description: "Size value, 0-1000"
- id: vsize_set
  label: Set Vertical Size
  kind: action
  command: "!{addr}VSIZE {n} {m}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
    - name: m
      type: integer
      description: "Size value, 0-1000"
- id: swapin
  label: Swap Inputs (Window 1 and 2)
  kind: action
  command: "!{addr}SWAPIN<CR>"
  params: []
- id: reconfig
  label: Reconfigure DIDO Jr.
  kind: action
  command: "!{addr}RECONFIG<CR>"
  params: []
- id: hpositpip_set
  label: Set PIP Horizontal Position
  kind: action
  command: "!{addr}HPOSITPIP {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Position value, 0-1000"
- id: vpositpip_set
  label: Set PIP Vertical Position
  kind: action
  command: "!{addr}VPOSITPIP {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Position value, 0-1000"
- id: hsizepip_set
  label: Set PIP Horizontal Size
  kind: action
  command: "!{addr}HSIZEPIP {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Size value, 0-1000"
- id: vsizepip_set
  label: Set PIP Vertical Size
  kind: action
  command: "!{addr}VSIZEPIP {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Size value, 0-1000"
- id: rgbsync_set
  label: Set RGB/YPbPr Sync Type
  kind: action
  command: "!{addr}RGBSYNC {n} {m}<CR>"
  params:
    - name: n
      type: string
      description: "Channel - source documents only 'A'"
    - name: m
      type: string
      description: "Sync type - HV, SOG, or YPRPB"
- id: swapwin
  label: Swap Windows (sbs / pip only)
  kind: action
  command: "!{addr}SWAPWIN<CR>"
  params: []
- id: poweron
  label: Power On
  kind: action
  command: "!{addr}POWERON<CR>"
  params: []
- id: poweroff
  label: Power Off
  kind: action
  command: "!{addr}POWEROFF<CR>"
  params: []

# --- Audio commands (all flagged 'Not Available' in source for DIDO Jr.) ---
- id: muteon
  label: Mute On - Not Available
  kind: action
  command: "!{addr}MUTEON<CR>"
  params: []
  description: "Source marks this function 'Not Available' for DIDO Jr."
- id: muteoff
  label: Mute Off - Not Available
  kind: action
  command: "!{addr}MUTEOFF<CR>"
  params: []
  description: "Source marks this function 'Not Available' for DIDO Jr."
- id: volume_up
  label: Volume Up - Not Available
  kind: action
  command: "!{addr}VOLUME+<CR>"
  params: []
  description: "Source marks this function 'Not Available' for DIDO Jr."
- id: volume_down
  label: Volume Down - Not Available
  kind: action
  command: "!{addr}VOLUME-<CR>"
  params: []
  description: "Source marks this function 'Not Available' for DIDO Jr."
- id: volume_set
  label: Set Volume - Not Available
  kind: action
  command: "!{addr}VOLUME {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Value in percent"
  description: "Source marks this function 'Not Available' for DIDO Jr."
- id: audioinput_set
  label: Set Audio Input - Not Available
  kind: action
  command: "!{addr}AUDIOINPUT {n}<CR>"
  params:
    - name: n
      type: string
      description: "SOUND_A, SOUND_B, SPDIF_A, or SPDIF_B"
  description: "Source marks this function 'Not Available' for DIDO Jr."
- id: audiooutput_set
  label: Set Audio Output - Not Available
  kind: action
  command: "!{addr}AUDIOOUTPUT {n}<CR>"
  params:
    - name: n
      type: string
      description: "ANALOG or SPDIF"
  description: "Source marks this function 'Not Available' for DIDO Jr."
- id: audiodelay_set
  label: Set Audio Delay - Not Available
  kind: action
  command: "!{addr}AUDIODELAY {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Value in percent"
  description: "Source marks this function 'Not Available' for DIDO Jr."

# --- OSD / display / image commands ---
- id: osdtrans_set
  label: Set OSD Translucency
  kind: action
  command: "!{addr}OSDTRANS {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Value in percent"
- id: piptrans_set
  label: Set PIP Translucency
  kind: action
  command: "!{addr}PIPTRANS {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Value in percent"
- id: adccalibr
  label: A/D RGB Auto Calibration
  kind: action
  command: "!{addr}ADCCALIBR<CR>"
  params: []
- id: freeze_set
  label: Set Output Freeze
  kind: action
  command: "!{addr}FREEZE {n}<CR>"
  params:
    - name: n
      type: integer
      description: "0 = off, 1 = on"
- id: brightness_set
  label: Set Brightness
  kind: action
  command: "!{addr}BRIGHTNESS {n}<CR>"
  params:
    - name: n
      type: integer
      description: "0-1000"
- id: contrast_set
  label: Set Contrast
  kind: action
  command: "!{addr}CONTRAST {n}<CR>"
  params:
    - name: n
      type: integer
      description: "0-1000"
- id: saturation_set
  label: Set Saturation
  kind: action
  command: "!{addr}SATURATION {n}<CR>"
  params:
    - name: n
      type: integer
      description: "0-1000"
- id: hue_set
  label: Set Hue
  kind: action
  command: "!{addr}HUE {n}<CR>"
  params:
    - name: n
      type: integer
      description: "0-1000"
- id: zoom_set
  label: Set Zoom
  kind: action
  command: "!{addr}ZOOM {n} {m}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
    - name: m
      type: integer
      description: "Zoom value, 0-1000"
- id: cropleft_set
  label: Set Crop Left
  kind: action
  command: "!{addr}CROPLEFT {n} {m}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
    - name: m
      type: integer
      description: "Pixels"
- id: cropright_set
  label: Set Crop Right
  kind: action
  command: "!{addr}CROPRIGHT {n} {m}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
    - name: m
      type: integer
      description: "Pixels"
- id: croptop_set
  label: Set Crop Top
  kind: action
  command: "!{addr}CROPTOP {n} {m}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
    - name: m
      type: integer
      description: "Pixels"
- id: cropbottom_set
  label: Set Crop Bottom
  kind: action
  command: "!{addr}CROPBOTTOM {n} {m}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
    - name: m
      type: integer
      description: "Pixels"
- id: cropsave
  label: Save Crop Settings
  kind: action
  command: "!{addr}CROPSAVE {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
- id: cropreset
  label: Reset Crop Settings
  kind: action
  command: "!{addr}CROPRESET {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
- id: osdon
  label: OSD On
  kind: action
  command: "!{addr}OSDON<CR>"
  params: []
- id: osdoff
  label: OSD Off
  kind: action
  command: "!{addr}OSDOFF<CR>"
  params: []
- id: verflipon
  label: Vertical Flip On
  kind: action
  command: "!{addr}VERFLIPON<CR>"
  params: []
- id: verflipoff
  label: Vertical Flip Off
  kind: action
  command: "!{addr}VERFLIPOFF<CR>"
  params: []
- id: horflipon
  label: Horizontal Flip On
  kind: action
  command: "!{addr}HORFLIPON<CR>"
  params: []
- id: horflipoff
  label: Horizontal Flip Off
  kind: action
  command: "!{addr}HORFLIPOFF<CR>"
  params: []
  description: "Source function-column has a typo ('HORIZONTAL FLIP ON'); mnemonic HORFLIPOFF = flip off."
- id: stack_set
  label: Set Stack Direction
  kind: action
  command: "!{addr}STACK {n}<CR>"
  params:
    - name: n
      type: string
      description: "UD (up/down) or LR (left/right)"

# --- Query commands (kind: query). Send with '?' prefix; response '~' line (see Feedbacks). ---
- id: rsaddr_query
  label: Query Address
  kind: query
  command: "?{addr}RSADDR<CR>"
  params: []
- id: outformat_query
  label: Query Output Format
  kind: query
  command: "?{addr}OUTFORMAT<CR>"
  params: []
- id: hposit_query
  label: Query Horizontal Position
  kind: query
  command: "?{addr}HPOSIT {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
- id: vposit_query
  label: Query Vertical Position
  kind: query
  command: "?{addr}VPOSIT {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
- id: hsize_query
  label: Query Horizontal Size
  kind: query
  command: "?{addr}HSIZE {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
- id: vsize_query
  label: Query Vertical Size
  kind: query
  command: "?{addr}VSIZE {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
- id: hpositpip_query
  label: Query PIP Horizontal Position
  kind: query
  command: "?{addr}HPOSITPIP<CR>"
  params: []
- id: vpositpip_query
  label: Query PIP Vertical Position
  kind: query
  command: "?{addr}VPOSITPIP<CR>"
  params: []
- id: hsizepip_query
  label: Query PIP Horizontal Size
  kind: query
  command: "?{addr}HSIZEPIP<CR>"
  params: []
- id: vsizepip_query
  label: Query PIP Vertical Size
  kind: query
  command: "?{addr}VSIZEPIP<CR>"
  params: []
- id: ver_query
  label: Query Firmware Version
  kind: query
  command: "?{addr}VER<CR>"
  params: []
- id: preset_query
  label: Query Current Preset
  kind: query
  command: "?{addr}PRESET<CR>"
  params: []
- id: volume_query
  label: Query Volume - Not Available
  kind: query
  command: "?{addr}VOLUME<CR>"
  params: []
  description: "Source marks this query 'Not available'."
- id: brightness_query
  label: Query Brightness
  kind: query
  command: "?{addr}BRIGHTNESS<CR>"
  params: []
- id: contrast_query
  label: Query Contrast
  kind: query
  command: "?{addr}CONTRAST<CR>"
  params: []
- id: saturation_query
  label: Query Saturation
  kind: query
  command: "?{addr}SATURATION<CR>"
  params: []
- id: hue_query
  label: Query Hue
  kind: query
  command: "?{addr}HUE<CR>"
  params: []
- id: zoom_query
  label: Query Zoom
  kind: query
  command: "?{addr}ZOOM {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
- id: info_query
  label: Query Full Info
  kind: query
  command: "?{addr}INFO<CR>"
  params: []
- id: cropleft_query
  label: Query Crop Left Pixels
  kind: query
  command: "?{addr}CROPLEFT {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
- id: cropright_query
  label: Query Crop Right Pixels
  kind: query
  command: "?{addr}CROPRIGHT {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
- id: croptop_query
  label: Query Crop Top Pixels
  kind: query
  command: "?{addr}CROPTOP {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
- id: cropbottom_query
  label: Query Crop Bottom Pixels
  kind: query
  command: "?{addr}CROPBOTTOM {n}<CR>"
  params:
    - name: n
      type: integer
      description: "Window number, 1 or 2"
- id: flip_query
  label: Query Flip Mode
  kind: query
  command: "?{addr}FLIP<CR>"
  params: []
- id: stack_query
  label: Query Stack Mode
  kind: query
  command: "?{addr}STACK<CR>"
  params: []

# --- Documented PC utility commands; run on the PC, not as ASCII device commands. ---
- id: firmware_update
  label: Update Firmware
  kind: action
  command: "DIDOldr.exe {port} {firmware_file}"
  params:
    - name: port
      type: integer
      description: "COM port used to program the DIDO Jr.; source examples use 1 and 2. UNRESOLVED: allowed port range."
    - name: firmware_file
      type: string
      description: "Source: 'firmware (this file name can be anything such as DIDOJr040916.did)'."
  description: "PC firmware loader. Source examples: 'DIDOldr.exe 1 DIDO.did' and 'DIDOldr.exe 1 DIDOJr.did'. Requires baud rate 115k, unit address 0, settings backup, and firmware compatible with the hardware revision."
- id: clone_learn
  label: Download Clone Settings
  kind: action
  command: "CloneLdr.exe COM{port} /l {file_name}"
  params:
    - name: port
      type: integer
      description: "Source: 'COM[Port#]: serial port (such as 1 or 2) that is used for cloning.' UNRESOLVED: allowed port range."
    - name: file_name
      type: string
      description: "Source: 'File_Name.par: name of the file that will be used to store data from DIDO Jr.' UNRESOLVED: filename constraints."
  description: "PC clone utility. Source command: 'CloneLdr.exe COM[Port#] /l File_Name.par'. '/l: loading data from DIDO Jr. to the computer.'"
- id: clone_teach
  label: Upload Clone Settings
  kind: action
  command: "CloneLdr.exe COM{port} /s {file_name}"
  params:
    - name: port
      type: integer
      description: "Source: 'COM[Port#]: serial port (such as 1 or 2) that is used for cloning.' UNRESOLVED: allowed port range."
    - name: file_name
      type: string
      description: "Source: 'File_Name.par: name of the file that will be used to store data from DIDO Jr.' UNRESOLVED: filename constraints."
  description: "PC clone utility. Source command: 'CloneLdr.exe COM[Port#] /s File_Name.par'. '/s: sending data from computer to the DIDO Jr.'"

Feedbacks

# All responses are UPPERCASE, prefixed '~', terminated by <CR>.
- id: command_ack
  type: string
  description: "Acknowledgement returned after each command before the next may be sent."
  format: "~{addr} OK {string}<CR>"
- id: error
  type: string
  description: "Invalid-command reply. Source: emitted only when address is zero."
  format: "~ERROR<CR>"
- id: query_response
  type: string
  description: "Generic query echo/response - command mnemonic echoed with its variable value(s)."
  format: "~{addr}{COMMAND} {value}<CR>"
- id: info_response
  type: string
  description: "Multi-field status line returned by INFO query; '#'-prefixed fields, content varies by windows/sources/resolutions."
  example: "# Window: 1 # Input : DVI_B, SXGA 60Hz, 1280x1024 # Window: 2 # Input : RGB+HV, no signal # Mode : SbS # Rotate: No # Output: XGA 60Hz, 1024x768, DVI/RGB+HV, # DIDO Jr. address : 0 # Version: 1.11, Rev: 8649, Date: 29-Aug-2005"
  query_command: "?{addr}INFO<CR>"
# UNRESOLVED: per-field enum/value tables for each query response are not exhaustively tabulated in source beyond the INFO example.

Variables

# Settable continuous parameters. Each is written via a corresponding action above
# (e.g. brightness_set) and read via its query (e.g. brightness_query). Ranges from source:
- id: brightness
  type: integer
  range: [0, 1000]
- id: contrast
  type: integer
  range: [0, 1000]
- id: saturation
  type: integer
  range: [0, 1000]
- id: hue
  type: integer
  range: [0, 1000]
- id: window_position      # applies to HPOSIT/VPOSIT/HSIZE/VSIZE per window 1..2
  type: integer
  range: [0, 1000]
- id: pip_geometry         # applies to HPOSITPIP/VPOSITPIP/HSIZEPIP/VSIZEPIP
  type: integer
  range: [0, 1000]
- id: osd_translucency
  type: integer
  unit: percent
- id: pip_translucency
  type: integer
  unit: percent
# UNRESOLVED: exact percent range bounds for OSDTRANS / PIPTRANS not stated (source: "value in percent").

Events

# No unsolicited notifications documented; the device only responds to commands.
# UNRESOLVED: source contains no asynchronous/event-push definitions.

Macros

# No device-side command sequences documented. Firmware update and unit cloning are
# PC-side utilities (DIDOldr.exe / CloneLdr.exe), not DIDO Jr. command macros.
# UNRESOLVED: no macro sequences documented in source.

Safety

confirmation_required_for:
  - setdefault        # factory defaults reset
  - rsaddr_set        # changes bus addressing; can desync multi-unit control
  - preset_store      # overwrites a stored preset slot
interlocks:
  - id: rs485_termination
    description: "When chaining multiple units over RS-485, the LAST unit in the chain must have RS-485 Termination enabled."
  - id: firmware_update_preconditions
    description: "Firmware update requires baud rate 115200 and unit address 0; back up settings before updating."
  - id: firmware_update_recovery
    description: "If a firmware transfer is interrupted, cycle power on the DIDO Jr. and wait 30 seconds after re-applying power before restarting the transfer. A blank LCD during this state is normal."
  - id: command_pacing
    description: "Do not send the next command until the '~{addr} OK' acknowledgement is received. Preset load/save and source changes are the slowest operations and may cause subsequent commands to be ignored if sent too early."
  - id: usb_rs232_warning
    description: "Source advises against using a USB-to-RS-232 adapter for firmware update or cloning (may not work properly)."
# No electrical/voltage interlocks documented in this source excerpt.

Notes

  • Device class: multi-window video processor / scaler / video-wall controller. Inputs: 1× DVI-I (DVI-D + RGBHV/YPbPr) and 1× S-Video (4-pin mini-DIN). Output: scaled DVI/RGB.

  • Addressing: every command embeds a 3-digit address (000–254, or ***/255 broadcast). {addr} in the command templates above is this 3-digit field. Set a unit's address with RSADDR n or via the on-device System Settings; the IR remote is also addressable to limit cross-talk between co-located DIDO Jr. units.

  • Wire format: <CR> = 0x0D. Responses are UPPERCASE; !/? are not case-sensitive.

  • Multi-unit chaining: first unit talks RS-232 to the controller; its RS-485 (+/−/GND) loops in parallel to all other units' RS-485 ports. Aurora sells a "DIDO LOOP KIT" for this. Each chained unit needs a unique address (0, 1, 2, …) and the last unit needs termination enabled.

  • Output resolution table (OUTFORMAT n) — verbatim from source:

    n resolution n resolution n resolution
    0 VGA 60Hz 11 SXGA 60Hz 22 USER 02
    1 VGA 72Hz 12 SXGA 75Hz 23 USER 03
    2 VGA 75Hz 13 SXGA 85Hz 24 USER 04
    3 SVGA 60Hz 14 WXGA 60Hz 25 USER 05
    4 SVGA 72Hz 15 UXGA 60Hz 26 USER 06
    5 SVGA 75Hz 16 WVGA 60Hz 27 USER 07
    6 XGA 60Hz (806 px) 17 480P 28 USER 08
    7 XGA 60Hz (807 px) 18 576P 29 USER 09
    8 XGA 70Hz 19 720P 30 USER 10
    9 XGA 75Hz 20 1080P 31 (unused)
    10 XGA 85Hz 21 USER 01 32 (unused)
  • WINDOW n m valid inputs (m): DVI_A, RGB_A, SVIDEO_A (channel B inputs are documented but flagged Not Available on this model).

  • "Not Available" rows: the source command table lists audio (MUTE/VOLUME/AUDIOINPUT/AUDIOOUTPUT/AUDIODELAY) and channel-B input commands and explicitly marks them "Not Available" for the DIDO Jr. They are retained here as documented protocol opcodes; treat as no-ops on this hardware.

  • Numeric responses: source notes that multi-digit ASCII decimal responses must be converted to a true hexadecimal value for bit-field decoding (e.g. ASCII 13 → 0x0D).

  • Firmware compatibility: check the serial-number batch prefix (bbbb-SNxxxx) against the firmware's supported hardware revision before flashing; some features depend on model/batch.

Provenance

source_domains:
  - markertek.com
source_urls:
  - https://www.markertek.com/Attachments/Manuals/AURORA/DIDOJR-Manual.pdf
retrieved_at: 2026-07-25T19:27:35.019Z
last_checked_at: 2026-10-07T13:35:08.599Z

Verification Summary

verdict: verified
checked_at: 2026-10-07T13:35:08.599Z
matched_actions: 122
action_count: 122
confidence: medium
summary: "All 122 action units match source commands, transport supported, source catalogue fully covered. (12 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "source is the RS-232 protocol chapter only; no voltage/power specs, no mechanical drawings, no full firmware compatibility matrix. Marketing/connector specs beyond the control port are out of scope."
- "allowed port range.\""
- "filename constraints.\""
- "per-field enum/value tables for each query response are not exhaustively tabulated in source beyond the INFO example."
- "exact percent range bounds for OSDTRANS / PIPTRANS not stated (source: \"value in percent\")."
- "source contains no asynchronous/event-push definitions."
- "no macro sequences documented in source."
- "discrete baud-rate steps within 2400–115200 not enumerated (only the range and 115200 default are stated)."
- "exact percent bounds for OSDTRANS / PIPTRANS not stated."
- "per-query response value tables (other than INFO) not exhaustively tabulated in source."
- "flow control not explicitly stated by \"8N1\"."
- "no firmware version compatibility range stated (single INFO sample reports v1.11 / Rev 8649 / 2005-08-29)."

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