RC-MM was defined by Philips to be a multi-media IR protocol to be used in wireless keyboards, mice and game pads. For these purposes the commands had to be short and have low power requirements.
Whether the protocol is actually used for these purposes today is unknown to me. What I do know is that some Nokia digital satellite receivers use the protocol (9800 series).
12 bits or 24 bits per message
Pulse position coding, sending 2 bits per IR pulse
Carrier frequency of 36kHz
Message time ranges from 3.5 to 6.5 ms, depending on data content
Repetition time 28 ms (36 messages per second)
In this diagram you see the most important transmission times. The message time is the total time of a message, counting form the beginning of the first pulse until the end of the last pulse of the message. This time can be 3.5 to 6.5 ms, depending on the data content and protocol used.
The signal free time is the time in which no signal may be sent to avoid confusion with foreign protocols on the receiver's side. Philips recommends 1 ms for normal use, or 3.36 ms when used together with RC-5 and RC-6 signals. Since you can never tell whether a user has other remote controls in use together with an RC-MM controlled device I would recommend always to use a signal free time of 3.36 ms.
The frame time is the sum of the message time and the signal free time, which can add up to just about 10 ms per message.
Finally the repetition time is the recommended repetition time of 27.778 ms, which allows 36 messages per second. This is only a recommendation and is mainly introduced to allow other devices to send their commands during the dead times.
No provision is made for data collisions between two or more remote controls! This means that there is no guarantee that the messages get across.
With this protocol a 36 kHz carrier frequency is used to transmit the pulses. This helps to increase the noise immunity at the receiver side and at the same time it reduces power dissipated by the transmitter LED. The duty cycle of the pulses is 1:3 or 1:4.
Each message is preceded by a header pulse with the duration of 416.7 µs (15 pulses of the carrier), followed by a space of 277.8 µs (10 periods of the carrier). This header is followed by 12 or 24 bits of data.
By changing the distance between the pulses two bits of data are encoded per pulse. Below you find a table with the encoding times.
Data Mark Space
0 0 166.7 µs (6 cycles) 277.8 µs (10 cycles)
0 1 166.7 µs (6 cycles) 444.4 µs (16 cycles)
1 0 166.7 µs (6 cycles) 611.1 µs (22 cycles)
1 1 166.7 µs (6 cycles) 777.8 µs (28 cycles)
RCMM comes in 3 different flavours, called modes. Each mode is intended for a particular purpose and differs mainly in the number of bits which can be used by the application. All data is sent with MSB first.
The 12 bit mode is the basic mode, and allows for 2 address bits and 8 data bits per device family. There are 3 different device families defined: keyboard, mouse and game pad.
Mode bits Device Type
0 0 Extended mode
0 1 Mouse mode
1 0 Keyboard mode
1 1 Game pad mode
The 2 address bits provide for a way to use more than 1 device simultaneously. The data bits are the actual payload data.
The 24 bit mode, also know as extended mode, allows more data to be transmitted per message. For instance for multi-lingual keyboards or a high resolution mouse.
Mode bits Device Type
0 0 0 0 OEM mode
0 0 0 1 Extended Mouse mode
0 0 1 0 Extended Keyboard mode
0 0 1 1 Extended Game pad mode
In the OEM mode the first 6 bits are always 0 0 0 0 1 1. The next 6 bits are the customer ID (OEM manufacturer). My observation showed that Nokia used the code 1 0 0 0 0 0 for their 9800 series digital satellite receivers.
Finally the last 12 bits are the actual pay load data.