Skip to content

IR Control Protocol

The EA-AMP-SUB-1D-500R uses NEC format infrared signaling as its sole external control interface. There is no RS-232, no serial command protocol, and no IP control. For a product designed for the Control4 / custom installation ecosystem, this is an unusual omission. IR is the only way to automate this amplifier from an external controller.

The IR input is a 3.5mm mono mini jack on the rear panel. This accepts a wired IR emitter, which is the standard approach in rack-mounted AV installations where line-of-sight IR is impractical. The IR demodulator output connects to P0.17, configured as Timer1 capture input (CAP1.2). The NEC protocol decoder runs in the Timer1 interrupt handler, measuring pulse widths to decode each bit.

The firmware’s NEC decoder (FUN_00002b40) validates the start pulse at 20,000–21,700 timer ticks, then captures 12–13 bits per command. The decoded command byte is passed to the command dispatcher (FUN_00003290), which maps it to one of 19 actions via a switch statement.

The amplifier supports four selectable device IDs, configurable through the front panel menu under IR DEVICE ID. This allows up to four EA-AMP-SUB-1D-500R units to share a single IR bus (or Control4 IR port) without command collisions. Each device ID responds to a unique set of NEC hex codes.

The firmware implements device ID selection through 4 decode table bases (indexed 0-3), set by FUN_0000288c. Changing the device ID switches which NEC code table the decoder uses, so the same physical IR command byte maps to a different action depending on the selected ID.

The command dispatcher at FUN_00003290 handles 19 commands. Every IR code ultimately maps to one of these actions:

CodeActionFirmware functionNotes
1Power OnFUN_00004004Only acts if amp is off
2Power OffFUN_00004064Enters standby
3Mute ToggleFUN_00004004 / FUN_00004830Conditional on current state
4Mute OnFUN_00004064 + FUN_00004768Power off + mute
5–6Power variants(conditional)Additional power/mute combinations
7Night Mode OnFUN_000046bc(1,1)Enables compression, saves to EEPROM
8Night Mode OffFUN_000046bc(0,1)Disables compression, saves to EEPROM
9Volume UpFUN_000044f4Adaptive step (1 normal, 2 near max)
0xAVolume DownFUN_00004568Adaptive step (2 near min, 1 normal)
0xBSound Mode cycleFUN_000045dcCycles through BYPASS/MUSIC/MOVIE
0xCPhase UpFUN_000042f0Increment with wraparound, 45° steps
0xDPhase DownFUN_000043acDecrement with wraparound
0xEVolume = 100%FUN_00004460(100)Discrete level
0xFVolume = 90%FUN_00004460(90)Discrete level
0x10Volume = 75%FUN_00004460(75)Discrete level
0x11Volume = 50%FUN_00004460(50)Discrete level
0x12Volume = 25%FUN_00004460(25)Discrete level
0x13Volume = 10%FUN_00004460(10)Discrete level

The discrete volume presets (100, 90, 75, 50, 25, 10) match the Control4 discrete IR volume command requirements. A Control4 driver can send “Power On” followed by “Volume 75%” to guarantee a known state without needing feedback from the amplifier.

The IR repeat handler (FUN_00002ffc) implements NEC repeat-code processing with special handling for continuous adjustment:

  • Initial press: 19-tick (190 ms) delay before the command takes effect
  • Repeat codes: Continuous action for Volume Up (code 9) and Volume Down (code 0xA) — holding the button on the remote produces smooth volume ramping
  • Phase commands: Codes 0xC and 0xD (phase up/down) pass through an additional bounds check (FUN_00002fb8) to prevent wraparound during held buttons