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.
Connection
Section titled “Connection”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.
NEC protocol decoding
Section titled “NEC protocol decoding”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.
Device IDs
Section titled “Device IDs”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.
Firmware-decoded command dispatch table
Section titled “Firmware-decoded command dispatch table”The command dispatcher at FUN_00003290 handles 19 commands. Every IR code ultimately maps to one of these actions:
| Code | Action | Firmware function | Notes |
|---|---|---|---|
| 1 | Power On | FUN_00004004 | Only acts if amp is off |
| 2 | Power Off | FUN_00004064 | Enters standby |
| 3 | Mute Toggle | FUN_00004004 / FUN_00004830 | Conditional on current state |
| 4 | Mute On | FUN_00004064 + FUN_00004768 | Power off + mute |
| 5–6 | Power variants | (conditional) | Additional power/mute combinations |
| 7 | Night Mode On | FUN_000046bc(1,1) | Enables compression, saves to EEPROM |
| 8 | Night Mode Off | FUN_000046bc(0,1) | Disables compression, saves to EEPROM |
| 9 | Volume Up | FUN_000044f4 | Adaptive step (1 normal, 2 near max) |
| 0xA | Volume Down | FUN_00004568 | Adaptive step (2 near min, 1 normal) |
| 0xB | Sound Mode cycle | FUN_000045dc | Cycles through BYPASS/MUSIC/MOVIE |
| 0xC | Phase Up | FUN_000042f0 | Increment with wraparound, 45° steps |
| 0xD | Phase Down | FUN_000043ac | Decrement with wraparound |
| 0xE | Volume = 100% | FUN_00004460(100) | Discrete level |
| 0xF | Volume = 90% | FUN_00004460(90) | Discrete level |
| 0x10 | Volume = 75% | FUN_00004460(75) | Discrete level |
| 0x11 | Volume = 50% | FUN_00004460(50) | Discrete level |
| 0x12 | Volume = 25% | FUN_00004460(25) | Discrete level |
| 0x13 | Volume = 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.
Repeat and debounce behavior
Section titled “Repeat and debounce behavior”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