PAGE 1 of 2 - The Philips RC6 IR remote control protocol specifications
Let's start with the bad news first: It seems that Philips -along with other companies- don't want or don't care to share the specifications of the IR protocol that each one uses, which rises up some questions... Unfortunately, no matter how hard i searched, no matter how many application notes and chip datasheets i opened, no matter how many forums and site administrators i contacted, i was unable to find official papers regarding the RC6 protocol. Therefore, the info that will follow comes mainly from reverse-engineering and information that i gathered around the net from other people.
Now the good news: Don't worry, this page has enough info to understand the commercial RC6 protocol and encode/decode your own projects...
If you don't know how the RC5 protocol works, i strongly suggest that you read first the operation of the RC5 protocol before you go on with the RC6.
The RC6 Protocol specifications
Searching around the net i discovered that there are several types of RC6 protocols, with differences in the mode, address and command lengths. But i also discovered that the most common RC6 protocol is the one that has two start bits, three field bits, one long toggle bit and 8+8 address and command bits. Actually, the two Phillips remote controls that i tested had precisely this configuration. Here are the specifications of this RC6 protocol:
Modulation type: Manchester code (bi-phase) - HIGH to LOW for ACE (1), LOW to HIGH for ZERO (0)
Carrier frequency: 36 KHz
Start bits: 1+1
Field bits: 3
Toggle bits: 1
Address bits: 8
Command bits: 8
Bit period (transmission clock): 895 uSec
Total signal duration: 23.27 mSec
Signal repetition interval: 83 mSec
Let's examine these bits one by one:
The Start bit (1+1)
The start bit is the first bit being transmitted by the transmitter. The RC6 protocol has 2 starting bits, one long and one short. The first bit has 4 times the length of a normal bit, that is 2.685 mSec ON time and 895 OFF time. After this long pulse, another start bit follows with normal period length. This bit is always 1. Unlike the RC5 protocol, the RC6 protocol defines bit 1 as a transition from HIGH to LOW
The Field bits (3)
The next 3 bits are probably identical to the field bit of the RC5 protocol. There are 3 bits which appear to be always 0 (LOW to HIGH transition). I could not find more details about these bits. I checked several remote controls and these bits were always 0.
The Toggle bit (1)
RC5 protocol, the RC6 protocol has a toggle bit to separate a long key-press from a double-key press. It works exactly the same way as i explain in the RC5 theory page, but the length of the toggle bit of the RC6 is double the length of a normal bit. So, if the toggle bit is 0 (LOW to HIGH transition), the LOW duration will be 895 uSec and the HIGH duration will be another 895 uSec, thus making the toggle bit 1.79 mSec long.
The Address bits (8)
The next 8 bits belong to the address of the signal. These bits are to determine to which device the signal addresses to. This way, the TV remote control will not interfere with the DVD player. I could not find a complete list for these bits. The DVD player and the TV sets correspond to the same address list of the RC5 protocol as described in wikipedia, so i can guess that the same address list applies to this protocol (???)
The Command bits (6)
The last 8 bits are for the command. This command can be anything like volume up, volume down, switch channel, exit DVD disk etc. There is no published list for the RC6 protocol commands, but i suppose that the basic commands are similar to the RC5 protocol, as described in wikipedia (???).
An RC6 transmission example
Let's see a typical transition with the RC6 protocol...
How to identify the aces and the zeros
Similarly to the RC5 protocol, there are two ways to identify zeros and aces. The first way is to identify the polarity switch in the middle of the bit transmission. In the previous example notice that between the red thin vertical lines (which separates the transmitted bits), right in the middle, the bit always changes polarity - It turns either from HIGH to LOW or from LOW to HIGH. This is the characteristic of the Manchester code modulation. If this change is LOW to HIGH, then the bit is a ZERO, otherwise the bit is an ACE.
The other method is to see how the bit begins or ends. If the beginning of the bit is LOW, then this bit is 0 otherwise it is 1. The same but inverted stands for the bit-end. If the bit ends LOW then this bit is 1, otherwise it is 0.
The Toggle bit - How it looks like?
Just like the RC5 protocol, the RC6 protocol has a toggle bit for the receiver to identify a long-key press (like when we press the volume up continuously) from a double-click (like when we press the button 1 twice to switch to channel 11). The toggle bit changes polarity every time a key i released and another key (or the same key) is pressed. Here is a typical example of how the toggle bit changes.
The two sequential transmission bits are sent from a remote control after pressing the button "1" twice. The address and code sent are exactly the same. The toggle bit is changed, because the button was released and pressed back again.
Continue to the next page to see a real-life example - i monitored the output of an RC6 compatible remote control with my oscilloscope.