I've collected and combined some information found on the internet about the Sony SIRC protocol.
I must admit that I have never worked with this particular protocol, so I could not verify that all information is valid for all situations.
It appears that 3 versions of the protocol exist: 12-bit, 15-bit and 20-bit versions. All versions have 7 bits reserved for the command. The 12-bit version has 5 bits reserved for the address, while the 15-bit version has 8 bits reserved for the address. Oddly enough the 20-bit version has a 7-bit command and a 5-bit address length. The extra 8 bits, which follow the address, are called the extended bits. I can only assume that the extended bits extend either the address range or the command range. But when would you ever need more than 128 keys anyway.
Please note that a lot of confusing documentation about the SIRC protocol exists on the internet.
At first I contributed to the confusion by assuming the correctness of the source documents I found myself, until someone with some SIRC experience informed me about my errors.
I double checked his story with a universal remote control and a digital storage oscilloscope, and found that the bit and word order I documented were indeed wrong.
The protocol information on this page is according to my own measurements and should be correct now.
The SIRC protocol uses pulse width encoding of the bits. The pulse representing a logical "1" is a 1.2ms long burst of the 40kHz carrier, while the burst width for a logical "0" is 0.6ms long. All bursts are separated by a 0.6ms long space interval. The recommended carrier duty-cycle is 1/4 or 1/3.
The picture above shows a typical pulse train of the 12-bit SIRC protocol. With this protocol the LSB is transmitted first. The start burst is always 2.4ms wide, followed by a standard space of 0.6ms. Apart from signaling the start of a SIRC message this start burst is also used to adjust the gain of the IR receiver. Then the 7-bit Command is transmitted, followed by the 5-bit Device address. In this case Address 1 and Command 19 is transmitted.
Commands are repeated every 45ms(measured from start to start) for as long as the key on the remote control is held down.
After 12 or 15 bits the receiver must wait at least 10ms to make sure that no more pulses follow. That way the receiver can decide which one of the 3 possible SIRC protocols it is receiving.
The table below lists some messages sent by Sony remote controls in the 12-bit protocol. This list is by no means meant to be complete, as the assignment of functions is probably quite dynamic.
|16||Cassette Deck / Tuner|
|0||Digit key 0|
|1||Digit key 1|
|2||Digit key 2|
|3||Digit key 3|
|4||Digit key 4|
|5||Digit key 5|
|6||Digit key 6|
|7||Digit key 7|
|8||Digit key 8|
|9||Digit key 9|