Programming an IR remote for the CMX product line

The CMX product line has a very flexible IR control interface that is designed to work with all type of IR remotes.  However, since our matrix switches feature a large number of inputs, outputs, and switching modes setting up your remote can sometimes be a challenge.  This guide will help you plan and implement your remote control scheme.

You should also look at our forum to see if there is a pre programmed profile for your remote already available.  The IR section can be found at this LINK.

Step 1:  CMX mode

    The first thing you need to decide is if you will use basic mode or advanced mode.  Basic mode is much simpler to control, so it will be preferable unless you definitely need to switch your output types (component video, composite video, analog audio, digital audio) separately.  If you need to use advanced mode, you will be using most of the IR codes below.

Step 2:  Selecting required IR codes

    Next you need to figure out which IR codes you will be needing (our decision is based on the assumption you are using basic mode).  Note that the output select codes and input select codes have multiple uses based on which output type is selected.  If you need any of the functions described, you will use the IR code.

Output TYPE codes

IR Code Description Decision
0 Output type select "U"  (Component video) You will always use this except on CMX1616A
1 Output type select "A"  (Analog audio) You will only use this on CMX1616A
2 Output type select "P"  (Composite video) Will not use
3 Output type select "C"  (Coax digital audio) Will not use
4 Output type select "O"  (TOSLINK digital audio) Will not use
5 Output type select "H"  (HDMI) Will use if HMX HDMI switch connected to expansion port
6 Output type select "G"  (Volume Control) CMX1616V will not use.  All others will use ONLY IF you wish to adjust the volume on analog audio.
7 Output type select "CF"  (Configuration) You will use if you wish to power off the CMX
42 Output type select Input gain  
43 Output type select Balance  

Output SELECT codes

IR Code Output Type Description Decision
8-23 All types Output selects for outputs 1-16  (code 8 is output 1, code 23 is output 16) You will use as many of these codes as you have active outputs.  Example, CMX88 would use codes 8-15 if all 8 outputs are used.

Input SELECT codes

IR Code Output Type Description Decision
24 All types except HDMI, CF Input select for output disable You will use if you would like to disable specific outputs
25-40 All types expect G, C, O, CF Input selects for inputs 1-16 (code 25 is input 1, code 40 is input 16) You will use as many of these codes as you have active inputs.  Example, CMX88 would use codes 25-32 if all 8 inputs are used.
25-38 C, O Input selects for digital audio.  Codes 25 to 32 select digital coax inputs 1-8, and codes 33 to 38 select digital toslink inputs 1-6 You will not use (basic mode)
24 G Volume mute toggle If needed
25-39 G Volume direct selection (1 is min, 15 is max) You will use if you wish to directly control the volume of analog audio
40 G Volume up control You will use if you wish to adjust the volume of analog audio
41 G Volume down control You will use if you wish to adjust the volume of analog audio
24-38 CF Codes 24-31 set config bits to F

Codes 32-38 set config bits to O

You may use codes 25 and 33 to turn off/on the LED

You may use codes 26 and 34 to turn off/on the CMX

Optional discrete volume control codes (firmware 2.2 or higher)

IR code Description
64-79 Discrete volume ramp up   (for output IRcode-64)
80-95 Discrete volume ramp down   (for output IRcode-80)
96-111 Discrete volume mute toggle   (for output IRcode-96)
112-127 Discrete volume mute on  (for output IRcode-112)
128-143 Discrete volume mute off  (for output IRcode-128)

Special cases: 

  1. If you are using multiple CXM1616 units for > 16 outputs, you will need unique OUTPUT TYPE codes for each CMX.  The OUTPUT SELECT and INPUT SELECT codes will be the same on all CMXs, but each CMX will be uniquely identified by having different OUTPUT TYPE codes.  Generally you will use the default code for CMX#1, and then program new codes into IR CODE 0 for each of the other CMXs.  The CMX16x64 Sony profile is an example of this.

  2. For CMX1616V and CMX1616A working together, you should program the IR code 1 on the CMX1616A to be the same code as IR code 0 on the CMX1616V.  This will allow both switches to switch together from the same IR commands.


Step 3:  Zerokey or default codes

  Now you should decide if you will be using the default codes or learning codes through ZeroKey.  Default codes are easier to use, so if your remote supports one of the following methods you should use default codes:


PC programming software that allows generic HEX format codes to be loaded


PC programming software that allows loading the codes from CCF format or one of our pre programmed profiles


Your remote supports code learning and you have access to another remote that can load the HEX files

If you need to use ZeroKey, you will need to generate a component profile on your remote that has enough unique IR commands to cover all the CMX IR codes you need to use.  Refer to the manual for instructions on programming the ZeroKey codes, then write down which IR keys in your new component profile correspond to the CMX IR codes.  Please note the you cannot use ZeroKey for the optional discrete volume codes (IR codes >44). 

Step 4:  Remote macros / control scheme

    As you know, the CMX requires 3 codes for every switching function (output type, output select, input select).  The simplest way to setup your remote is just to map each IR code to a specific key and then use 3 separate key presses each time you want to switch.  However, remotes are supposed to make your life easier, right?  You will probably want to build some macros.

One good method is to setup each OUTPUT ZONE as a component on your remote.  For the CMX88, you would have 8 components.  On each component profile, you will use the numeric keys 1-8 as input selects and the Vol+ and Vol- buttons.  The macro functions behind each of the numeric keys would be (Output type "U", Output select X, Input select Y).  X is the component number, Y is the numeric key number.  For the Vol+ key the macro would be (Output type "G", Output select X, Input select 16).  Vol- key the macro would be (Output type "G", Output select X, Input select 17).  The Sony AX4000 16x16 profile is a good example of this.

Step 5:  Testing your remote

    Before testing, make sure you have setup the CMX into the correct mode (CFUF for basic, CFUO for advanced).  If you are using default codes, you should probably reset them just to be sure no ZeroKey codes are programmed (CFC for 5 seconds).  Remember that the CFC command will also reset the user mode to basic.

     If you are using Zerokey, do NOT use the CFC command since it will clear all the codes you programmed.  If you find some Zerokey codes do not function, try relearning the code or selecting a different code.

    Finally test each one of your macros to make sure everything is working.  Remember that the CMX requires that you send the output type code before any command.  If the CMX receives a IR code it does not recognize, it will ignore all codes until it receives a valid output type code.