Source: © 2001, San Bergmans, Oisterwijk, The Netherlands
http://www.sbprojects.com/

Philips RC-6 Protocol

RC-6 is, as may be expected, the successor of the RC-5 protocol. Like RC-5 the new RC-6 protocol was also defined by Philips. It is a very versatile and well defined protocol. Because of this versatility its original definition is many pages long. Here on my page I will only summarize the most important properties of this protocol.

Features
  • Different modes of operation, depending on the intended use
  • Dedicated Philips modes and OEM modes
  • Variable command length, depending on the operation mode
  • Bi-phase coding (aka Manchester coding)
  • Carrier frequency of 36kHz
  • Manufacturer Philips
Operating Modes

The RC-6 protocol can use a variety of different operating modes which can be found in the table below. I will only describe the operation of modes M0 and M6A on this page because these are the most interesting and most commonly used modes of operation.

Mode Mode Name
0 Command Mode (Philips mode)
1A String mode (without Acknowledge)
1B String mode (with Acknowledge)
2A Pointing device mode (A)
2B For Future Use
3 For Future Use
4 For Future Use
5 Professional mode
6A OEM command mode
6B OEM Pointing device mode
7 For Future Use

Some or all of the modes designated with "For Future Use" may have been defined by now because my information was created back in 1999.

Modulation

RC-6 signals are modulated on a 36 kHz Infra Red carrier. The duty cycle of this carrier has to be between 25% and 50%.

Data is modulated using Manchester coding. This means that each bit (or symbol) will have both a mark and space in the output signal. If the symbol is a "1" the first half of the bit time is a mark and the second half is a space. If the symbol is a "0" the first half of the bit time is a space and the second half is a mark.
Please note that this is the opposite of the RC-5 protocol!

The main timing unit is 1t, which is 16 times the carrier period (1/36k * 16 = 444�s).

With RC-6 a total of 5 different symbols are defined:

  • The leader pulse, which has a mark time of 6t (2.666ms) and a space time of 2t (0.889ms). This leader pulse is normally used to set the gain of the IR receiver unit.
    RC-6 Leader pulse
  • Normal bits, which have a mark time of 2t (0.889ms) and space time of 2t (0.889ms). A "0" and "1" are encoded by the position of the mark and space in the bit time.
    RC-6 normal bits
  • Trailer bits, which have a mark time of 4t (1.778ms) and a space time of 4t (1.778ms). Again a "0" and "1" are encoded by the position of the mark and space in the bit time.
    RC-6 trailer bits

The leader and trailer symbols are only used in the header field of the messages, which will be explained in more detail below.

RC-6 Mode 0

Mode 0 is a dedicated Philips Consumer Electronics mode. It allows control of up to 256 independent devices, with a total of 256 commands per device.

RC-6 Mode 0

The command is a concatenation of different information. I will cover these different components from left to right.

Header field

The Header field consists of 3 different components.

  • First the leader symbol LS is transmitted. Its purpose is to adjust the gain of the IR receiving unit.
  • This leader symbol is followed by a start bit SB which always has the value "1". Its purpose is to calibrate the receiver's timing.
  • The mode bits mb2 ... mb0 determine the mode, which is 0 in this case, thus all three bits will be "0".
  • Finally the header is terminated by the trailer bit TR. Please note that the bit time of this symbol is twice as long as normal bits! This bit also serves as the traditional toggle bit, which will be inverted whenever a key is released. This allows the receiver to distinguish between a new key or a repeated key.

Control Field

This field holds 8 bits which are used as address byte. This means that a total of 256 different devices can be controlled using mode 0 of RC-6.
The msb is transmitted first.

Information Field

The information field holds 8 bits which are used as command byte. This means that each device can have up to 256 different commands.
The msb is transmitted first.

Signal Free Time

The Signal Free time is a period in which no data may be transmitted (by any device). It is important for the receiver to detect the signal free time at the end of a message to avoid incorrect reception.
The signal free time is set to 6t, which is 2.666ms.

RC-6 Mode 6A

Mode 6A is the so called OEM mode, dedicated for non Philips consumer equipment. It is officially called "General Application Mode 6A". It allows up to 32896 different OEM customer. Each OEM customer may define their own Information field, so you can expect the RC-6 protocol in mode 6A to differ from application to application.

RC-6 Mode 6A

This picture shows 2 different messages. The upper message uses a Short Customer Code of one byte, while the lower messages uses a Long Customer Code of two bytes.
Commands in mode 6A are a concatenation of different information. I will cover these different components from left to right.

Header field

The Header field consists of 3 different components.

  • First the leader symbol LS is transmitted. Its purpose is to adjust the gain of the IR receiving unit.
  • This leader symbol is followed by a start bit SB which always has the value "1". Its purpose is to calibrate the receiver's timing.
  • The mode bits mb2 ... mb0 determine the mode, which is 6 in this case, or "110" in binary notation.
  • Finally the header is terminated by the trailer bit TR, which again has a bit time which is twice as long as normal bits. In mode 6 this bit is used as a submode bit, which is "0" for mode 6A.
    Please note that in this case the TR bit officially looses its traditional toggle bit function. I don't think anyone would mind if you did use at as toggle bit if you're not interested in mode 6B (if TR=1 we are talking about mode 6B officially, which is meant to be used by pointing devices).

Customer Code Field

Following the Header field we get a field called Customer Code field. This field will hold one or two bytes, depending on the requirements of the customer. Philips is the only one who can assign customer codes, so officially it is not allowed to just pick one at random (but who would know about it if you did).

If your application requires short messages, for speed or low power consumption, you may want to acquire a 7 bit customer code (in the range from 0 to 127). Otherwise you'd better get a 14 bit customer code because I expect those to be cheeper (code 32768 to 65535).

If the first bit following the Header field is a "0" we know it's a one byte customer code, or SCC. This first bit is also part of the one byte, thus 7 bits remain for the SCC itself. As always in RC-6 the msb comes first.
If the first bit following the Header field is a "1" we know it's a 2 two byte customer code, or LCC. Therefore this mode allows up to 15 bits for the customer code.

Information Field

This field carries the actual message you want to get across in mode 6A. The definition of this information field is up to the OEM customer.

In case a Short Customer Code is used the Information field may hold up to 24 bits of data. With Long Customer Codes up to 128 bits may be used in the Information field.

The OEM customer may decide whether the number of bits in the Information field is fixed or variable. In case the number of bits is fixed the number of expected bits is hard coded in the receiver software.
If the number of bits is variable there must be a way in which to tell the receiver how many bits are to be expected. However it's up to the OEM customer how to implement this.

Signal Free Time

The Signal Free time is a period in which no data may be transmitted (by any device). It is important for the receiver to detect the signal free time at the end of a message to avoid incorrect reception.
The signal free time is set to 6t, which is 2.666ms.