Philips RC-5 Protocol
The RC-5 code from Philips is possibly the most used protocol by hobbyists, probably because of the wide availability of cheap remote controls.
The protocol is well defined for different device types ensuring compatibility with your whole entertainment system.
Lately Philips started using a new protocol called RC-6 which has more features.
- 5 bit address and 6 bit command length (7 command bits for RC5X)
- Bi-phase coding (aka Manchester coding)
- Carrier frequency of 36kHz
- Constant bit time of 1.778ms (64 cycles of 36 kHz)
- Manufacturer Philips
The protocol uses bi-phase modulation (or so-called Manchester coding) of a 36kHz IR carrier frequency.
All bits are of equal length of 1.778ms in this protocol, with half of the bit time filled with a burst of the 36kHz carrier and the other half being idle.
A logical zero is represented by a burst in the first half of the bit time.
A logical one is represented by a burst in the second half of the bit time.
The pulse/pause ratio of the 36kHz carrier frequency is 1/3 or 1/4 which reduces power consumption.
The drawing below shows a typical pulse train of an RC-5 message.
This example transmits command $35 to address $05.
The first two pulses are the start pulses, and are both logical "1".
Please note that half a bit time is elapsed before the receiver will notice the real start of the message.
Extended RC-5 uses only one start bit.
Bit S2 is transformed to command bit 6, providing for a total of 7 command bits.
The value of S2 must be inverted to get the 7th command bit though!
The 3rd bit is a toggle bit.
This bit is inverted every time a key is released and pressed again.
This way the receiver can distinguish between a key that remains down, or is pressed repeatedly.
The next 5 bits represent the IR device address, which is sent with MSB first.
The address is followed by a 6 bit command, again sent with MSB first.
A message consists of a total of 14 bits, which adds up to a total duration of 25 ms.
Sometimes a message may appear to be shorter because the first half of the start bit S1 remains idle.
And if the last bit of the message is a logic "0" the last half bit of the message is idle too.
As long as a key remains down the message will be repeated every 114ms.
The toggle bit will retain the same logical level during all of these repeated messages.
It is up to the receiver software to interpret this auto repeat feature.
Philips has created a beautiful list of "standardized" commands.
This ensures the compatibility between devices from the same brand.
A very nice feature, often to be missed with other brands, is the fact that most devices are available twice in the table allowing you to have 2 VCRs stacked on top of each other without having trouble addressing only one of them with your remote control.
I can only show a limited list of standard commands, for this list is about all I know right now.
|$00 - 0||TV1|
|$01 - 1||TV2|
|$02 - 2||Teletext|
|$03 - 3||Video|
|$04 - 4||LV1|
|$05 - 5||VCR1|
|$06 - 6||VCR2|
|$07 - 7||Experimental|
|$08 - 8||Sat1|
|$09 - 9||Camera|
|$0A - 10||Sat2|
|$0B - 11|| |
|$0C - 12||CDV|
|$0D - 13||Camcorder|
|$0E - 14|| |
|$0F - 15|| |
|$10 - 16||Pre-amp|
|$11 - 17||Tuner|
|$12 - 18||Recorder1|
|$13 - 19||Pre-amp|
|$14 - 20||CD Player|
|$15 - 21||Phono|
|$16 - 22||SatA|
|$17 - 23||Recorder2|
|$18 - 24|| |
|$19 - 25|| |
|$1A - 26||CDR|
|$1B - 27|| |
|$1C - 28|| |
|$1D - 29||Lighting|
|$1E - 30||Lighting|
|$1F - 31||Phone||
|TV Command||VCR Command|
|$00 - 0||0||0|
|$01 - 1||1||1|
|$02 - 2||2||2|
|$03 - 3||3||3|
|$04 - 4||4||4|
|$05 - 5||5||5|
|$06 - 6||6||6|
|$07 - 7||7||7|
|$08 - 8||8||8|
|$09 - 9||9||9|
|$0A - 10||-/--||-/--|
|$0C - 12||Standby||Standby|
|$0D - 13||Mute|| |
|$10 - 16||Volume +|| |
|$11 - 17||Volume -|| |
|$12 - 18||Brightness +|| |
|$13 - 19||Brightness -|| |
|$20 - 32||Program +||Program +|
|$21 - 33||Program -||Program -|
|$32 - 50|| ||Fast Rewind|
|$34 - 52|| ||Fast Forward|
|$35 - 53|| ||Play|
|$36 - 54|| ||Stop|
|$37 - 55|| ||Recording|